1 / 36

数据库原理与应用

数据库原理与应用. 15 关系数据理论 - 范式 ① 郑捷. 数据库完整性. 完整性概念 实体完整性 参照完整性 用户定义的完整性 命名子句 触发器. 数据库原理与应用. 郑捷 lzj@fjnu.edu.cn www.lzj.name. 2. 什么是完整性. 完整性是指数据的正确性和相容性 完整性和安全性是不同的概念 防止不合语义、不正确的数据进入数据库 但是完整性不确保数据的准确性和真实性. 数据库原理与应用. 郑捷 lzj@fjnu.edu.cn www.lzj.name. 3. 实体完整性.

akio
Download Presentation

数据库原理与应用

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 数据库原理与应用 15 关系数据理论 - 范式 ① 郑捷

  2. 数据库完整性 完整性概念 实体完整性 参照完整性 用户定义的完整性 命名子句 触发器 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 2

  3. 什么是完整性 完整性是指数据的正确性和相容性 完整性和安全性是不同的概念 防止不合语义、不正确的数据进入数据库 但是完整性不确保数据的准确性和真实性 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 3

  4. 实体完整性 即所谓的主键(主码),PRIMARY KEY 要求在关系中,主码字段或者字段的组合唯一 主码是关系中元组(记录)的标识 完整性约束可以是表级约束,也可以是字段级约束 当码仅有一个字段构成时,两种方法都可以 当码有一个以上的字段时,只能是表级约束 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 4

  5. 参照完整性 即所谓的外码(外键),FOREIGN KEY 外键同样可以定义为表级和字段级 参照完整性涉及两个表,参照表和被参照表 在使用参照完整性的时候,要注意两个表的联系和区别,不要反向关联 参照完整性是数据库范式、数据库设计的基础 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 5

  6. 用户定义的完整性 根据具体的应用对数据提出的要求 包括 非空约束(NOT NULL) 唯一约束(UNIQUE) 检查约束(CHECK) 非空约束只能是字段级的,且只能针对一个字段 唯一约束和检查约束可以是字段级的,也可以是表级的 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 6

  7. 约束的命名 在创建约束的语句中,约束的命名是可选的 未明确命名的约束,DBMS会自动为其增加名称。自动命名的规则一般是类型前缀+表名+序列号 约束的命名要求在全数据库中唯一 建议对约束进行手工命名!! 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 7

  8. 触发器 Trigger 之前所说的约束,都属于简单语句的约束,功能简单但是快捷,适用于大多数的情况 对于一些比较复杂的规则,无法用简单的约束实现的,这个时候就需要编程实现 触发器就是一段代码,这段代码在指定的数据修改时被执行,用来检查对数据的修改是否符合规则 触发器能做的不仅仅是判断是否操作合法,还可以更新其他数据,确保数据之间的一致性 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 8

  9. 关系数据理论 问题的提出 规范化 公理系统 模式的分解 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 9

  10. 问题的提出 关系数据库的逻辑设计 针对具体问题,如何构建一个合适的数据模式 数据库逻辑设计的工具——关系数据库的规范化理论 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 10

  11. 问题的提出 2 关系模式 数据依赖 数据依赖对关系模式的影响 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 11

  12. 关系模式 关系模式的形式化描述 一个五元组 R(U, D, DOM, F) 在本章中,D和DOM关系不大 我们关注的是其中的三元组: R<U, F> 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 12

  13. 数据依赖 一个关系内部属性与属性之间的一种约束关系 现实世界属性间相互联系的抽象 数据内在的性质,语义的体现 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 13

  14. 数据依赖的类型 函数依赖(Functional Dependency,FD) 多值依赖(Multivalued Dependency,MVD) 其他依赖 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 14

  15. 数据依赖对关系模式的影响 例. 学校教务的数据库中部分实体: 学生的学号(Sno) 所在系(Sdept) 系主任姓名(Mname) 课程名(Cname) 成绩(Grade) 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 15

  16. 函数依赖 函数依赖的存在极为普遍 例如:每个学号仅对应一个学生,因此当学号的值确定后,学生的姓名也就被唯一地确定了 类似于数学上函数y=f(x),当x确定,y也确定 记为Sname函数依赖于Sno:SnameSno 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 16

  17. 数据依赖对关系模式的影响 关系模式 :Student <U、F> U = {Sno, Sdept, Mname, Cname, Grade} 属性组U上的一组函数依赖 F: F = { Sno → Sdept, Sdept → Mname, (Sno, Cname) → Grade } 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 17

  18. 数据依赖图 Sno Cname Grade Sdept Mname 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 18

  19. 只考虑函数依赖下的表 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 19

  20. 上述模式存在的问题 数据冗余太大 更新异常(Update Anomalies) 插入异常(Insertion Anomalies) 删除异常(Deletion Anomalies) 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 20

  21. 问题的原因 Student关系模式不是一个好的模式。 “好”的模式: 不会发生插入异常、删除异常、更新异常, 数据冗余应尽可能少 原因:由存在于模式中的某些数据依赖引起的 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 21

  22. 解决办法 通过分解关系模式来消除其中不合适的数据依赖 把这个单一模式分成3个关系模式: S (Sno, Sdept; Sno → Sdept) SC (Sno, Cno, Grade; (Sno, Cno) → Grade) DEPT (Sdept, Mname; Sdept→ Mname) 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 22

  23. 规范化 规范化理论正是用来改造关系模式,通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 23

  24. 规范化 函数依赖 码 范式 2NF 3NF BCNF 多值依赖 4NF 5NF ... 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 24

  25. 函数依赖 设R(U)是一个属性集U上的关系模式,X和Y是U的子集。 若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 25

  26. 平凡与非平凡依赖 在关系模式R(U)中,对于U的子集X和Y, 若X→Y,但Y≮X,则称X→Y是非平凡的函数依赖 若X→Y,但Y<X, 则称X→Y是平凡的函数依赖 例:在关系SC(Sno, Cno, Grade)中, 非平凡函数依赖: (Sno, Cno) → Grade 平凡函数依赖: (Sno, Cno) → Sno (Sno, Cno) → Cno 以下用小于号代替集合的包含符号 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 26

  27. 决定因素 若X→Y,则X称为这个函数依赖的决定属性组,也称为决定因素(Determinant)。 若X→Y,Y→X,则记作X←→Y。 若Y不函数依赖于X,则记作X\→Y。 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 27

  28. 完全和部分函数依赖 在R(U)中,如果X→Y,并且对于X的任何一个真子集X',都有X'\ → Y, 则称Y对X完全函数依赖,记作 X →FY。 若X→Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖, 记作X → PY。 例:Student模式 中的 (Sno,Cno)→Grade是完全函数依赖 (Sno, Cno)→Sdept是部分函数依赖 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 28

  29. 传递函数依赖 在R(U)中,如果X→Y,(Y≮X) ,Y\→X Y→Z,则称Z对X传递函数依赖。 记为:X →传递Z 例: 在关系Std(Sno, Sdept, Mname)中,有: Sno → Sdept,Sdept → Mname Mname传递函数依赖于Sno 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 29

  30. 码、候选码,主码 设K为R<U,F>中的属性或属性组合。若K→FU, 则K称为R的侯选码(Candidate Key)。 若候选码多于一个,则选定其中的一个做为主码(Primary Key)。 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 30

  31. 码中的属性 主属性与非主属性 包含在任何一个候选码中的属性 ,称为主属性(Prime attribute) 不包含在任何码中的属性称为非主属性(Nonprime attribute)或非码属性(Non-key attribute) 全码 整个属性组是码,称为全码(All-key) 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 31

  32. 范式 范式(Normal Formal)是符合某一种级别的关系模式的集合 关系数据库中的关系必须满足一定的要求。满足不同程度要求的为不同范式 范式的种类 1NF, 2NF, 3NF, BCNF, 4NF, 5NF 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 32

  33. 范式 各种范式之间存在联系: 1NF>=2NF>=3NF>=BCNF>=4NF>=5NF 一个低一级范式的关系模式,通过模式分解可以转换为若干个高一级范式的关系模式的集合,这种过程就叫规范化 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 33

  34. 关系数据理论 问题的提出 规范化 公理系统 模式的分解 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 34

  35. 作业&实验 195页,习题1、2 实验:将期中考试卷中的库建立起来,并且实现查询 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 35

  36. 预习 范式 多值依赖 规范化小结 数据库原理与应用 郑捷 lzj@fjnu.edu.cn www.lzj.name 36

More Related