《【教学课件】第7章关系数据库系统基础.ppt》由会员分享,可在线阅读,更多相关《【教学课件】第7章关系数据库系统基础.ppt(44页珍藏版)》请在三一办公上搜索。
1、1,第7章 关系数据库系统基础,本章主要内容:1.关系模型的数学定义2.结构化查询语言 SQL3.关系数据库理论:函数依赖和规范化4.安全性和完整性,2,7.1 关系模型的数学定义和关系代数,一.关系模型的数学定义1.域:同类型值的集合。如整数集合、字母集合等。2.笛卡尔积:由一组域D1,D2,D 产生3.元组:笛卡尔积集合中的每个元素称为一个元组.4.关系:笛卡尔积集合的一个子集。,3,笛卡尔乘积举例,设有三个集合:NAME、AGE、SEXNAME AGE SEX NAS(NAMEAGESEX),=,刘王,2120,男女,NAME AGE SEX,刘 21 男刘 21 女刘 20 男刘 20
2、 女王 21 男王 21 女王 20 男王 20 女,(刘,21,男)是其中一个元组3个分量分别为 刘,21,男.,4,二.关系组成,1.关系用二维表表示 第一行:字段名的集合,关系框架(结构)其它行:元组或记录 列:属性(域)或属性2.关系模式:一个关系的属性名表 格式:关系名(属性名表)例如:STUDENT(学号,姓名,性别,年龄),5,二.关系组成,3.关系的基本性质每一列不能再分每一列属性的值具有相同的数据类型不允许有重复的列不允许有相同的记录行、列次序均无关,6,二.关系组成,4.关系中的键(码)(1)候选键:关系中可以唯一标识元组的属性或属性集合.例1 关系STUDENT 例2 关
3、系SCORE 学号 姓名 年龄 学号 课号 成绩 99001 张平 19 99001 C01 90 99002 李化 20 99001 C02 89 99003 王一 18 99002 C02 70,7,二.关系组成,(2)主键(主码)在多个候选键中选择一个(3)外键 用来联系两个关系的一组属性,在一个关系中不是候选健,在另一个关系中是候选键,如上例中的学号.(4)主属性:属于候选键中的属性(5)非主属性:不属于候选键中的属性,8,三.关系数据库,1.关系数据库 以关系模式为基础2.组成 数据结构+关系操作+完整性约束3.完整性约束 1)实体完整性:要求主属性非空 2)参照完整性:关系之间的参
4、照 3)用户定义完整性:例如,0数学100,9,四.关系代数及关系运算,示例:关系STUDENT学号 姓名 专业 性别 数学 物理 化学 99001 沈小平 计算机 女 85 76 7699002 陆华 计算机 女 96 92 9599003 王华 计算机 女 91 92 99 99004 郭勇 计算机 男 89 96 9699005 魏明 计算机 男 89 85 82,10,四.关系代数及关系运算,1.选择 从指定关系中选择出符合条件的元组组成新的关系。举例:从关系STUDENT中,选择总成绩不低于270分的记录。条件:数学+物理+化学=270 结果:学号 姓名 专业 性别 数学 物理 化学
5、 99002 陆华 计算机 女 96 92 9599003 王华 计算机 女 91 92 99 99004 郭勇 计算机 男 89 96 96,11,四.关系代数及关系运算,2.投影 从指定关系的属性集合中选取部分属性组成新的关系。举例:从关系STUDENT中,选择“姓名”、“专业”、“物理”三个属性构成新关系。结果:姓名 专业 物理 沈小平 计算机 76 陆华 计算机 92 王华 计算机 92 郭勇 计算机 96 魏明 计算机 85,12,四.关系代数及关系运算,3.联接 将两个关系中的元组按指定条件进行组合,生成一个新的关系举例:将下面两个关系按学号合并。学号 姓名 数学 英语 学号 姓名
6、 体育 8612162 陆华 96 92 8612162 陆华 良 8612104 王华 91 92 8612104 王华 良 8612105 郭勇 89 96 8612107 刘平 优结果:学号 姓名 数学 英语 体育 8612162 陆华 96 92 良 8612104 王华 91 92 良,13,四.关系代数及关系运算,4.并运算 两个关系R和S的并结果由属于R或属于S的元组组成。,R S,14,并运算举例,名称 颜色 长度的确良 白 1000华达呢 黑 2000,名称 颜色 长度的确良 黑 2000华达呢 黑 2000,名称 颜色 长度的确良 白 1000的确良 黑 2000华达呢 黑
7、 2000,关系S,关系RS,关系R,15,四.关系代数及关系运算,5.交运算 关系R和S的交由既属于R又属于S的元组组成。,R,S,R S,16,交运算举例,名称 颜色 长度的确良 白 1000华达呢 黑 2000,名称 颜色 长度的确良 黑 2000华达呢 黑 2000,名称 颜色 长度华达呢 黑 2000,关系S,关系R S,关系R,17,四.关系代数及关系运算,6.差运算 关系R和S的差R-S,由属于R而不属于S的元组组成,R,S,R-S,18,差运算举例,名称 颜色 长度的确良 白 1000华达呢 黑 2000,名称 颜色 长度的确良 黑 2000华达呢 黑 2000,名称 颜色 长
8、度的确良 白 1000,关系S,关系R-S,关系R,19,四.关系代数及关系运算,关系A,关系B,X Y Z,U V,x1 y1 1x2 y2 2,u1 v11 v2,关系C=AxB,X Y Z U V,x1 y1 1 u1 v1x1 y1 1 1 v2x2 y2 2 u1 v1x2 y2 2 1 v2,7.笛卡尔积 两个关系A和B的笛卡尔积是一个元组集合C。C中属性个数为A和B的属性个数之和,元组个数为A和B各自元组个数的乘积。举例:,20,7.2 结构化查询语言,一.概述1.SQL 结构化查询语言:关系数据库的标准查询语言2.组成:DDL 数据定义语言 DML 数据操纵语言 DCL 数据控
9、制语言3.运算符 P2014.数据类型,21,7.2 结构化查询语言,二.DDL 作用:定义表,视图,索引1.表1)定义 CREATE TABLE student(no char(8),name char(6),age number(3);2)修改 ALTER TABLE student MODIFY(name char(8)ADD(sex char(2);,22,7.2 结构化查询语言,3)删除 DROP TABLE student;2.索引1)建立索引 CREATE INDEX st_no ON student(no);2)删除索引 DROP INDEX st_no,23,7.2 结构化查
10、询语言,3.视图1)建立 CREATE VIEW lx AS SELECT*FROM student WHERE age20;2)删除 DROP VIEW lx;,24,7.2 结构化查询语言,三.DML1.查询 P2051)SELECT*FROM student2)SELECT NO,NAME FROM student3)SELECT*FROM STUDENT WHERE age20 ORDER BY age4)SELECT*FROM student GROUP BY sex,25,7.2 结构化查询语言,2.插入(记录)INSERT INTO student VALUES(990001,Z
11、HANG,20);3.更改(记录)UPDATE student SET age=age+1;4.删除DELETE FROM student WHERE age19,26,7.2 结构化查询语言,四.DCL1.授权 GRANT2.回收 REVOKE,27,7.3 关系数据库理论,一.问题的引出:关系SCT(学生课程教师)学号 课号 成绩 教师姓名 教师年龄 办公室 S#C#GRADE TNAME TAGE OFFICE S1 C1 90 周 45 301 S1 C2 91 刘 39 302 S1 C3 85 刘 39 302 S1 C4 87 王 51 301 S2 C1 92 周 45 301
12、 S3 C1 75 周 45 301 S3 C2 56 刘 39 302,28,SCT关系中存在的问题,数据冗余 如果某门课程有100个学生选修,要出现100个记录,相应的教这门课的教师的姓名、年龄、办公室也要出现100次。更新异常 对SCT关系中的数据进行修改,可能导致数据不一致的情况。例如,将第一条记录的OFFICE值改为303,会出现周老师的办公室号码不一致,除非修改所有周老师记录中的办公室号码。,29,SCT关系中存在的问题,插入异常 如果某课程决定由张老师担任,但在还不知道哪些学生选修前,无法将张老师的记录插入关系中。因为,在SCT关系中(S#,C#)是主关键字,在C#不确定的情况下
13、,不能插入该记录。删除异常 如果要删除某门课程的所有成绩,则会将教这门功课的教师信息也删除掉。例如,若要删除C4的元组,结果会丢失王老师的有关信息。,30,SCT关系中存在的问题,解决方法:将SCT关系分解为两个关系SC和CT(还需分解),S#C#GRADE S1 C1 90 S1 C2 91 S1 C3 85 S1 C4 87 S2 C1 92 S3 C1 75 S3 C2 56,SC关系,C#TNAME TAGE OFFICE C1 周 45 301 C2 刘 39 302 C3 刘 39 302 C4 王 51 301,CT关系,31,二.数据依赖,1.描述同一关系内各属性之间的相互关系
14、被称为数据依赖。2.常见依赖类型:函数依赖、完全函数依赖,部分函数依赖和传递依赖3.函数依赖:关系R中,如果每个属性(或属性集)A的值只有一个属性B的值与之对应,就称属性B函数依赖于A,或A函数决定B.记为:A B。例:学号 姓名 学号 年龄 学号,课号 成绩,32,二.函数依赖,4.如果非主属性B函数依赖于构成某个候选关键字的一组主属性A,而不函数依赖于A的任何一个真子集,则称B完全函数依赖于A;反之,则称B部分函数依赖于A。5.设X,Y,Z 是关系R的三个不同属性子集,如果 XY,但YX且YZ,则称Z传递函数依赖于X。(更正教材P215页),33,函数依赖举例,关系BORROW借书证号 姓
15、名 单位 主任 书号 书名 日期0621 张山 财务 胡月 6201 哲学 99.03.02,34,函数依赖举例,借书证号 姓名 单位 主任书号 书名 日期 关键字:借书证号+书号 主属性:借书证号,书号 非主属性:姓名,单位,主任,书名,日期 日期完全函数依赖于关键字 其它非主属性部分函数依赖于关键字 由于:单位函数依赖于借书证号 主任函数依赖于单位 所以:主任传递函数依赖于借书证号,35,三.关系规范化,1.规范化:将关系按不同标准分解的过程2.范式:分解关系的不同标准。第一范式1NF第二范式2NF第三范式3NFBoyce-Codd范式BCNF第四范式4NF第五范式5NF 它们满足下列关系
16、:5NF 4NF BCNF 3NF 2NF 1NF,36,三.关系规范化,3.第一范式 关系中的所有属性都是不可分的基本数据项,则关系称为第一范式1NF。4.第二范式 如果关系R为第一范式,并且任一非主属性都完全函数依赖于R的任一候选关键字,则称R为第二范式2NF,37,三.关系规范化,举例 关系BORROW中,姓名、单位、书名、主任都部分函数依赖于候选关键字借书证号+书号,所以不是第二范式将其分解为以下3个关系,都属于2NF READER(借书证号、姓名、单位、主任)BOOK(书号、书名)BORROW(借书证号、书号、日期),38,READER BOOK借书证号 姓名 单位 主任 书号 书名
17、 8212 陆定 校办 李平 6201 哲学 0621 张山 财务 胡月 3104 会计学 2103 何力 财务 胡月 5112 党史 BORROW借书证号 书号 日期0621 6201 99.03.02,39,三.关系规范化,5.第三范式 如果关系模式R满足2NF,并且其任何一个非主属性都不传递函数依赖于任何候选关键字,则称R为第三范式3NF。举例:READER满足第二范式,但非主属性主任传递依赖于借书证号,因此不是第三范式,将READER再分解,消除传递函数依赖借书证号 姓名 单位 主任8212 陆定 校办 李平0621 张山 财务 胡月2103 何力 财务 胡月,40,将READER分解
18、为STUFF和LEADER STUFF LEADER借书证号 姓名 单位 单位 主任8212 陆定 校办 校办 李平0621 张山 财务 财务 胡月2103 何力 财务 STUFF和LEADER都为第三范式。,41,总结,1.非规范关系消去重复组或空白变为1NF;2.1NF中消去非主属性对候选键的部分依赖变为2NF;3.消去非主属性对候选键的传递依赖变成3NF;一般分解到3NF就能满足需要。范式级别越高,产生的新关系就越多,查询时就要进行大量的联结运算。,42,7.4 关系数据库的安全性和完整性,一.安全性 1.用户身份标识和鉴别-口令 2.存取权限控制策略二.完整性 数据的正确性和相容性三.并发控制 多个用户操作的同步和冲突,43,7.5 新型关系数据库概述,一.分布式数据库 网络环境下不同场地数据的存取二.对象数据库 扩展数据类型,支持继承和重载,44,作业、思考题,1、思考题:P221 7.1、7.3、7.42、作业题:P221 7.5,