《4 关系模型基本原理ppt课件数据库原理与应用 .pptx》由会员分享,可在线阅读,更多相关《4 关系模型基本原理ppt课件数据库原理与应用 .pptx(85页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库原理与应用数据库原理与应用4.1关系模型基本概念数据库原理与设计数据库原理与设计2数据库原理与应用数据库原理与应用(1 1)关系关系(RelationRelation):是用于描述数据的一张):是用于描述数据的一张二维表二维表,组成,组成表的行称为表的行称为元组元组,组成表的列称为,组成表的列称为属性属性。4.1.1 4.1.1 基本术语基本术语(2 2)域()域(DomainDomain):指属性的取值范围。):指属性的取值范围。(3 3)超键()超键(Super KeySuper Key):能唯一的标识关系中每一个元组的):能唯一的标识关系中每一个元组的属性或属性集。属性或属性集。(
2、4 4)候选键候选键(Candidate KeyCandidate Key):也称为候选码。如果一个属):也称为候选码。如果一个属性集能唯一的标识一个元组,且又性集能唯一的标识一个元组,且又不含有多余的属性不含有多余的属性,则这个,则这个属性集称为关系的候选键。属性集称为关系的候选键。数据库原理与应用数据库原理与应用(5 5)主键主键(Priamary KeyPriamary Key,PKPK):也称为主码。一个唯一识):也称为主码。一个唯一识别关系中元组的最小属性集合。别关系中元组的最小属性集合。可以从关系的候选键中,指定其中一个作为关系的主键。可以从关系的候选键中,指定其中一个作为关系的主
3、键。一个关系最多只能指定一个主键。一个关系最多只能指定一个主键。要求作为主键的列不允许取要求作为主键的列不允许取NULLNULL值。值。(6 6)全码()全码(ALL-keyALL-key):关系中所有属性的组合是该关系的一):关系中所有属性的组合是该关系的一个候选码,则该候选码称为全码。个候选码,则该候选码称为全码。(7 7)外键外键(Foreign KeyForeign Key,FKFK):关系):关系R R中的某个属性中的某个属性k k是另一是另一个关系个关系S S中的主键,则称该属性中的主键,则称该属性k k是关系是关系R R的外键。通过外键可以的外键。通过外键可以建立两个关系间的联系
4、。建立两个关系间的联系。数据库原理与应用数据库原理与应用(1 1)关系中元组的位置具有顺序无关性,即元组的顺序可以任)关系中元组的位置具有顺序无关性,即元组的顺序可以任意交换。意交换。4.1.2 4.1.2 关系的特征关系的特征(2 2)同一属性的数据具有同质性,即每一列中的分量是同一类)同一属性的数据具有同质性,即每一列中的分量是同一类型的数据,来自同一个域。型的数据,来自同一个域。(3 3)同一关系的属性名具有不可重复性,即同一关系中不同属)同一关系的属性名具有不可重复性,即同一关系中不同属性的数据可出自同一个域,但不同的属性要给予不同的属性名。性的数据可出自同一个域,但不同的属性要给予不
5、同的属性名。(4 4)各列的顺序在理论上是无序的,即列的次序可以任意互换,)各列的顺序在理论上是无序的,即列的次序可以任意互换,但使用时按习惯考虑列的顺序。但使用时按习惯考虑列的顺序。(5 5)关系中任意两个元组不能完全相同,即任意两个元组的侯)关系中任意两个元组不能完全相同,即任意两个元组的侯选键不能相同。选键不能相同。数据库原理与应用数据库原理与应用(6 6)关系中每个分量必须取原子值,即每一个分量都必须是不)关系中每个分量必须取原子值,即每一个分量都必须是不可分的数据项。可分的数据项。s_idf_idf_namef_price101a1apple5.2b1blackberry10.210
6、2bs1orange11.2105bs2melon8.2不是原子不是原子值4.2数据库完整性数据库原理与设计数据库原理与设计7数据库原理与应用数据库原理与应用 数据库完整性是指数据库中数据在逻辑上的一致性、正确性、数据库完整性是指数据库中数据在逻辑上的一致性、正确性、有效性和相容性。有效性和相容性。什么是数据库完整性?什么是数据库完整性?为了维护数据库的完整性,为了维护数据库的完整性,DBMSDBMS必须能够:必须能够:(1 1)提供定义完整性约束条件的机制)提供定义完整性约束条件的机制(2 2)提供完整性检查的方法)提供完整性检查的方法(3 3)违约处理)违约处理数据库原理与应用数据库原理与
7、应用学学 号号姓姓 名名性性 别家庭住址家庭住址1001张三男北京市1002李四女西安市1001张三男北京市学学 生生关系中重复行会带来的危害?关系中重复行会带来的危害?如何避免在关系中输入重复如何避免在关系中输入重复行行,确保数据的唯一性?确保数据的唯一性?数据冗余数据冗余数据的不一致数据的不一致设置置实体完整性体完整性4.2.1 4.2.1 三类完整性规则三类完整性规则数据库原理与应用数据库原理与应用学学 号号姓姓 名名性性 别家庭住址家庭住址1001张三男北京市1002李四女西安市学学 生生如何确保选课关系中的学号应取学生关系中如何确保选课关系中的学号应取学生关系中学号的值?学号的值?设
8、置置参照完整性参照完整性选课选课学学 号号课号号成成绩1001C01951002C0190数据库原理与应用数据库原理与应用如何约束成绩取值在如何约束成绩取值在0-1000-100之间?之间?设置置用用户定定义完整完整性性选课选课学学 号号课号号成成绩1001C01951002C0190数据库原理与应用数据库原理与应用水果订单明细水果订单明细(orderitems)1.1.实体完整性实体完整性实现:实现:设置设置主键主键约束(约束(Primary key)。)。要求:要求:主键值主键值唯一唯一,且,且各个属性都各个属性都不能为空值不能为空值。数据库原理与应用数据库原理与应用水果表(水果表(fru
9、its)2.参照完整性参照完整性实现:实现:设置设置外键外键约束(约束(Foreign key)。)。要求:要求:1)1)外外键或者键或者取空值取空值,或者等于,或者等于被参照关系被参照关系中的中的 主键主键的某个的某个值值。2)被参照关系的列必须设置为主键被参照关系的列必须设置为主键供应商表(供应商表(suppliers)数据库原理与应用数据库原理与应用3.用户定义完整性用户定义完整性实现:实现:属性的取值应当满足用户定义的约束条件。属性的取值应当满足用户定义的约束条件。设置检查约束(设置检查约束(Check)。)。水果表(水果表(fruits)数据库原理与应用数据库原理与应用4.2.4.2
10、.2 2 MySQL MySQL约束控制约束控制1.非空(非空(NOT NULL)约束约束字段名字段名 数据类型数据类型 NOT NULL|NULL【说明】【说明】(1 1)字段默认状态为允许取空值,也可以通过)字段默认状态为允许取空值,也可以通过NULLNULL关键字关键字显式的指明。显式的指明。(2 2)使用了非空约束的字段,如果用户在添加数据时没有)使用了非空约束的字段,如果用户在添加数据时没有给定值,数据库管理系统将会报错。给定值,数据库管理系统将会报错。数据库原理与应用数据库原理与应用【例【例4-2】建立非空约束示例。建立非空约束示例。CREATE TABLE fruits(f_id
11、 CHAR(10)NOT NULL,s_id INT NOT NULL,f_name CHAR(255)NULL,f_price DECIMAL(8,2);DESC fruits;数据库原理与应用数据库原理与应用2主键(主键(PRIMARY KEY)约束)约束作为主键的字段必须满足两个条件:作为主键的字段必须满足两个条件:(1)值唯一;)值唯一;(2)不能为空值。)不能为空值。主键约束分为列级和表级两种定义方式。主键约束分为列级和表级两种定义方式。(1)列级针对表中的一列,)列级针对表中的一列,(2)表级针对同一表中的一列或多列。)表级针对同一表中的一列或多列。数据库原理与应用数据库原理与应用
12、【例【例4-3】建立主键约束示例。建立主键约束示例。CREATE TABLE fruits(f_id CHAR(10)NOT NULL PRIMARY KEY,s_id INT NOT NULL,f_name CHAR(255)NULL,f_price DECIMAL(8,2);(1)列级列级主键约束主键约束数据库原理与应用数据库原理与应用(2)表级表级PRIMARY KEY约束约束CREATE TABLE fruits(f_id CHAR(10)NOT NULL,s_id INT NOT NULL,f_name CHAR(255)NOT NULL,f_price DECIMAL(8,2),P
13、RIMARY KEY(s_id,f_name);CREATE TABLE fruits(f_id CHAR(10)NOT NULL,s_id INT NOT NULL PRIMARY KEY,f_name CHAR(255)NOT NULL PRIMARY KEY,f_price DECIMAL(8,2);这个创建语句是否正确?数据库原理与应用数据库原理与应用【例【例4-4】修改主键约束示例。修改主键约束示例。ALTER TABLE fruits DROP PRIMARY KEY;(1)删除主键约束)删除主键约束(2)为已有表添加主键约束)为已有表添加主键约束ALTER TABLE fruit
14、s ADD PRIMARY KEY(f_id);数据库原理与应用数据库原理与应用3唯一(唯一(UNIQUE)约束)约束要求作为候选键的字段满足要求作为候选键的字段满足2个条件:个条件:(1)值唯一;)值唯一;(2)可有一个且仅有一个空值。)可有一个且仅有一个空值。唯一约束既可以在列级定义,也可以在表级定义。唯一约束既可以在列级定义,也可以在表级定义。数据库原理与应用数据库原理与应用【例【例4-5】唯一约束示例。唯一约束示例。CREATE TABLE suppliers(s_id int NOT NULL PRIMARY KEY,s_name char(50)NOT NULL,s_city ch
15、ar(50)NULL,s_zip char(10)NULL,s_call CHAR(50)NOT NULL UNIQUE);(1)创建)创建suppliers表,为表,为s_call字段定义唯一约束。字段定义唯一约束。数据库原理与应用数据库原理与应用 一个表中可以创建多个唯一约束,为了便于管理,可以采一个表中可以创建多个唯一约束,为了便于管理,可以采用表级方式,通过用表级方式,通过CONSTRAINT关键字为每个唯一约束指关键字为每个唯一约束指定名称。定名称。CREATE TABLE suppliers(s_id int NOT NULL PRIMARY KEY,s_name char(50)
16、NOT NULL,s_city char(50)NULL,s_zip char(10)NULL,s_call CHAR(50),CONSTRAINT call_UQ UNIQUE(s_call);数据库原理与应用数据库原理与应用ALTER TABLE suppliers DROP INDEX call_UQ;(2)删除唯一约束)删除唯一约束call_UQ。(3)为已有表)为已有表suppliers根据根据s_call字段创建唯一约束,约字段创建唯一约束,约束名为束名为call_UQ。ALTER TABLE suppliers ADD CONSTRAINT call_UQ UNIQUE(s_ca
17、ll);数据库原理与应用数据库原理与应用【例【例4-6】检查约束示例。检查约束示例。CREATE TABLE employee(eno DECIMAL(2)PRIMARY KEY,ename VARCHAR(8),age DECIMAL(3)CONSTRAINT age_CK CHECK(age20 AND age20 AND age60 AND address LIKE 北京市%);数据库原理与应用数据库原理与应用5外键(外键(FOREIGN KEY)约束)约束以供应商表和水果表为例:以供应商表和水果表为例:供应商表(供应商编号,名称,所在城市,邮编,电话)供应商表(供应商编号,名称,所在城
18、市,邮编,电话)水果表(水果编号,名称,单价,供应商编号)水果表(水果编号,名称,单价,供应商编号)主(父)表主(父)表从(子)表从(子)表主主键外外键数据库原理与应用数据库原理与应用对对主表主表主键进行主键进行INSERT、DELETE、UPDATE操作,操作,会对从表有什么影响呢?会对从表有什么影响呢?(1)插入()插入(INSERT)主表中主键值的插入,主表中主键值的插入,不会影响不会影响从表中的外键值。从表中的外键值。(2)修改()修改(UPDATE)如果从表中的外键值与主表中的主键值一样,则对主表中主如果从表中的外键值与主表中的主键值一样,则对主表中主键值的修改将键值的修改将影响影响
19、到从表中的外键值。到从表中的外键值。(3)删除()删除(DELETE)主表中主键值的删除,可能会对从表中的外键值产生主表中主键值的删除,可能会对从表中的外键值产生影响影响,除非主表中的主键值没有在从表中的外键值中出现。除非主表中的主键值没有在从表中的外键值中出现。数据库原理与应用数据库原理与应用对对从表从表外键进行外键进行INSERT、DELETE、UPDATE操作,操作,又会对主表有什么影响呢?又会对主表有什么影响呢?(1)插入()插入(INSERT)插入从表的外键值时,要求插入的外键值应插入从表的外键值时,要求插入的外键值应“参照参照”主表主表中的主键值。中的主键值。(2)修改()修改(U
20、PDATE)修改从表的外修改从表的外键值时键值时,要求修改的外,要求修改的外键值键值需需“参照参照”主表中的主表中的主主键值键值。(3)删除()删除(DELETE)从表中元组的删除从表中元组的删除不不需要需要参照参照主表中的主键值。主表中的主键值。数据库原理与应用数据库原理与应用定义外键约束表级语法格式定义外键约束表级语法格式:FROEIGN KEY(字段字段,字段字段)REFERENCES 主表主表(字段字段,字段字段)ON DELETE CASCADE|SET NULL|NO ACTION ON UPDATE CASCADE|SET NULL|NO ACTION(1)CASCADE:主表:
21、主表记录记录的的删删除或者修改操作,会自除或者修改操作,会自动删动删除或除或修改子表中与之修改子表中与之对应对应的的记录记录。(2)SET NULL:主表:主表记录记录的的删删除或者修改操作,会将子表中与除或者修改操作,会将子表中与之之对应记录对应记录的外健的外健值值自自动设动设置置为为NULL。(3)NO ACTION:主表:主表记录记录的的删删除或者修改操作,如果子表中除或者修改操作,如果子表中存在与之存在与之对应对应的的记录记录,则删则删除或修改操作将被禁止除或修改操作将被禁止执执行。行。数据库原理与应用数据库原理与应用【例【例4-7】外键约束示例。外键约束示例。CREATE TABLE
22、 suppliers(s_id int NOT NULL PRIMARY KEY,s_name char(50)NOT NULL,s_city char(50)NULL,s_zip char(10)NULL,s_call CHAR(50)NOT NULL);(1)建立)建立fruits和和suppliers表,实现两表间的外键约束,并指定表,实现两表间的外键约束,并指定为级联更新。为级联更新。数据库原理与应用数据库原理与应用CREATE TABLE fruits(f_id char(10)NOT NULL PRIMARY KEY,s_id INT NOT NULL,f_name char(25
23、5)NOT NULL,f_price decimal(8,2)NOT NULL,CONSTRAINT sid_FK FOREIGN KEY(s_id)REFERENCES suppliers(s_id)ON UPDATE CASCADE);CREATE TABLE fruits(f_id char(10)NOT NULL PRIMARY KEY,s_id INT REFERENCES suppliers(s_id)ON UPDATE CASCADE,f_name char(255)NOT NULL,f_price decimal(8,2)NOT NULL);表表级列列级数据库原理与应用数据库原
24、理与应用(2)删除)删除fruits表上的表上的sid_FK约束。约束。ALTER TABLE fruits DROP CONSTRAINT sid_FK;(3)为)为fruits表设置与表设置与suppliers表的外键约束,并指定为表的外键约束,并指定为级联删除和级联更新。级联删除和级联更新。ALTER TABLE fruits ADD CONSTRAINT sid_FK FOREIGN KEY(s_id)REFERENCES suppliers(s_id)ON DELETE CASCADE ON UPDATE CASCADE;数据库原理与应用数据库原理与应用6.自增(自增(AUTO_IN
25、CREMENT)约束)约束 默认情况下,在默认情况下,在MySQL中中AUTO_INCREMENT的初始的初始值是值是1,每新增一条记录,字段值自动加,每新增一条记录,字段值自动加1。一个表只能有一个字段使用一个表只能有一个字段使用AUTO_INCREMENT约束,约束,且该字段必须为主键的一部分。且该字段必须为主键的一部分。AUTO_INCREMENT约束的字段可以是任何整数类型,约束的字段可以是任何整数类型,如如TINYINT、SMALLINT、INT、BIGINT等。等。数据库原理与应用数据库原理与应用【例【例4-8】自增约束示例。自增约束示例。CREATE TABLE supplier
26、s(s_id int NOT NULL AUTO_INCREMENT PRIMARY KEY,s_name char(50)NOT NULL,s_city char(50)NULL);建立建立suppliers表,为表,为s_id字段定义自动增长约束。字段定义自动增长约束。INSERT INTO suppliers(s_name,s_city)VALUES(FastFruit Inc.,Tianjin),(LT Supplies,Chongqing),(ACME,Shanghai);数据库原理与应用数据库原理与应用【例【例4-9】默认值约束示例。默认值约束示例。CREATE TABLE ord
27、ers(o_num INT NOT NULL AUTO_INCREMENT PRIMARY KEY,o_date DATETIME DEFAULT(CURDATE(),c_id INT);创建创建orders表,为表,为o_date字段定义默认值约束,默认值为字段定义默认值约束,默认值为当前系统日期。当前系统日期。INSERT INTO orders(o_num,c_id)VALUES(30001,10001),(30002,10003);7.默认值(默认值(DEFAULT)约束)约束数据库原理与应用数据库原理与应用总总 结:结:数数据据库库完完整整性性实体完整性实体完整性参照完整性参照完整性
28、用户定义完整性用户定义完整性主键约束(主键约束(primary key)唯一约束(唯一约束(unique)外键约束(外键约束(foreign key)检查约束(检查约束(check)4.3关系代数数据库原理与应用数据库原理与应用38数据库原理与应用数据库原理与应用 关系代数中的操作可以分为以下两类。关系代数中的操作可以分为以下两类。(1)传统传统的的集合运算集合运算,包括,包括并、交、差并、交、差。(2)专门专门的的关系运算关系运算,包括对关系进行垂直分割(,包括对关系进行垂直分割(投影投影)、)、水平分割(水平分割(选择选择)、关系的联合()、关系的联合(连接连接、自然连接)等。、自然连接)
29、等。一个或两个关系经过关系运算后的结果仍然是一个关系。一个或两个关系经过关系运算后的结果仍然是一个关系。数据库原理与应用数据库原理与应用4.3.1 4.3.1 关系代数的基本操作关系代数的基本操作1并(并(Union)关系关系R和和S具有相同的属性个数具有相同的属性个数n,且相应的属性取自同一个域。,且相应的属性取自同一个域。RS=t|tRtS【说明】【说明】(1)t为元组变量;为元组变量;(2)逻辑运算符包括逻辑与)逻辑运算符包括逻辑与、逻辑或、逻辑或、逻辑非、逻辑非 关系的并操作对应于关系关系的并操作对应于关系“插入插入”记录的操作,俗称为记录的操作,俗称为“+”操作。操作。数据库原理与应
30、用数据库原理与应用【例【例4-10】设有关系设有关系R和和S如下,计算如下,计算RS。数据库原理与应用数据库原理与应用2差(差(Difference)关系关系R和和S具有相同的属性个数具有相同的属性个数n,且相应的属性取自同一个域。,且相应的属性取自同一个域。R-S=t|tRt S 关系的差操作对应于关系的关系的差操作对应于关系的“删除删除”记录的操作,俗称为记录的操作,俗称为“”操作。操作。数据库原理与应用数据库原理与应用例如:例如:设有关系设有关系R和和S如下,计算如下,计算R-S。数据库原理与应用数据库原理与应用3笛卡儿集(笛卡儿集(Cartesian Product)设关系设关系R和和
31、S的属性个数(即列数)分别为的属性个数(即列数)分别为r和和s,R和和S的笛卡儿的笛卡儿积是一个积是一个(r+s)列)列的元组集合,每个元组的前的元组集合,每个元组的前r列来自列来自R的一个元的一个元组,后组,后s列来自列来自S的一个元组,若的一个元组,若R有有k1个元组,个元组,S有有k2个元组,则个元组,则关系关系R和关系和关系S的笛卡尔积有的笛卡尔积有k1k2个个元组。元组。R S=关系的笛卡儿积操作对应于两个关系记录关系的笛卡儿积操作对应于两个关系记录横向合并横向合并的操作,俗称的操作,俗称“”操作。操作。数据库原理与应用数据库原理与应用设有关系设有关系R和和S如下,计算如下,计算RS
32、。数据库原理与应用数据库原理与应用4投影(投影(Projection)关系关系R上的投影是从上的投影是从R中选择出若干中选择出若干属性列属性列组成新的关系。组成新的关系。A(R)=tA|tR 其中,其中,A为为R中的属性列中的属性列 投影操作是投影操作是对对一个关系一个关系进进行垂直分割,消去某些列,并重新安排行垂直分割,消去某些列,并重新安排列的列的顺顺序。在序。在MySQL中用中用SELECT短短语实现语实现。数据库原理与应用数据库原理与应用例如:例如:设有关系设有关系R,投影投影R关系的关系的f_price列和列和f_id列。列。f_price,f_id(R)或或 3,1(R)数据库原理
33、与应用数据库原理与应用5选择(选择(Selection)关系关系R上的选择操作是从上的选择操作是从R中选择符合条件的中选择符合条件的元组元组。F(R)=t|tRF(t)=true 选择选择操作是操作是对对一个关系一个关系进进行水平分割,消去某些行。在行水平分割,消去某些行。在MySQL中用中用WHERE短短语实现语实现。F表示表示选择选择条件,是一个条件,是一个逻辑逻辑表达式。表达式。(1)运算)运算对对象。可以是常数,或属性名或列的序号。象。可以是常数,或属性名或列的序号。如如310(R)(2)运算符。比)运算符。比较较运算符(运算符(,=,也称,也称为为符)、符)、逻辑逻辑运算符(运算符(
34、逻辑逻辑与与,逻辑逻辑或或,逻辑逻辑非非)。)。数据库原理与应用数据库原理与应用设有关系设有关系R,计算计算f_price10(R)。f_price10(R)数据库原理与应用数据库原理与应用4.3.2 4.3.2 关系代数的关系代数的4 4个组合操作个组合操作1交(交(Intersection)关系关系R和和S具有相同的属性个数具有相同的属性个数n,且相应的属性取自同一个域。,且相应的属性取自同一个域。RS=t|tRtS 关系的交可以用差来表示,即关系的交可以用差来表示,即RS=R-R-S。关系的交操作关系的交操作对应对应于于寻寻找两关系共有找两关系共有记录记录的操作,是一种关系的操作,是一种
35、关系“查询查询”操作。操作。数据库原理与应用数据库原理与应用设有关系设有关系R和和S如下,计算如下,计算RS。数据库原理与应用数据库原理与应用2连接(连接(Join)从两个关系的笛卡儿积中选取属性值满足某一从两个关系的笛卡儿积中选取属性值满足某一操作的元组。操作的元组。R S=AB(RS)AB例:例:计算计算:R3=CC#CNAMETEACHERk1C语言王华k3编译原理李红SCS#C#GRADE1k1832k389R3C.C#CNAMETEACHERES#SC.C#GRADEk1C语言王华1k183k3编译原理李红2k389数据库原理与应用数据库原理与应用等值等值连接连接例:例:计算计算:R
36、4=CC#CNAMETEACHERk1C语言王华k3编译原理李红SCS#C#GRADE1k1832k389如果如果是等号是等号“”,该连接操作称为,该连接操作称为“等值连接等值连接”。R S=A=B(RS)A=B1=5R4C.C#CNAMETEACHERES#SC.C#GRADEk1C语言王华1k183k3编译原理李红2k389数据库原理与应用数据库原理与应用自然连接自然连接 例:例:计算计算:R5=R5C#CNAMETEACHERES#GRADEk1C语言王华183k3编译原理李红289CC#CNAMETEACHERk1C语言王华k3编译原理李红SCS#C#GRADE1k1832k389 自
37、然连接自然连接是一种特殊的等值连接,它要求两个关系中进行比较是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是的分量必须是相同的属性组相同的属性组,并且要在结果中,并且要在结果中去掉重复的属性去掉重复的属性。数据库原理与应用数据库原理与应用 (1)分量)分量 每个元组的各属性值分别为一个分量。每个元组的各属性值分别为一个分量。3除(除(Division)CC#CNAMET#k1C语言王华k3编译原理李红第一行元组的分量有三个,分别是:第一行元组的分量有三个,分别是:k1、C语言、王华。语言、王华。数据库原理与应用数据库原理与应用 (2)象集)象集 x在在关关系系R中中的的象象集集为为Z
38、x,它它表表示示关关系系R中中X分分量量等等于于x的的元元组组集集合在属性集合在属性集Z上的投影。上的投影。CC#CNAMET#k1C语言王华k3编译原理李红k1数据库王华例如例如,取,取T#为为“王华王华”的元组在的元组在CNAME列上的象集。列上的象集。CNAMEC语言数据库CNAMET#=王华王华象集的实质就是一次选择运算和一次投影运算。象集的实质就是一次选择运算和一次投影运算。数据库原理与应用数据库原理与应用关系的除法运算分为如下关系的除法运算分为如下4个步骤:个步骤:(1)将将被被除除关关系系的的属属性性分分为为象象集集属属性性和和结结果果属属性性:与与除除关关系系相相同的属性属于象
39、集属性,不相同的属性属于结果属性。同的属性属于象集属性,不相同的属性属于结果属性。(2)在在除除关关系系中中,对对与与被被除除关关系系相相同同的的属属性性(象象集集属属性性)进进行行投影,得到除目标数据集。投影,得到除目标数据集。(3)将将被被除除关关系系分分组组,原原则则是是,结结果果属属性性值值一一样样的的元元组组分分为为一一组。组。(4)逐逐一一考考察察每每个个组组,如如果果它它的的象象集集属属性性值值中中包包含含除除目目标标数数据据集,则对应的结果属性值则属于该除法运行结果集。集,则对应的结果属性值则属于该除法运行结果集。3除(除(Division)数据库原理与应用数据库原理与应用 计
40、算计算R RS S的操作步骤为:的操作步骤为:(1 1)将关系)将关系R R和关系和关系S S的属性进行划分,即的属性进行划分,即R(X,Y)R(X,Y)、S(Y,Z);S(Y,Z);(2 2)若若X X的的某某个个值值x x的的像像集集Y Yx x包包含含S S关关系系中中Y Y的的所所有有元元组组,则则将将x x放放入入结果集中。结果集中。ABCa1b1c2a2b3c5a3b4c4a1b2c3a2b2c3a1b2c1BCDb1c2d1b2c1d1b2c3d2ASR SR【例【例4-11】设关系设关系R、S分别如下,求分别如下,求RS的结果。的结果。a1数据库原理与应用数据库原理与应用例如例
41、如:检索选修全部课程的学生学号:检索选修全部课程的学生学号?C#CNAMETEACHERk1C语言王华k2数据库原理李红k3编译原理李红S#C#GRADE1k1832k1882k2853k3922k389CSCS#,C#(SC)C#(C)说明:说明:除操作适合于包含除操作适合于包含“对于所对于所有的有的/全部的全部的”语句的语句的查询查询操作。操作。数据库原理与应用数据库原理与应用【例【例4-13】有如下有如下3个关系个关系,用关系代数表达式实现下列每个查用关系代数表达式实现下列每个查询语句及对应的询语句及对应的SQL查询语句。查询语句。S#SNAMEAGESEX1钱衡23男2刘丽22女3张友
42、22男CC#CNAMET#c1C语言王华c2数据库原理李红c3编译原理李红SCS#C#SCORE1c1832c2853c3922c389SCSC(1)检索学习课程号为C2课程的学生学号与成绩。S#,SCORE(C#=C2(SC)4.3.3 4.3.3 关系代数操作实例关系代数操作实例SELECT s#,score FROM SC WHERE c#=C2;数据库原理与应用数据库原理与应用S#SNAMEAGESEX1钱衡23男2刘丽22女3张友22男CC#CNAMET#c1C语言王华c2数据库原理李红c3编译原理李红SCS#C#SCORE1c1832c2853c3922c389SCSC(2)检索学
43、习课程号为C2课程的学生学号与姓名。S#,SNAME(C#=C2(S SC)SELECT s.s#,sname FROM S,SC WHERE s.s#=sc.s#AND c#=C2;数据库原理与应用数据库原理与应用S#SNAMEAGESEX1钱衡23男2刘丽22女3张友22男CC#CNAMET#c1C语言王华c2数据库原理李红c3编译原理李红SCS#C#SCORE1c1832c2853c3922c389SCSC(3)检索选修课程名为数据库原理的的学生的学号与姓名。S#,SNAME(CNAME=数据数据库原理库原理(S SC C)SELECT s.s#,sname FROM S,SC,C WH
44、ERE s.s#=sc.s#AND sc.c#=c.c#AND cname=数据库原理;数据库原理与应用数据库原理与应用S#SNAMEAGESEX1钱衡23男2刘丽22女3张友22男CC#CNAMET#c1C语言王华c2数据库原理李红c3编译原理李红SCS#C#SCORE1c1832c2853c3922c389SCSC(4)检索选修课程号为C2或C3的学生学号。S#(C#=C2 C#=C3(SC);SELECT s#FROM sc WHERE c#=C2 OR c#=C3;数据库原理与应用数据库原理与应用S#SNAMEAGESEX1钱衡23男2刘丽22女3张友22男CC#CNAMET#c1C语
45、言王华c2数据库原理李红c3编译原理李红SCS#C#SCORE1c1832c2853c3922c389SCSC(5)检索至少选修课程号为C2和C3的学生学号。1(1=4 2=C2 5=C3(SCSC)SELECT s1.s#FROM SC S1,SC S2 WHERE s1.s#=s2.s#AND s1.c#=C2 AND s2.c#=C3;S#C#SCORES#C#SCORE1c1831c1831c1832c2851c1833c3921c1832c3892c2852c389数据库原理与应用数据库原理与应用S#SNAMEAGESEX1钱衡23男2刘丽22女3张友22男CC#CNAMET#c1C
46、语言王华c2数据库原理李红c3编译原理李红SCS#C#SCORE1c1832c2853c3922c389SCSC(6)检索没有选修C2课程的学生姓名。SNAME(S)SNAME(C#=C2(S SC)SELECT sname FROM S WHERE s#NOT IN (SELECT s#FROM SC WHERE c#=C2);数据库原理与应用数据库原理与应用S#SNAMEAGESEX1钱衡23男2刘丽22女3张友22男CC#CNAMET#c1C语言王华c2数据库原理李红c3编译原理李红SCS#C#SCORE1c1832c2853c3922c389SCSC(7)检索选修了全部课程的学生姓名。
47、SNAME(S(S#,C#(SC)C#(C)SELECT sname FROM S WHERE NOT EXISTS (SELECT c#FROM C WHERE NOT EXISTS(SELECT c#FROM SC WHERE s.s#=sc.s#AND sc.c#=c.c#);数据库原理与应用数据库原理与应用(1)首首先先确确定定用用到到的的关关系系,如如果果多多个个关关系系则则进进行行自自然然连连接接,然然后执行选择和投影操作。后执行选择和投影操作。(2)当查询涉及否定含义或全部值时,当查询涉及否定含义或全部值时,则则用差或除法操作。用差或除法操作。(3)关系代数的操作表达式是不唯一的
48、。)关系代数的操作表达式是不唯一的。(4)多个关系连接时,应遵守:多个关系连接时,应遵守:尽可能早地执行选择操作;尽可能早地执行选择操作;尽可能早地执行投影操作;尽可能早地执行投影操作;把把选择和投影选择和投影后的表达式进行连接后的表达式进行连接。【总【总 结】结】4.4元组关系演算数据库原理与设计数据库原理与设计68数据库原理与应用数据库原理与应用元组关系演算是以元组为变量,其一般形式为:元组关系演算是以元组为变量,其一般形式为:t|P(t)表示满足公式P的所有元组t的集合。S#SNAMEAGESEX1钱衡23男2刘丽22女3张友22男S例例:写出元写出元组表达式组表达式表示的表示的关系关系
49、 R1=t|S(t)。(1)R(t)表示t是R关系中的一个元组。S#SNAMEAGESEX1钱衡23男2刘丽22女3张友22男R11原子公式三种形式原子公式三种形式数据库原理与应用数据库原理与应用(2)tic 或 cti 表示元组t的第i个分量与常量c满足条件。S#SNAMEAGESEX1钱衡23男2刘丽22女3张友22男S例例:写出元写出元组表达式组表达式表示的表示的关系关系 R2=t|S(t)t4=女女 S#SNAMEAGESEX2刘丽22女R2数据库原理与应用数据库原理与应用(3)ti sj 表示元组t的第i个分量与元组s的第j个分量之间满足条件。(1)如果P1和P2是公式,则P1、P1
50、P2、P1P2也为公式2公式的公式的递归递归定定义义(2)如果P是公式,那么(t)(P)和(t)(P)也是公式。(3)公式中各种运算符的优先级从高到低依次为:、和 、和。在公式外还可以加括号,以改变上述优先顺序。数据库原理与应用数据库原理与应用例例:写出下列元组演算表达式表示的关系。写出下列元组演算表达式表示的关系。R3=t|(u)(S(t)R(u)t3u1)A BC123456789RA BC123346569SA BC456789R4u1t3数据库原理与应用数据库原理与应用【例】【例】设有关系设有关系R和和S,写出下列元组演算表达式表示的关系。,写出下列元组演算表达式表示的关系。ABC1a