数据库系统概论4关系模式规范化
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1 关系模式的设计问题
考核要求:达到“识记”层次
知识点:一些基本概念
关系数据库是以关系模型为基础的数据库,它利用关系来描述现实世界。
一个关系既可以用来描述一个实体及其属性,也可以用来描述实体间的联系。关系实质上就是一张二维表,表的行称为元组,列称为属性。关系是元组的集合,关系模式就是这个元组集合的描述。
关系模式是用来定义关系的,一个关系数据库包含一组关系,也就是包含一组二维表,这些二维表结构体的集合就构成数据库的模式(也可以理解为数据库的结构)。
( 外延和内涵的概念)
关系数据库设计理论包括三个方面内容:数据依赖、范式、模式设计方法。
核心内容是数据依赖。
关系模式的存储异常:数据冗余、更新异常、插入异常和删除异常
关系模式的设计:分解成规范化的数据库模式。
2 函数依赖(FD)
2.1 函数依赖的定义
考核要求:达到“领会”层次
知识点:函数依赖的定义
设有关系模式R(A1,A2,...An)或简记为R(U),X,Y是U的子集,r是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1[X]=t2[X]导致t1[Y]=t2[Y],则称X函数决定Y,或Y函数依赖于X,记为X→Y。X→Y为模式R的一个函数依赖。
该定义理解如下:有一张设计好的二维表,X,Y是表的某些列(可以是一列,也可以是多列),若在表中的第t1行,和第t2行上的X值相等,那么必有t1行和t2行上的Y值也相等,这就是说Y函数依赖于X。
比如,有如下二维表
在表中,凡成绩相同的,对应的“成绩等级”也必是相同的,因此,“成绩等级”函数依赖于"成绩"。但是反过来则不成立。
Notice:
(1)在这张表中,任何一行的关系均应符合函数依赖的条件,如果有一行不符合函数依赖的条件,则函数依赖对于这个关系就不成立。
(2)函数依赖是否成立是不可证明的,只能通过属性的含义来判断.
2.2 函数依赖的逻辑蕴涵
考核要求:达到“识记”层次
知识点:逻辑蕴涵和闭包的概念
设F是关系模式R的一个函数依赖集,X,Y是R的属性子集,如果从F中的函数依赖能够推
出X→Y,则称F逻辑蕴涵X→Y,记为F|=X→Y.
比如描写学校中各系的属性有:系名、系号,系办公地点,人数等,如果"系号→系名" 成
立,同时已知 "系名→系办公地点"成立,那么, "系号→系办公地点" 也是成立的。
也就是,设F={系号(Y)→系名(Z),系名(X)→系办公地点(Y)},则F逻辑蕴涵 "系号(X)→
系办公地点(Z)"。
函数依赖的闭包F+是指被F逻辑蕴涵的函数依赖的全体构成的集合
2.3 码
考核要求:达到“领会”层次
知识点:码和FD的关系
码是唯一标识实体的属性集。
码和函数依赖的关系满足以下两个条件:
设关系模式R(A1,A2...An),F是R上的函数依赖集,X是R的一个子集,如果(1)X→A1A2...An∈F+
(X能够决定唯一的一个元组)
(2)不存在X的真子集Y,使得Y→A1A2...An成立
(X能满足(1)但又没有多余的属性集)
则X就是R的一个候选码。
包含在任何一个候选码中的属性称为主属性,不包含在任何码中的属性为非主属性(非码属性),注意主属性应当包含在候选码中。
3 关系模式的范式
3.1 第一范式
考核要求:达到“领会”层次
知识点:1NF的定义
1NF:第一范式——即关系模式中的属性的值域中每一个值都是不可再分解的值。
如果某个数据库模式都是第一范式的,则称该数据库模式是属于第一范式的数据库模式。
比如有一个关系 study={学号,课程},若有这样几行记录:
这时的第三条记录就表示本关系模式不是1NF的,因为课程中的值域还是可以分解的,它包括了两门课程。
如果改为:
则成为1NF的关系。
3.2 第二范式
考核要求:达到“领会”层次知识点:2NF的定义
如果关系模式R为第一范式,并且R中每一个非主属性完全函数依赖于R的某个候选码,则称为第二范式模式。
首先温习、理解“非主属性”、“完全函数依赖”、“候选码”这三个名词的含义。
(1)候选码:可以唯一决定关系模式R中某元组值且不含有多余属性的属性集。
(2)非主属性:即非码属性,指关系模式R中不包含在任何建中的属性。
(3)完全函数依赖:设有函数依赖W→A,若存在X W,有X→A成立,那么称W→A是局部依赖,否则就称W→A是完全函数依赖。
在分析是否为第2范式时,应首先确定候选码,然后把关系模式中的非主属性与码的依赖关系进行考察,是否都为完全函数依赖,如是,则此关系模式为2NF。
如果数据库模式中每个关系模式都是2NF的,则此数据库模式属于2NF的数据库模式。
学号姓名课程成绩
99001Lily C语言91
99002Rose数据结构82
99003Keven C语言77
99003keven数据结构86
其中,(学号,课程)为候选码;“成绩”对码的函数依赖为完全函数依赖,而“姓名”只依赖于“学号”,对码的依赖为部分函数依赖。所以,该关系模式不符合2NF。如果将该模式分解为以下两个关系:
student={学号,姓名}
study={学号,课程,成绩}
则分解后的两个关系模式均为2NF
3.3 第三范式
考核要求:达到“领会”层次
知识点:3NF的含义