1、转换过程示意图E-R图关系模型DBMS上讲复习:上讲复习:关系代数关系代数 传统的集合操作 关系代数 专门的关系操作软件公司商品表编号 软件名称 盘数 单价开发单位0001 KV3000 7 100.00 金山公司 0002 金山词霸 5 28.00金山公司0003 金山快译 2 28.00金山公司 0004 虚拟人生 1 38.00清华大学 0005 教学软件 9 300.00清华大学0006 超级解霸 6 38.00清华大学 选择和投影举例选择和投影举例 设有关系数据库,它由三个关系 组成,它们的模式是: S(S#,SN,SD,SA) 学号 姓名 系名 年龄 C(C#,CN,PC#) 课程
2、号 课程名 先修课程号 SC(S#,C#,G) 成绩1.检索先修课程号为001的课程号 C# ( PC#=“001”(C)选择、投影和连接举例选择、投影和连接举例2.检索课程号为001,成绩为A的所有学生姓名 SN ( C#=“001”G=“A”(SC) S)3.检索姓名为王辉的学生修读的所有课程名及先修课程号 CN, PC#( SN=王辉 (S) SC C)4.检索至少修读课程号为学生李枚所修的一门课的学生姓名 SN ( ( S# ( C# ( SN=李枚 (S) SC ) SC) S) 设有关系数据库,它由三个关系组成,它们的模式是:病区(病区号,名称,所在位置,病房号,医生姓名)医生(医
3、生职编,医生姓名,年龄,职称,管辖病房号)病人(病人编号,病人姓名,患何病科,病房号)请用关系代数语言作如下查询:1) 找出外科病区的所有医生姓名;2) 找出管辖13号病房的医生所在病区;3) 找出管辖病员李维德的医生姓名;4) 找出内科病区患冠心病病人的姓名。 作业:6. 关系数据库设计理论关系数据库设计理论 数据库设计是建立数据库应用系统的核心问题。设计的关键是如何使设计的数据库能合理地存储用户的数据,方便用户进行数据处理。1) 数据库设计中的问题2) 函数依赖3) 关系模式的规范化1) 数据库设计中的问题 开发一个具体的数据库应用系统的核心问题是设计数据库结构。 如何根据设计的对象去构造
4、一个好的关系数据库结构? 每个关系由哪些属性组成? 好坏如何评价?例如 某学校要建立一个学生管理数据库, 有如下属性: 学号,系名,系主任,成绩,课程可以组成一个关系名为UN的关系模式:UN(学号,课程,成绩,系名,系主任) 一个系有若干学生,但一个学生只属于一个系; 一个系只有一名系主任; 一个学生可以选修多门课程,每门课程可有若干学生选修; 每个学生学习每门课程有一个成绩。学号课程成绩系名系主任9914001C语言 85管理系张盟9914001数据库 90 管理系张盟9914001管理信息系统 88管理系张盟9914002C语言 70管理系张盟9914002数据库 75 管理系张盟9914
5、002管理信息系统 80管理系张盟9909011C语言 83计算机系王宏9909011数据库 95 计算机系王宏9909011软件工程 76计算机系王宏9909021C语言 77计算机系王宏9909021数据结构 90 计算机系王宏9909021软件工程 85计算机系王宏数据冗余 每个系主任的姓名和系名与该系每个学生所选修的每一门课程的成绩出现的次数一样多,将造成存储空间的浪费和维护代价太高。 例如:该系有100名学生,每个学生平均选30门课,则该系名和系主任名要重复100*30=3000次。 数据重复存放造成空间浪费称为“数据冗余”修改异常 修改过程中的疏忽会造成数据的不一致性,从而破坏了数
6、据的完整性,这称为“修改异常”插入异常 实体完整性要求:主键的特性不能为空或部分为空。若为空,则元组不能存入数据库中,否则就会因为失去标识而使关系中存在相同的元组。 例如:如果一个系刚成立,尚无学生,或者有了学生但还未选课,就无法将该系的系名和系主任插入到数据库中。删除异常 例如:若某个系的学生全部毕业了,在删除该系学生及其选课信息的同时,会把系名和系主任的信息同时删除。问题的解决办法问题的解决办法 因为关系中属性之间存在不好的联系。若将上例关系模式分解为SD、DM、SG三个关系模式,可以解决上述问题。SD(学号,系名)DM(系名,系主任)SG(学号,课程,成绩) 用几个简单的关系去取代原来结
7、构复杂的关系,这种分解过程叫关系的规范化。学号课程成绩9914001C语言 859914001数据库 909914001管理信息系统 889914002C语言 709914002数据库 759914002管理信息系统 809909011C语言 839909011数据库 959909011软件工程 769909021C语言 779909021数据结构 909909021软件工程 85SG学号系名9914001管理系9914002管理系9909011计算机系9909021计算机系SD 系名 系主任管理系 张盟计算机系 王宏DM2) 函数依赖函数依赖(Functional DependencyFD)
8、 在信息世界中,在实体内部属性值之间存在着相互依赖,相互制约的联系。对于属性值之间的这种联系,称为数据依赖。 最重要的数据依赖有两种:函数依赖和多值依赖。 例如:关系S(学号,姓名,年龄,性别),当学号确定后,其姓名,年龄和性别的属性值也就随之确定,因此称“学号”为决定因素, “学号”函数决定了姓名,年龄和性别属性的内容,而姓名,年龄和性别属性函数依赖 “学号”,记为: 学号 (姓名,年龄,性别)(定义) 假设有一关系R,R中有若干个属性,R中的关系键(一个或多个属性组成)用X代表,用Y来代表除X之外其他任意的属性或属性组,即Y代表的属性不包括在X中,那么该关系记为R(X,Y)。如果X是由多个
9、属性组成,则用X代表组成关系键的属性值中任意的属性。 当X函数决定Y(或Y函数依赖X),记作XY;当X函数不决定Y(或Y不函数依赖X),记作XY;完全函数依赖完全函数依赖(完全完全FD)(定义)若XY, XY,则X Y 其中, 表示完全函数依赖例如:关系SG(学号,课程,成绩)中, 学号 成绩 课程 成绩 (学号,课程) 成绩fff部分函数依赖部分函数依赖(部分部分FD)(定义)若XY, 一个X, Y ,XY,则X Y 其中, 表示部分函数依赖例如:UN(学号,课程,成绩,系名,系主任) 学号 系名 (学号,课程) 系名ppp传递函数依赖传递函数依赖(传递传递FD)(定义) Y1,Y2 Y,若
10、XY1, Y1Y2,但Y2X, 则X Y2 ,其中, 表示传递函数依赖例如:G(工号,姓名,工种,定额) 工号 姓名,工种 工种 定额 而定额工号 工号 定额ttt3) 关系模式的规范化关系模式的规范化范式(Normal FormNF)1NF (定义)若关系模式R的每一个分量是不可再分的数据项,即称R满足第一范式。记为R 1NF 一般将满足第一范式的关系称为规范化关系。 不满足1NF的关系只要去掉组项,将其分成数个属性即可。第一规范式:第一规范式:如果一个关系模式中的属性都是单纯的如果一个关系模式中的属性都是单纯的 (即不可再分为更小的属性),则称该(即不可再分为更小的属性),则称该 模式是属
11、于第一规范模式是属于第一规范式式(First Normal Form , 即即 1NF )。)。210095南京卫岗邮编市街道江苏甲省地址姓名2NF (定义)若关系模式R 1NF,而且每个非主属性完全函数依赖于关系键,则称R满足第二范式。记为R 2NF 即R中不存在非主属性对关系键的部分函数依赖。 例如:R(职工编号,姓名,设备编号,设备名,熟练程度) 职工编号姓名 设备编号设备名(职工编号,设备编号) 熟练程度 (职工编号,设备编号) 姓名 (职工编号,设备编号) 设备名非主属性“姓名”和“设备名”部分函数依赖关系键 R 2NFpp第二规范式:第二规范式:如果一个关系模式属于如果一个关系模式
12、属于1NF,并且所有,并且所有 的非关键字都完全地依赖于关键字(即的非关键字都完全地依赖于关键字(即 不存在部分依赖),则称该关系模式属不存在部分依赖),则称该关系模式属 于第二规范于第二规范式式, 即即 2NF 。A零 件 号B仓 库 号C零 件 数 量D仓 库 地 址123411121 0 01 5 02 0 01 5 0北 区 1 号北 区 1 号北 区 1 号南 区 1 号例如:UN(学号,课程,成绩,系名,系主任)学号 系名 系名系主任 (学号,课程) 成绩(学号,课程) 系名即非主属性“系名”部分函数依赖关系键UN 2NF 当1NF的关系消除了非主属性对关系键的部分函数依赖,即可成
13、为满足2NF的关系。 当R2NF,插入异常、删除异常和修改复杂的问题会有所改善。p (定义)若关系模式R 2NF,而且在R中不存在对关系键的传递函数依赖,则称R满足第三范式。记为R 3NF例如:G(工号,姓名,工种,定额) 工号 姓名,工种 工种 定额 而定额 工号 工号 定额 G 3NF 满足3NF的关系中的所有属性不但要能够唯一地被主关系键所标识,而且它们之间还必须相互独立,不存在部分函数依赖和传递函数依赖。 3NF关系可以从满足2NF的关系中消除非主属性对关系键的传递函数依赖后获得。 当R3NF,插入异常、删除异常和修改复杂等问题可以得到有效解决。3NFt第三规范式:第三规范式:如果一个
14、关系模式属于如果一个关系模式属于2NF,并且不存,并且不存 在非关键字传递地依赖于关键字,则称在非关键字传递地依赖于关键字,则称 该关系模式属于第三规范该关系模式属于第三规范式式(3NF)。)。规范化程度越高规范化程度越高数据冗余数据冗余更新异常更新异常连接运算时间连接运算时间查询时间查询时间效率效率350高工王五1005120技术员李四1002张三职工200工程师1001职务工资职务职工号规范化和模式分解规范化和模式分解规范化 (定义)把一个低一级范式的关系模式转换为若干个高一级范式的关系模式的过程叫做规范化。模式分解 把一个关系模式分解为n个关系模式,称为关系模式的分解。例如:求关系UN(
15、学号,课程,成绩,系名,系主任)的范式等级,同时分解使之达到3NF。 UN(学号,课程,成绩,系名,系主任)分析A:各属性都是不可分的数据项存在部分函数依赖, 例如(学号,课程) 系名结论A: UN 1NF ,UN 2NF解决A:采用投影运算使UN由1NF规范化为2NF。即将 UN中属性间的部分函数依赖分解为SG和SDM。SG(学号,课程,成绩)SDM(学号,系名,系主任)分析B:SG不存在部分函数依赖和传递函数依赖。SDM不存在部分函数依赖,但存在传递函数依赖,学号系名,系名学号,系名系主任结论B:SG 3NF ,SDM 3NFp SDM 3NF带来的问题: 系主任仍要重复存储,若要更换 系
16、主任,仍需要修改较多的记录 当某系没有招生或学生全部毕业,系主任和系名信息将丢失,所以仍有插入、删除和修改异常解决B:将SDM分解成SD和DM。SD(学号,系名)DM(系名,系主任)最终结论: SG 3NF, SD 3NF, DM 3NF SG , SD , DM均用一个关系模式表示单个实体,即选课实体,学生实体和系实体。 关系模式规范化过程就是用一组小关系框架等价地代替原有框架的过程。这一过程可用如下流程图表示: 非规范化关系 消去组项 1NF 消去部分函数依赖 2NF 消去传递函数依赖 3NF 模式分解准则:分解必须是无损的,即不应在分解中丢失信息分解要保持原有的函数依赖例如:SDM (学
17、号,系名,系主任)的分解有如下三种结果:SD(学号,系名),DM(系名,系主任)SD(学号,系名),SM(学号,系主任)SM(学号,系主任),DM(系名,系主任)例2 假设某单位有订货合同一览表, 该表中的零件单价在订货时根据双方谈判时决定。 这种表规范程度低,其中包含有合同清单表。表的主键是“合同号+零件号”,存在部分函数依赖,例如主键中的合同号订货日期合同号 厂名 订货日期 发货日期 零件号 单价 数量01001 Aaa 2001.5.19 2001.5.24 1001 10000 301001 Aaa 2001.5.19 2001.5.24 1002 15000 201001 Aaa 2
18、001.5.19 2001.5.24 2001 20000 101002 Bbb 2001.6.20 2001.6.25 1001 15000 1 作业某书店有关购图书的汇总登记表用关系表示如下: 请对上述购书的汇总登记表进行分析,写出属性间存在的函数依赖。 用规范化理论将该表进行分解,使之满足3NF的规范化要求。订单号 订户代号 姓名 地址 书号 书名 出版单位 单价 订购数量 NO C# CN CA B# BN EU UP QUA 001 25003 东南大学 南京 02164 计算机原理 高教出版社 22.00 120 001 25003 东南大学 南京 01003 关系数据库 机械出版社 23.00 150 001 25003 东南大学 南京 06372 Internet指南 高教出版社 18.00 80 002 25004 清华大学 北京 06372 Internet指南 高教出版社 18.00 190 002 25004 清华大学 北京 01085 会计学 立信出版社 25.00 120