关系数据理论之第二范式

对于一个关系,既然其中的属性值(也就是数据)能够组合到一起,则它们之间就必须会有一定的依赖关系,而这就是数据依赖,数据依赖是一个关系内部属性与属性之间的一种约束关系。例如学校对学生信息的管理中,学号是学生存在的表示,这个学生的信息(例如姓名、专业、年级、成绩等)的组合使用“学号”这个关键属性进行约束的,所以学生的信息属性值对学号具有依赖关系。其中,主要的数据依赖有两种:函数依赖和多值依赖。函数依赖的一般定义如下:

假设R(U)是属性集U上的关系模式,X,Y是U的子集。对于R(U)的任意一个关系r,r中不可能存在这种情况:就是r中的两个(多个)元组在X上的属性值相等,而在Y上的属性值不等。则称X函数确定Y或Y函数依赖X,记作:X—>Y。例如:学生表中如果有两个元组的学号信息是相同的,那么这两个元组中的姓名信息就不可能不同;但是,如果两个元组的姓名信息是相同的,则这两个元组的学号信息未必相同(有学生同名的情况),这时候学号信息函数确定姓名信息,或者姓名信息函数依赖学号信息。X 和 Y之间的函数依赖关系有:

非平凡的函数依赖:X函数确定Y,但Y不包含于X(也就是说,Y中有的元素而X是没有的),称Y对X非平凡函数依赖。

平凡的函数依赖:X函数确定Y,但Y包含于X(也就是说,Y中所有的元素在X中都有),称Y对X平凡函数依赖。

完全函数依赖:X函数确定Y,但是没有任何一个X的真子集 X‘ 能够满足X‘ 函数确定Y,称Y对X完全函数依赖。

码的概念:若K是R(U)中的属性或属性组合,如果属性集合U中的所有属性都是完全函数依赖于K,则称K是R的候选码,如果有多个候选码,则可任选一个,作为R的主码。

总结了那么多数据依赖的内容,下面到了第二范式的总结阶段,第二范式的定义是:如果关系R属于第一范式,且每一个非主属性全部完全函数依赖于码,这该范式属于第二范式。



例如关系模式S-L-C(Sno,Sdept,Sloc,Cno,Grade),其中Sloc为学生的住处,且每个系(Sdept)的学生住在同一个地方,给定S-L-C的码是(Sno,Cno)。函数依赖关系有:

Grade完全函数依赖(Sno,Cno),因为Sno函数确定Sdept,所以Sdept部分函数依赖(Sno,Cno),同样Sloc也是部分函数依赖(Sno,Cno),因此关系S-L-C不属于第二范式。不属于第二范式的关系模式会产生以下几个问题:

1、插入异常,如要插入一个学生Sno=A993,Sdept=PHY,Sloc=BLD2,但是该学生还未选课,没有Cno,这样元组就不能插入到关系表中。

2、删除异常,如学生A993选了一门课C3,现在这门课他不想要了,想要删除,但由于C3是主属性,删除C3就得删除整个元组,使得A993的其他信息也被删除了,从而造成删除异常。

3、修改复杂,如果某个学生从MA系转到CS系,原本只需修改此学生元组中的Sdept分量,但因S-L-C中还有该系的住处Sloc属性,学生改变住处,因而还必须修改元组中的Sloc分量。

解决方案就是模式分解,将原来的模式分解为SC(Sno,Cno,Grade)、SL(Sno,Sdept,Sloc)。这样就可以达到第二范式了。

时间: 2024-10-23 04:05:42

关系数据理论之第二范式的相关文章

数据库 chapter 6 关系数据理论

第六章 关系数据理论 本章详细讲解关系规范化理论,它既是关系数据库的重要理论基础也是数据库设计的有力工具,规范化理论为数据库设计提供了理论的指南和工具. 规范化理论虽然是以关系模型为背景,但是它对于一般数据库逻辑设计同样具有理论上的意义. 一个关系模式应当是一个五元组: R(U,D,DOM,F) 1)       关系名R,它是符号化的元组语义: 2)       一组属性U: 3)       属性组U中属性所来自的域D: 4)       属性到域的映射DOM: 5)       属性组U上

数据库--关系数据理论

关系数据理论 本文为复习数据库整理的资料. 参考: https://blog.csdn.net/prdslf001001/article/details/80336835 https://www.bilibili.com/video/av73467859/ https://www.bilibili.com/video/BV1eE411a79r/ 一.数据冗余导致的问题 1)冗余存储:信息被重复存储,导致浪费大量存储空间. 2)更新异常:当重复的信息的一个副本被修改,所有副本都必须进行同样的修改.

关系数据理论

写在前面,???∈?符号的区分: ?:包含于 ?:包含于或等于 ?:不包含于或等于 ∈:属于   ?:不属于 ?和∈的区别:"包含于"用于说明集合与集合之间的关系,"属于"用于说明集合与元素之间的关系. 什么是好的关系模式(表结构)? 不好的关系模式会有什么问题? 怎样把不好的关系模式转化为好的? 这就是下面要学的──关系数据库的规范化理论 本节要点: 函数依赖 码 范式 1NF 2NF 3NF 首先看4个定义. 1         函数依赖 定义1: 设R(U)是

关系数据理论之第一范式

常用的数据库的逻辑数据模型有:层次模型.网状模型.关系模型.面向对象模型.对象关系模型:数据模型是从计算机的观点出发对数据建模的,主要用于DBMS的实现.数据模型通常由数据结构.数据操作.完整性约束三部分组成.各个含义如下: 数据结构:描述数据库的组成对象以及对象之间的联系.它描述的内容有两类:一类是与对象的类型.内容.性质有关,例如关系模型中的域.属性.关系等:一类是与数据之间联系有关的对象,例如网状模型中的系型(Set Type).数据库系统中,人们常按照数据结构的类型来命名数据模型. 数据

数据库系统概论(一)关系数据理论--关系模式

一个关系模式可能存在的问题 1.数据冗余度过大,浪费存储空间 系主任张明不需要重复出现,可以另建立中间表存储各系主任信息 2.更新异常 更新时维护数据完整性代价过大,更换计算机系主任时必须修改每一个学生元祖 3.插入异常 该插入的数据插不进去 4.删除异常 不该删除的信息也删掉了,如把所有学生信息删除,则系主任的信息也被一并删除了 关系模式问题的原因 存在不合理的数据依赖 解决方式是把单一模式分解成多个模式 数据依赖 属性集合U = {Sno,Sdept,Mname,Cno,Grade} U的函

4 关系数据理论

一.函数依赖 设R(U)是属性U上的关系模式,X,Y是U的子集,若对于R(U)的任意一个可能的关系r,r中不可能存在另个元祖在X上的属性值相等,而在Y上的属性值不等,则成X函数确定Y或Y函数依赖与X. 1.完全函数依赖 在R(U)中,如果X->Y,并且对X的任何一个真子集X,都有X不依赖于Y,则称Y对X完全函数依赖. 2.部分函数依赖 在R(U)中,如果X->Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖. 3.传递函数依赖 在R(U)中,如果X->Y,Y不依赖与X,Y依赖于Z,则称

《数据库系统概论》 -- 6关系数据理论

关系模式五元组 R<U,D,DOM,F> R--关系名 U--属性(组) D--U中的属性所来自的域 DOM--属性到域的映射 F--U中的数据依赖(函数依赖.多值依赖.连接依赖等) 数据依赖不良会带来的危害 数据冗余 更新异常 插入异常 删除异常 函数依赖 概念         X,Y是R的子集,不存在任意两个元组在X上的取值相等,而在Y上的取值不等,称Y函数依赖于X,记作X→Y. 关系举例         Student(Sno,Sname,Cno,Cname,Sdept,Dept_man

2016.6.14 关系数据理论之范式

(1)2NF(没有部分依赖) **若R属于1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R属于2NF. (2)3NF(非主属性不可以传递依赖于码) **设关系模式R<U,F>属于1NF,若R中不存在这样的码X,属性组Y及非主属性Z使得X->Y,Y->Z成立,则称R<U,F>属于3NF. **每一个非主属性既不传递依赖于码,也不部分依赖于码. (3)BCNF(扩展的第三范式) **没有非主属性 **关系模式R<U,F>属于1NF,若X->Y且Y

数据库系统之关系数据理论——多值依赖到底是什么

自己在家捣鼓了很久还是没弄明白什么是多值依赖,今天网课老师留了题“举出三个多值依赖的例子”,最后看了老师的例子,听了讲解,终于弄明白了怎么判断,怎么举例,什么是多值依赖. 先放上多值依赖的定义: 设R(U)是属性集U上的一个关系模式.X,Y,Z是U的子集,并且Z=U-X-Y.关系R(U)中多值依赖X→→Y成立,当且仅当对R(U)的任一关系r,给定的一对(x,z)值,有一组Y的值,这组值仅仅决定于x的值而与z值无关. 看概念是很抽象生硬,不便于理解的,通过几个例子来让我们进行最通俗的讲解. 例1: