版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章关系数据库,在一个给点的领域中,表示所有实体及实体之间联系的关系集合构成一个关系数据库。 关系模型由关系数据结构、关系约束和关系数据操作三部分组成。,2.1 关系及关系约束2.1.1 关系,“关系”就是关系数据模型的数据结构。 关系模型是建立在集合代数的基础上的,故可从集合论角度给出关系数据结构的形式化定义。,行,关系的一般形式,关系中属性的个数n,元组的总数m,记录,字段,学生关系,1域(Domain) 属性所取值的范围称为属性的域。如:自然数、整数、字符串等都是域。 关系模型要求每个元组的每个分量必须属于某种基本类型,不允许一个值为记录结构、结构、集合、列表、数组或者能合理地分解为更
2、小分量的其他任何类型。 属性是一种多值变量。,2笛卡尔乘积(Cartesian Product) 给定一组域D1,D2,Dn,这些域中可以有相同的部分,则笛卡儿积为: D1D2Dn =(d1,d2,dn)di Di,i1,2,n. 其中每个元素(d1,d2,dn )称为一个n元组,简称元组。元组中的每一个值di称作一个分量。,例如,我们给出三个域: 导师集合D1张毅,刘德成 专业集合D2=计算机专业,通信专业 研究生集合 D3=吕景刚,王弶,李喆 则D1,D2 ,D3的笛卡尔积为: D1D2 D3 =(张毅,计算机专业,吕景刚),(张毅,计算机专业,王弶),(张毅,计算机专业,李喆),(张毅,
3、通信专业,吕景刚),(张毅,通信专业,王弶),(张毅,通信专业,李喆),(刘德成,计算机专业,吕景刚),(刘德成,计算机专业,王弶),(刘德成,计算机专业,李喆),(刘德成,通信专业,吕景刚),(刘德成,通信专业,王弶),(刘德成,通信专业,李喆),其中: (张毅,计算机专业,吕景刚),(张毅,计算机专业,王弶),(张毅,计算机科学专业,李喆)等都是元组。 张毅、计算机专业、吕景刚、王弶、李喆等都是分量。 该笛卡尔积的基数为223=12,这也就是说D1D2 D3共有223=12个元组。这12个元组的总体可列成一张二维表。,前述12个元组的总体可列成一张二维表,即D1,D2 ,D3 的笛卡尔积,
4、3. 关系 笛卡儿积的一个子集(有意义的子集)称为关系,记为 R( D1,D2,Dn ), R D1D2Dn 其中R为关系名,n为关系R的度(目),2.1.2关系的性质,关系具有6条性质(不一定全具备) (1)同一属性的数据具有同质性。 例 (2)同一关系的属性名具有不能重复性。 (3)关系中的列位置具有顺序无关性(列的次序可以任意交换)。 (4)关系具有元组无冗余性(不允许有完全相同的元组)。 (5)关系中的元组位置具有顺序无关性(行的次序可以任意交换)。 (6) 关系中每一个分量都必须是不可分的数据项。 例,Access数据库中“学生”表及结构的定义,包含多值字段或复合字段的表,2.1.3
5、主键和外键,1. 候选键 如果关系中某个属性或属性组的值唯一的决定其他所有属性的值,而其他任何真子集无此性质,则称这个属性或属性组为该关系的候选键或候选码。 若关系的候选键中只包含一个属性,则称它为单属性键;若候选码是由多个属性构成的,则称为它为多属性键。若关系中只有一个候选键,且这个候选键中包括全部属性,则这种候选码为全键。候选键中的属性称为主属性,不包含在任何候选键中的属性称为非主属性。例,Access中的“课程”关系及“选课”关系,2. 主键 一个关系至少有一个候选键,可以有多个候选键,选定其中一个作为主键,其他作为备用键。,3. 外键 设X是基本关系R的一个或一组属性,但不是关系R的主
6、键(或备用键)。如果X与基本关系S的主键相对应,则称X是R的外键,并称R为参照关系,S为被参照关系或目标关系。例如有如下关系模式: 学生(学号,姓名,性别,院系号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩) 学号,课程号属性是选修关系的外键。学生关系和课程关系均为被参照关系,选修关系为参照关系。,参照关系和被参照关系可以是同一关系 例如有如下关系模式: 学生(学号,姓名,性别,院系号,年龄,班长学号) 班长属性与本身的主键学号属性相对应,因此班长是外键。学生关系既是参照关系又是被参照关系。,2.1.4 关系模式,关系模式是关系数据结构的描述。通常可以简单记为:R(U)或
7、R(A1,A2,An).其中:R为关系名,A1,A2,An为属性名。 完整地表示为:R(U,D,Dom,F)其中:R为关系名,它是关系的形式化表示;U为组成该关系的属性集合;D为属性组U中属性所来自的域;Dom为属性向域的映象的集合;F为属性间数据的依赖关系集合。,2.1.5 关系完整性约束,1. 实体完整性规则 若属性A是基本关系R的主属性,则属性A的值不能为空值。说明:1) 实体完整性能够保证实体的唯一性。 2) 实体完整性能够保证实体的可区分性。 例如有如下关系模式: 学生(学号,姓名,性别,年龄,籍贯) 学号属性为主码,不能取空值。 选修(学号,课程号,成绩) 学号,课程号为主码,都不
8、能取空值。,2. 引用完整性规则 若属性(或属性组)F是基本关系R的外键,它与基本关系S的主键Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须取空值(F的每个属性值均为空值)或者等于S中某个元组的主键值。 例如如下关系模式: 学生(学号,姓名,性别,院系号,年龄) 课程(课程号,课程名,学分) 选修(学号,课程号,成绩),3. 用户定义的完整性规则 用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。 例如某个属性成绩的取值范围必须在0100之间。,设关系R和S具有相同的目n(即两个关系都有n个属性),且相应的
9、属性取自同一个域。 1.并(Union)运算 RS=t| t R t S. R和S并的结果仍为n目关系,其数据由属于R或属于S的元组组成。 2. 差(Difference)运算 R S = t | t R t S. R和S差运算的结果关系仍为n目关系,其数据由属于R而不属于S的所有元组组成。,2.2 关系运算2.2.1 传统的集合运算,3.交(Intersection)运算 RS = t | tR t S . 运算的结果关系仍为n目关系,其数据由既属于R同时又属于S的元组组成。交可用差来表示: RS = R(RS) . 4.笛卡儿积运算 设n目关系R和m目关系S,它们的笛卡儿积是一个(n+m)
10、目的元组集合。元组的前n列是关系R的一个元组,后m列是关系S的一个元组。若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡儿积应当有k1k2个元组。R和S的笛卡儿积表示为: RS = tr ts | tr R ts S ,传统集合运算的实例,R S RS,RS RS,2.2.2 专门的关系运算,1. 选择(Selection)运算 选择运算指在关系R中选择满足给定条件的元组,记作: F(R)= t | t R F(t)= 真 其中:为选择命令,R为选择对象即关系,F表示选择条件,是一个逻辑表达式,取值为“真”或“假”。,设学生课程数据库,其关系模式为: 学生(学生,姓名,年龄,所在系
11、); 课程(课程号,课程名,学分); 选课(学号,课程号,成绩).,【例1】用关系代数表示在学生课程数据库中查询计算机系的全体学生的操作。 所在系= 计算机系 (学生),【例2】用关系代数表示在学生课程数据库中查询年龄小于20岁的学生的操作。 年龄20(学生),(2) 投影(Projection)运算 关系R上的投影是从R中选择出若干属性列组成新的关系,记作 A(R)= t A | t R 【例3】在学生课程数据库中,查询学生的姓名和所在系。 表示为: 姓名,所在系(学生),3. 连接运算 连接是从两个关系的笛卡儿积中选取属性间满足一定条件的元组。记作: R S=tr ts| trR tsS
12、tr Ats B AB 其中:A和B分别为R和S上度数相等且可比的属性组,是比较运算符。 等值连接表示为: R S=tr ts| trR tsS tr A=ts B A =B 自然连接是一种特殊的等值连接: R S=tr ts| trR tsS tr A=ts B,【例4】设学生和选课关系中的数据如下,学生与选课之间的笛卡儿积、等值连接和自然连接的结果如表所示。,学生 选课,学生选课,笛卡儿积,学生 选课 学生.学号=选课.学号,学生 选课,等值连接,自然连接,自然连接的结果表示,4. 除运算 举例:求那位同学选修了全部三门课程,即求COURSC。,在给出除运算的形式化定义之前,先给出属性的象
13、集的定义。 给定一个关系R(X,Z),X和Z为属性组。定义当t X=x时,x在R中的象集为: Zx = t Z | t R,t X = x 上式表示,x在R中的像集为R中Z属性对应分量的集合,而这些分量所对应的元组中的属性组X上的值应为x。,除运算定义:给定关系R(X,Y)和S(Y,Z),其中X,Y,Z为属性组。R中的Y与S中的Y可以有不同的属性名,但必须出自相同的域集。R与S的除运算得到一个新的关系P(X),P是R中满足下列条件的元组在X属性列上的投影:元组在X上的分量值x的象集Yx包含S在Y上的投影,即: RS=tr X| t r R Y(S) Yx. 其中的Yx为x在R中的象集,x =
14、trX。,【例5】给出选课、选修课和必修课3个关系,它们的关系模式为: 选课(学号,课号,成绩);选修课(课号,课名);必修课(课号,课名).,选课,选修课,选课必修课 学号,课号(选课)必修课,2.3 关系数据库的定义和操纵,SQL结构化查询语言现已成为关系数据库的标准语言,被ISO命名为“国际标准数据库语言 SQL” 。 提供数据定义、数据查询、数据操纵和数据控制语句。 用户可以直接输入SQL命令来操纵数据库,也可以将其嵌入高级语言中。,2.3.1 SQL语言的数据定义,数据定义是对关系模式一级的定义,SQL语言支持三级模式结构。,创建表时,一般需要回答以下问题: 表名是什么? 各列(字段
15、)的名称是什么? 此表包括什么类型的数据等等,常用数据类型: TEXT:文本型 MONEY:货币型 INTEGER:长整型 DATE:日期型 FLOAT:双精度型 LOGICAL:是否型 MEMO:备注型 GENERAL:OLE型,1、用SQL创建表,实例,输入SQL代码的方法 首先要在查询对象下新建查询,然后单击“视图”菜单,选择“SQL视图”命令,这样在屏幕上就出现了一个文本框,用来书写SQL语句。 把用到的SQL语句输入完毕后,再单击“视图”菜单,选择“数据表视图”命令,得到SQL语句运行结果。,创建“讲座”表 CREATE TABLE 讲座(编号 CHAR(8),讲座名 CHAR(8)
16、,演讲人 CHAR(15),来自 TEXT(15),照片 GENERAL,日期 DATE,时数 INTEGER),双击查询后,弹出,生成表的设计视图,2.修改基表 可以对现有基本设置主键、删除列、修改列名或数据类型等。 例:修改课程表 ALTER TABLE Course ADD 学时 DATE; ALTER TABLE Course ALTER 学分 SMALLINT; ALTER TABLE Course DROP学时;,创建一个在“讲座”表中插入字段的数据定义查询。 ALTER TABLE 讲座 ADD 电话 INTEGER; 创建一个修改“讲座”表中指定字段的数据类型的查询。 ALTE
17、R TABLE 讲座 ADD 电话 TEXT(13); 创建一个删除“讲座”表中指定字段的数据定义查询 ALTER TABLE 讲座 DROP 照片; 删除讲座表中照片字段。,3.建立索引 CREATE UNIQUE INDEX索引名 ON 基表名(列名ASC/DESC,列名ASC/DESC, ); 例:在选课表中的“成绩”属性商创建不重复索引。 CREATE UNIQUE INDEX GradeCour ON SC(成绩); 4. DROP语句 删除现有的表、视图、表的索引等 DROP INDEX GradeCour ON 选课;,SQL语句创建查询使用的是SELECT语句。大多数SELEC
18、T语句包括以下几个成分:,要查询哪些表,以及表之间的逻辑关系。 结果集中包含哪些列,即要从表中取出哪些列的数据。 以何种条件从表中取出数据,即表中的行被包含在结果集中的条件。 结果集中的行的排列顺序。,2.3.2 SQL语句的数据查询,SQL语言用SELECT语句执行查询,一般形式为,SELECT子句:指定查询目标,DISTINCT去掉重复行; FROM子句:指定涉及的表名; WHERE子句:指定须满足的条件; GROUP BY子句:指定按其值分组的属性,Having筛选 ORDER BY子句:查询结果排序,1. 基于一个表的查询 例如,对实验课所完成数据库,选择表中若干列 (1)查询全体学生
19、的详细记录 SELECT * FROM Student; (2)查询全体学生的学号与姓名 SELECT 学号,姓名 FROM Student;,(3)查询全体学生的姓名及出身年份 SELECT 学号, 出生年份: ,Year(出生年月) FROM Student;,例:选择表中若干元组 (1)查询信息51班学生的情况。 SELECT * FROM Student WHERE 班级= 信息51 ; (2)查询信息51班选修了课程的女学生的情况。 SELECT DISTINCT 学号 FROM SC WHERE 班级= 信息51 AND 性别= 女;,(3)查询198183年之间出生的学生的姓名、
20、班级和年龄。 SELECT 姓名,班级,出生年月 FROM Student WHERE 出生年月 BETWEEN #81-1-1# AND #83-1-1#; (4)查询选修了050012号课程的学生学号和成绩,查询结果按降序排列。 SELECT 学号,成绩 FROM SC WHERE 课程号= 050012 ORDER BY 成绩DESC;,(5)查询信息51、计数61、高电压61学生的姓名和性别。 SELECT 姓名,性别 FROM Student WHERE 班级 IN(信息51 , 计数61 , 高电压61 ); (6)查询所有姓张的学生姓名和性别。 SELECT 姓名,性别 FROM
21、 Student WHERE 姓名 LIKE 张* ,例:使用集函数 (1)查询土管071班的学生人数。 SELECT Count(*) AS 学生人数 FROM Student WHERE 班级= 土管071 ; (2)查询选修了课程的学生人数。 SELECT Count( DISTINCT 学号) FROM CS (3)查询选修了050012号课程的学生的平均成绩。 SELECT AVG(成绩) FROM SC WHERE 课程号= 050012 ,查询结果分组 (1)求各个课程号及相应的选课人数。 SELECT 课程号,COUNT(学号) FROM SC GROUP BY 课程号 (2)
22、查询选修了3门以上课程的学生的学号。 SELECT 学号 FROM SC GROUP BY 学号 HAVING COUNT (*)3;,数据查询中涉及两个或多个表中的数据。 一般形式为,2.3.3 SQL语句的连接查询与子查询,连接查询 (1)查询每个学生及其选修课程的情况(等值连接)。 SELECT Student.*,SC.* FROM Student,SC WHERE Student.学号=SC.学号,(2)使用自然连接,查询每个学生及其选修课程的情况。 SELECT Student.学号,姓名,性别,出生年月,班级,课程号,成绩 FROM Student,SC WHERE Studen
23、t.学号=SC.学号 (3)查询每门课程的间接先修课(先修课的先修课。 SELECT Cour_1.课程号, Cour_2.先修课程号 FROM Course AS Cour_1,Course AS Cour_2 WHERE Cour_1.先修课程号=Cour_2.课程号 AND Cour_2.先修课程号 IS NOT NULL;,子查询(嵌套查询) (1)查询与“李玉”同在一个班的学生。 SELECT 学号,姓名 FROM Student WHERE 班级 IN (SELECT 班级 FROM Student WHERE 姓名=李玉) (2)查询比信息51班所有学生出生年份都小的其他班学生的
24、姓名及出生年月。 SELECT 姓名,出生年月 FROM Student WHERE YEAR(出生年月) 信息51 ,可用=,查询选修了050512号课程的学生的学号和姓名 (1) 用连接查询表示 SELECT Student.学号,姓名 FROM Student,SC WHERE Student.学号=SC .学号AND 课程号=050512 (1) 用嵌套查询表示 SELECT Student.学号,姓名 FROM Student,SC WHERE 学号 IN (SELECT 学号 FROM SC WHERE课程号=050512),2.3.4 SQL语言的数据更新,1. 插入数据 2.
25、修改数据 3. 删除数据,为教师表插入一条新记录,以“教师表追加记录”保存。 INSERT INTO Teacher(教师号,姓名,性别,职称) VALUES(9098 , 李丽,false, 副教授) 课程表中将“计算机算法”改名为“软件开发技术”。 UPDATE Course SET 课程名=软件开发技术 WHERE 课程名=” 计算机算法 删除教师表中商学院教师的记录。 DELETE FROM Teacher WHERE 学院 商学院,2.3.5 SQL语言的视图,ACCESS中在窗体中才能支持视图 视图是逻辑意义上的表,2.3.6 Access的可视化操作方式,1. Access数据库
26、的数据定义,2. 定义联系和参照完整性约束,3. Access数据库的数据操纵,在设计视图中新建查询,选取Student表中的学号和姓名,SC表中的课程号和成绩,如图a,切换到SQL视图,可看到相应SELECT语句,SELECT Student.学号,Student.姓名,SC.课程号, SC.成绩 FROM Student INNER JOIN SC ON Student.学号= SC.学号 ORDER BY SC.成绩 DECS 内连接结果集只包含两个表匹配成功的记录,外连接,外连接可以是左向外连接、右向外连接或完整外部连接。 LEFT JOIN 或 LEFT OUTER JOIN 结果集
27、包括 LEFT OUTER 子句中指定的左表的所有行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。 SELECT COURSE.cname, COURSE.cno, TEACHER.tname FROM TEACHER left JOIN COURSE ON TEACHER.id=COURSE.teacher;,左表有LI,右表没有匹配记录,显示空值,右向外连接,RIGHT JOIN 或 RIGHT OUTER JOIN。 结果集是右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。 SELECT COURSE.cname, COURS
28、E.cno, TEACHER.tname FROM TEACHER right JOIN COURSE ON TEACHER.id=COURSE.teacher;,右表C有1、2、3,左表T全有匹配记录,所以结果和内连接完全相同,创建成绩在90分以上的学生成绩查询,其中的数据来源于刚创建的Grade_Stu查询,设计好了的子查询如图:,创建更新查询,将学号为05600101的学生入学学分改为698,如图,一个数据库模式有多个关系模式构成,一个关系模式又由多个属性构成。 需要有专门的设计方法来设计关系模式,并将属性合理分组。 一种方法是使用E-R图进行概要设计,然后转换为关系模式; 另一种方法是
29、基于关系规范化理论,2.4 数据依赖与关系规范化,2.4.1 函数依赖,1. 函数依赖的概念 设R( A1, A2, . ,An)是一个关系模式,X、Y是 A1, A2, . ,An的两个子集。若对于R的任意一个可能的关系r来说,r中不可能存在两个元组在X上的属性值相等,而Y上的属性值不等,则称X函数确定Y,或Y函数依赖于X,记作XY。 相应地,若Y函数不依赖于X,则记作X Y。,例如,对于教学关系模式:教学U,F U=学号,姓名,年龄,性别,系名,系主任,课程名,成绩; F=学号姓名,学号年龄,学号性别,学号系名,系名系主任,(学号,课程名)成绩.,XY,但YX,则称XY是非平凡的函数依赖。
30、 XY,但YX,则称XY是平凡的函数依赖。 例:在关系SC(Sno, Cno, Grade)中, (Sno, Cno) Grade是非平凡函数依赖,(Sno, Cno) Sno、(Sno, Cno) Cno是平凡函数依赖。 对于任一关系模式,平凡函数依赖都是必然成立的,它不反映新的语义,因此若不特别声明, 总是讨论非平凡函数依赖。,在RU中,如果XY,并且对于X的任何一个真子集X,都有X Y,则称Y对X完全函数依赖,记作:XY;若XY,但Y不完全函数依赖于X,则称Y对X部分函数依赖,记作: XY。 例如,在教学关系模式:(学号,课程名)成绩,(学号,课程名)姓名,P,F,P,F,在RU中,如果
31、XY,(Y X), Y X,YZ,则称Z对X传递函数依赖。传递函数依赖记作X Z。例如,在教学模式中,因为:学号系名,系名系主任;所以:学号 系主任。,传递,传递,2. 函数依赖和关系的优劣 二者密切相关。“不良”函数依赖带来的问题: 数据冗余太大:浪费大量的存储空间,如每个系主任姓名与该系每个学生的每门选修课程的成绩出现次数一样。 插入异常(Insertion Anomalies):该插的数据插不了。如一个系刚成立,尚无学生,就无法把这个系及其系主任的信息存入数据库。 删除异常(Deletion Anomalies):不该删除的数据被删了。如某个系的学生全部毕业了,在删除该系学生信息的同时,
32、把这个系及其系主任的信息也删了。 更新异常(Update Anomalies):数据冗余 ,更新数据时维护数据完整性代价大。如某系更换系主任后,必须修改与该系学生有关的每一个元组。,2.4.2 基于主键的范式和BC范式,设计关系数据库时,关系模式不能随便建立,必须满足一定的规范化要求。 如果一个关系模式满足某种指定的约束,称其为特定范式的关系模式,满足不同程度的要求构成不同的范式级别。,关系模式应满足的基本要求1) 元组的每个分量必须是不可分的数据项。2) 数据库中的数据冗余应尽可能少。3) 关系数据库不能因为数据更新操作而引起数据不一致问题。4) 当执行数据插入操作时,数据库中的数据不能产生
33、插入异常现象。5) 数据库中的数据不能在执行删除操作时产生删除异常问题。6) 数据库设计应考虑查询要求,数据组织应合理。,如果关系模式R,其所有的属性均为简单属性,即每个属性都是不可再分的,则称R属于第一范式,记作R1NF。 在此基础上满足更高要求的称为第二范式其余以此类推。 一个低一级的范式的关系,通过投影运算可以转换为若干高一级范式的关系的集合,这种过程叫做关系的规范化。,1. 2NF(第二范式) 若R1NF,且每一个非主属性完全依赖于码,则R2NF。在教学模式中: 属性集U=学号,姓名,年龄,系名,系主任,课程名,成绩.函数依赖集F =学号姓名,学号年龄,学号性别,学号系名,系名系主任,
34、(学号,课程名)成绩. 主码=(学号,课程名). 非主属性=(姓名,年龄,系名,系主任,成绩)。非主属性对码的函数依赖: (学号,课程名)姓名,(学号,课程名)年龄,(学号,课程号)性别 , (学号,课程名)系名,(学号,课程名)系主任;(学号,课程名)成绩.显然,教学模式不服从2NF,即:教学2NF。,P,P,P,P,P,F,如果将教学模式分解为: 学生_系(学号,姓名,年龄,性别,系名,系主任); 选课(学号,课程号,成绩). 显然分解后的各子模式均属于2NF。,2. 3NF(第三范式),关系模式RU,F中若不存在这样的码X、属性组Y及非主属性Z(Z Y)使得XY、Y X、YZ成立,则称R
35、U,F3NF。可以证明,若R3NF,则每一个非主属性既不部分函数依赖于码,也不传递函数依赖于码。 3NF是一个可用的关系模式所应满足的最低范式。,考查学生_系关系,由于存在:学号系名,系名系主任。 则: 学号 系主任。所以学生_系3NF。 如果分解为: 学生(学号,姓名,年龄,性别,系名); 教学系(系名,系主任).显然分解后的各子模式均属于3NF。,传递,3. BCNF(BC范式) 关系模式RU,F1NF。若XY且Y X时X必含有码,则RU,FBCNF。也就是说,关系模式RU,F中,若每一个决定因素都包含码,则RU,FBCNF。由BCNF的定义可以得到结论,一个满足BCNF的关系模式有:1)
36、 所有非主属性对每一个码都是完全函数依赖。2) 所有主属性对每一个不包含它的码,也是完全函数依赖。3) 不存在完全函数依赖于非码的属性组。,例如,关系模式STJ(S,T,J)中,S表示学生,T表示教师,J表示课程。语义为:每一教师只能讲授一门课程,每门课程由若干教师讲授;每个学生选修某门课程就对应一个固定的教师。由语义可以得到STJ模式的函数依赖为: F=(S,J)T,TJ显然:(S,J)和(T,S)都是关系的码;关系的主属性集为S,T,J,非主属性为(空集)。P由于STJ模式中无非主属性,所以它属于3NF;但因为存在TJ,由于T不是码,故STJBCNF。若将STJ分解为两个关系模式SJ(S,J)和TJ(T,J),其分解后的子模式都属于BCNF。,BCNF和3NF的比较,1) BCNF不仅强调其他属性对码的完全的直接的依赖,而且强调主属性对码的完全的直接的依赖,它包括3NF,即RBCNF,则R一定属于3NF。 2) 3NF只强调非主属性对码的完全直接依
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB 46859-2025儿童手表安全技术要求
- 全国农药安全培训课件
- 全员安全培训责任制度课件
- 脚本问答话术
- 职业生涯通道规划方案
- 干燥间消防安全制度
- 校招销售面试实战技巧
- 英语专业专科就业前景
- 安全生产节日通知讲解
- 两新组织考试试卷及答案
- 冀教版(2024)三年级上册《称量物体》单元测试(含解析)
- 数学-湖南长郡中学、杭州二中、南师附中三校2025届高三4月联考试题+答案
- 医学三维可视化与虚拟现实技术:革新肝癌腹腔镜手术的探索与实践
- 人类房子的演变过程
- 线路交维管理办法
- 模具质量全流程管控体系
- 河南2024级高中会考数学试卷
- 美育视域下先秦儒家乐教思想对舞蹈教育的当代价值研究
- 运输企业隐患排查奖惩制度
- 网络传播法规(自考14339)复习题库(含答案)
- 房屋继承家庭协议书
评论
0/150
提交评论