8数据库设计与规范化理论
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.1 数据依赖对于关系操作的影响
1如果一个系刚好成立但还没有招生,怎样表示存在这 个系呢?若插入该系的信息(系名,系负责人),学 生信息及选课信息如何表达?2又若虽然有学生,但还 没有成绩,如何表达? ——插入异常 反之,1若某个系的学生全部毕业了,但系还要保留, 这样若删除所有学生的记录,系的信息将不复存在。2 又若某学生只选了一门课,现在这门课也不选了,删 除时会删除学生的信息。 ——删除异常 另外,如:每条记录都有系名,系领导的信息,浪费 存储,另外换系领导后,所有的记录都要一起更新。 ——更新异常
1.1 数据依赖对于关系操作的影响
假设要建立一个学生数据库,要描述的对象包括:学 生(Sno),系(dept),系负责人(deptHead),课程 (Cname)和成绩(G)。于是对应的属性集合为: U= {Sno,Sdept, deptHead,Cname,G} 由实际中的知识得知
一个系有若干学生,一个学生只属于一个系。 Sno->Sdept 一个系只有一名负责人(正职)。 Sdept→ deptHead 一个学生可选修多门课程,每门课程有若干学生选修, 每个学生选修的每门课程有一个成绩。 (Sno,Cname)→G
第八章 化理论
数据库设计与规范
张建英
单位:大连理工大学,电信学院 电话:84706003-3820 E-mail:zhangjy@ zhangjianying@
内容提要
1 规范化设计
1.1 为什么要进行规范化设计 1.2 规范化设计与1NF、2NF、3NF、4NF
1.6 多值依赖
设R(U)是属性集U上的一个关系模式。 X,Y,Z是U的子集,且Z=U-X-Y。关系模式 R(U)中多值依赖X->->Y成立,当且仅当对 R(U)的任一关系r,给定的一对(x,z)值,有 一组Y的值,这组指仅仅决定与X值而与Z 值无关,独立于Z。
对于前面的关系: 当(课程C,参考书B)确定时有一组教员T与 之对应,而这组教员T只与课程C有关。因此 教员T多值依赖于课程C。即,C->->T。
问题1:怎样进行模式分解,什么样的分解都是可 以的吗?有模式合成吗? 问题2:属于2NF的模式,还会产生数据冗余的问 题吗?
1.5 第三范式3NF
前面的关系模式S-L(Sno,Sdept, deptHead)虽然属于 2NF,但还会有数据冗余的问题,进一步消除的办 法是规范化至3NF。 关系模式 R〈U,F〉中若不存在这样的码 X,属 性组 Y 及非主属性Z(Z Y)使得X→Y,(Y X) Y →Z 成立,则称R〈U,F〉∈3NF。
什么是数据依赖?为何在关系模式中要考虑它?它对 于关系有何影响?
数据依赖是关系中的属性值之间的相互关系。它是现实世 界属性间相互联系的抽象,是数据内在的性质,是语义的 体现。现在,已发现许多种数据依赖。 例1:在某学校的学生的关系中,只要学号确定了,他 (她)的姓名就确定了。这相当于对于一个由学号到姓名 的映射name=f(stdno)。这样的数据依赖称为函数依赖 (Functional Dependency)。记为:stdno->name; 例2:对于一个仓库保管关系(保管员,物品,仓库) 来说,实际中要求,对于任意一个仓库,若一个保管员要 么能保管所有的物品,要么都不能保管。这时当仓库确定 时,与其保管员对应的物品是多个,这种数据依赖称为多 值依赖。
1.6 多值依赖
多值依赖的又一定义: 在R(U)的任意关系r中,如果存在元组t,s,使得 t[X]=s[X],那么就必存在元组w,v ∈,(w,v可以与 s,t相同),使得w[X]=v[X]=t[X],而 w[Y]=t[Y],w[Z]=s[Z],v[Y]=s[Y],v[Z]=t[Z](即交换 s,t元组的Y值所得的两个新元组必在r中),则Y多值 依赖于X,记为X->->Y。这里,X,Y是U的子集, Z=U-X-Y。 若Z为空集,X->->Y称为平凡的多值依赖。 函数依赖有时称相等产生依赖,是属性(组)的 一个值依赖于一个属性(组)的值;多值依赖可 一个 以称为元组产生依赖,是属性(组)的一组 一组值依 一组 赖于一个属性(组)的值。
2 数据库设计
2.1 2.2 2.3 2.4 2.5 2.6 需求分析 概念设计 逻辑设计 物理设计 数据库实施与试运行 数据库运行与维护
1.1 数据库设计
需求分析
用户需求,数据库必须做什么?
概念设计
高度描述数据库干什么?(用ER图)
逻辑设计
转化为具体DBMS数据模型。 模式优化:规范化
物理设计
设计索引,布置文件、表等
例:学生S-教师T-课程J 关系模式,一个教师 只教一门课;每门课有若干教师,某学生选 一门课就对应一个固定的教师。 STJ(S,T,J)的函数依赖为(S,J)->T;T>J;(S,T)->J;
1.5 3NF与BCNF
3NF与BCNF是在函数依赖的条件下对模式 分解所能达到的分离程度的测度。 BCNF:关系模式R<U,F>∈1NF,若X→Y且 YX时X必含有码,则 R ∈BCNF。即:若 R的每个决定因素都是码,则R属于BCNF。 3NF的‘不彻底’性表现在没有消除主属 性对于码的依赖关系,而BCNF解决了这一 点,所以BCNF比3NF的规范化程度更高, 即3NFBCNF 。
若R∈1NF,且每一个非主属性完全函数依赖 于码,则R∈2NF 。 例如前面的关系模式
S-L-C(Sno,Sdept, deptHead,Cno,G )的码为(Sno,Cno)
函数依赖有:
对于G: (Sno,CNO) G 对于sdept: Sno->Sdept, (sno,Cno)- sdept 对于deptHead: Sno-> deptHead, (sno,Cno)- deptHead
1.6 多值依赖与4NF
多值依赖是除函数依赖外的常见的又一种数据依 赖。通过了解多值依赖,才进一步定义4NF。 例:授课关系C-T-B(C,T,B):一门课多个老师讲, 且使用同一套教材,一个老师可以讲多门课。
课程C 物理 数学 计算数学 … 教师T 李勇 王军 李勇 张平 张平 周峰 … 参考书B 普通物理 光学物理 物理习题集 数学分析 微分方程 高等代数 数学分析 … …
数据库的实施与运行维护
1.1 为什么要对关系模式规范化
在数据库的设计中,如何构造一个适合于 它的数据模式,即应该构造几个关系模式, 每个关系由哪些属性组成等。这是数据库 设计的问题。 实际上任何一种数据库应用系统,不论是 层次的、网状的还是关系的,都会遇到如 何构造合适的数据模型及逻辑结构的问题。 规范化理论对于一般的数据库逻辑设计同 样具有理论上的意义。
1NF2NF3NF BCNF 4NF 5NF
1.2模式分解要求
令C为数据库上的约束集。如果对模式R上满足C 的所有合法关系r,均有
r= ∏R1(r) ∏R2(r) … ∏Rn(r),
则我们说关系模式R的分解{R1,R2…Rn}为无损 连接分解。 无损连接
将一个关系分解成若干小的关系时,保证分解无损是 很重要的。 令R为一个关系模式,F为R上函数依赖集,R1与R2为 R的分解。该分解为R的无损连接分解只要F+中至少有 如下函数依赖中的一个: R1 ∩R2 →R1 R1 ∩R2 →R2
1.1 关系的形式化定义
回顾下在关系模型一章中关系模式的定义: 对关系的描述称为关系模式。可以形式化的表 示为:
R(U,D,dom,F)
其中:
R:关系名 U:组成关系的属性名集合 D:属性来自的域 dom:属性到域的映射 F:属性间数据的依赖关系
简记:
R(U),或者R(A1,A2,…An)
1.1 问题
结论1: 非主属性不部分依赖于码。(Y是X的真子集) 结论2: 非主属性不传递依赖于码。
若R ∈3NF,则每个非主属性既完全依赖也直接依赖 于码。 注:可以证明: 2NF3NF
1.5 Boyce-Codd范式BCNF
若一个关系模式达到3NF,则消除了非主 属性对于码的部分依赖与传递依赖。注意: 2NF与3NF讨论的是非主属性与码的关系。 那么在多码情况下,主属性之间函数依赖 关系怎样,对于插入、删除还会造成异常 及数据冗余吗?
1.2 范式
范式即关系达到某种要求的程度,可以理 解为符合某一种级别的关系模式的集合, 如果R是x范式则可以写为R∈xNF。
1971~1972,E.F.Codd,1NF,2NF,3NF 1974,Codd和Boyce,BCNF 1976,Fagin,4NF 后来,5NF
各种范式使关系达到的(规范化)程度是不 一样的:
1.3 第一范式1NF
如果关系模式R的所有属性域都是原子的, 称R属于1NF,记为:R ∈ 1NF。
注意:在关系模型中就假设所有的属性域都是原子 的。即不能出现表中表的情况。
这是关系模式的基本要求,后面关系模式的 讨论都是满足这一要求的。
*注:在面向对象的数据库中,可以存在非原子的域。
1.4 第二范式2NF
问题:怎样才能不会发生呢?问题源于关系的模式设计有问题, 造成数据冗余,即没有考虑好数据依赖,从而没有设计成好的、 规范的模式。
1.2 规范化
1971年Edgar Codd提出了规范化理论,规范化理论 研究已经取得了很多的成果。 是根据属性数据依赖的情况来区分关系规范化的程 度(1NF,2NF,3NF,BCNF,4NF,PJNF…)的。 函数依赖是最常见的一种数据依赖。
函数依赖的公理系统
如何在给定函数依赖集的情况下,方便的 计算它的闭包呢? Armstrong公理系统
基本定律:
自反律:若α包含β,则α→ β 增补律:若 α→ β,则αγ→ βγ 传递律:若α→ β及 β →γ,则α→ γ
扩充定律:
合并律:若α→ β及α→ γ,则α→ βγ 分解律:若α→ βγ,则α→ β及α→ γ 伪传递律:若α→ β及γβ →δ,则αγ→ δ
1.4 第二范式2NF
如在前面讨论的一样,不好的关系模式会产生数 据冗余从而导致插入异常、删除异常、更新异常 等问题。 缓解上述问题的办法:将不属于2NF的模式分解 为两个或多个模式。
例如:上面的模式可分解为: SC(Sno,Cno,G ) S-L(Sno,Sdept, deptHead)。可以验证两个模式都属于2NF。
1.2模式分解要求
保持依赖
令F’为模式R的函数依赖集合F在分解 (R1,R2…Rn)上的投影之后的并集。若F’+=F+, 则称该分解为保持依赖的分解。
例1:R(ABCD) F:A->B,A->CD,C->D R1(AB),R2(ACD),则该分解能保持依 赖。 例2:R(ABCD) F:A->B,A->CD,C->D R1(AC),R2(ABD),则该分解不能保持 依赖。
直接函数依赖与传递函数依赖
在R(U)中,如果X->Y(Y X),Y X,Y->Z,则称Z对X传 递函数依赖。 Y X:是为了消除直接的函数依性的地位是不 一样的。 候选码(Candidate key):设K为R<U,F>中的属 性或属性的组合,若K U,则称K为R的候选码。 若候选码多于一个,则选定其中的一个为主码 (Primary key)。 包含在任一个候选码中的属性,叫做主属性。不 包含在任何码中的属性称为非主属性。 关系模式R中属性或属性组X并非R的码,但X是 另外一个关系模式的码,则称X是关系R的外码 (Foreign key)。
函数依赖:设R(U)是属性集U上的关系模式,X,Y是U的子 集。若对于R(U)的任意一个可能的关系r,r中不可能存在两 个元组在X上的属性值相等,而在Y上的属性值不等,则 称X函数确定Y或Y函数依赖X。记作 X→Y。 函数依赖:r中任意两个元组r,s,若t[X]=s[X],则 t[Y]=s[Y],则称X→Y。
1.2 函数依赖
平凡的函数依赖与非平凡的函数依赖:
X->Y,但YX则称X->Y是平凡的函数依赖。 X->Y,但YX则称X->Y是非平凡的函数依赖。
完全函数依赖与部分函数依赖
在R(U)中,如果X->Y,并且对于X的任何一个真子集X’,都有 X’Y,则称Y对X完全依赖,记作:XY。 若X->Y但Y不完全依赖于X,则称Y对X部分函数依赖,记作: XY。