- 2
- 0
- 约1.41万字
- 约 78页
- 2018-08-14 发布于江苏
- 举报
为了消除冗余和潜在的更新异常,关系数据库的规范化理论为关系模式确定了多种范式。 所谓范式(Noranal Form)是指规范化的关系模式。由于规范化的程度不同,就产生了不同的范式。 从1971年起,E.F.Codd相继提出了第一范式(1NF)、第二范式(2NF)、第三范式(3NF),Codd与Boyce合作提出了Boyce-Codd范式(BCNF)。在1976~1978年间,Fagin、Delobe以及Zaniolo又定义了第四范式。到目前为止,已经提出了第五范式(5NF)。 满足最基本规范化的关系模式叫第一范式,第一范式的关系模式再满足另外一些约束条件就产生了第二范式、第三范式、BC范式等等。每种范式都规定了一些限制约束条件。 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 该关系存在着如下问题: ⑴ 数据冗余大。每一个“所在系”和“系主任姓名”存储的次数等于该系的学生人数乘以每个学生选修的课程门数。 ⑵ 插入异常。一个新系没有招生时,“所在系”和“系主任姓名”无法插入到数据库中,因为在这个关系模式中,主键是(学号,课程名),而这时因没有学生而使得学号无值,所以没有主属性值,关系数据库无法操作,因此引起插入异常。 ⑶ 删除异常。当一个系的学生都毕业了而又没招新生时,删除了全部学生记录,随之也删除了“所在系”和“系主任姓名”。这个系依然存在,而在数据库中却无法找到该系的信息,即出现了删除异常。 ⑷ 更新异常。若某系更换系主任,数据库中该系的学生记录应全部修改。如有不慎,某些记录漏改了,则造成数据的不一致出错,即出现了更新异常。 ? * 2.5.2 数据依赖 1. 函数依赖 2. 平凡函数依赖与非平凡函数依赖 3. 完全函数依赖与部分函数依赖 4. 传递函数依赖 ? ? * 数据之间存在的各种联系现象称为数据依赖(Data Dependency),它是同一关系中属性间的相互依赖和相互制约。 而数据冗余和更新异常等现象与数据依赖有着紧密的关联。 关系规范理论致力于解决关系模式中不合适的数据依赖问题。 在数据依赖中,函数依赖(Functional Dependency,FD)是最基本的一种依赖形式,它反映了同一关系中属性间一一对应的约束,它是关系模式中属性之间最常见的一种依赖关系,也是关系模式中最重要的一种约束。 ? * 函数依赖普遍地存在于现实生活中。例如,描述一个学生的关系,可以有“学号”、“姓名”、“所在系”等几个属性。由于一个学号只对应一个学生,一个学生只在一个系。因而当“学号”值确定之后,姓名及其所在系的值也就被唯一地确定了。 属性间的这种依赖关系类似于数学中的函数。因此说学号函数决定姓名和所在系,或者说姓名和所在系函数依赖于学号,记作:学号→姓名,学号→所在系。 ? * 关系模式的表示 关系模式的完整表示: RU,D,DOM,F R为关系名,U为关系的属性集合 D为属性集U中属性的数据域 DOM为属性到域的映射 F为属性集U的数据依赖集 简化表示:RU,F * 1. 函数依赖 假设R(U)是一个关系模式,U是R的属性集合,X和Y是U的子集。对于R(U)的任意一个可能的关系r,如果r中不存在两个元组,它们在X上的属性值相同,而在Y上的属性值不同,则称“X函数确定Y”或“Y函数依赖于X”,记作X→Y。 注意:X和Y都是属性组,如果X→Y,表示X中取值确定时,Y中的取值惟一确定,即X决定Y或Y函数依赖于Y,X是决定因素。 函数依赖类似于数学中的单值函数,函数的自变量确定时,应变量的值惟一确定。反映了关系模式中属性间的决定关系,体现了数据间的相互关系。 ? ? * 例7:学生(学号,姓名,性别,年龄,班级号) 存在以下的函数依赖: 学号→姓名 学号→性别 学号→年龄 学号→班级号 说明: ⑴ 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。 ⑵ 函数依赖是RDB用以表示数据语义的机制。人们只能根据数据的语义来确定函数依赖。 例:“姓名→年龄”这个函数依赖只有在没有相同姓名人的条件下成立。若有相同姓名的人,则“年龄”就不再函数依赖于“姓名”了。 ? * ⑶ DB设计者可对现实世界作强制规定 例:在学生关系中,设计者可强行规定不允许出现相同姓名的人,因而使函数依赖“姓名→年龄”成立。 当插入某元组时,该元组上的属性值必须满足规定的函数依赖,若发现有相同姓名的人存在,则拒绝插入该元组。 ⑷ 若X→Y
原创力文档

文档评论(0)