110 likes | 267 Views
第 3 章 关系规范化基础. 关系规范化基础. 数据依赖 关系规范化 第一范式 第二范式 第三范式 BC 范式. 数据依赖. 数据依赖 包括 函数依赖和多值依赖 ,我们这本书只讨论有关函数依赖的内容。 函数依赖 涉及到 平凡 函数依赖、 非平凡 函数依赖、 完全 函数依赖、 局部(部分) 函数依赖、 直接 函数依赖和 传递 函数依赖等概念。
E N D
关系规范化基础 • 数据依赖 • 关系规范化 • 第一范式 • 第二范式 • 第三范式 • BC范式
数据依赖 • 数据依赖包括函数依赖和多值依赖,我们这本书只讨论有关函数依赖的内容。 • 函数依赖涉及到平凡函数依赖、非平凡函数依赖、完全函数依赖、局部(部分)函数依赖、直接函数依赖和传递函数依赖等概念。 • 函数依赖的定义:设一个关系为R(U),X和Y为属性集U上的子集,若对于元组中X上的每个值都有Y上的一个惟一值与之对应,则称X和Y具有函数依赖关系,并称X函数决定Y,或称Y函数依赖于X,记作X→Y,称X为决定因素。
平凡与非平凡函数依赖的定义:设一个关系为R(U),X和Y为属性集U上的子集,若X→Y,且X不包含Y,则称X→Y 为非平凡函数依赖,否则,若X包含Y,则称X→Y 为平凡函数依赖。 • 完全与部分函数依赖的定义:设一个关系为R(U),X和Y为属性集U上的子集,若X→Y,同时X的一个真子集X’也能够函数决定Y,即X’→Y,则称X部分函数决定Y,或Y部分函数依赖于X,记作X-P→Y。否则若不存在X的一个真子集X’,使得X’也能够函数决定Y,则称X完全函数决定Y,或Y完全函数依赖于X,记为X-f→Y。
传递与直接函数依赖的定义:一个关系为R(U),X,Y和Z为属性集U上的子集,其中X→Y, Y→Z,但Y→X且Y不包含Z,则存在X→Z,称此为传递函数依赖。 否则称X→Z为直接函数依赖。 • 设一个关系为R(U),X,Y和Z为属性集U上的子集,若X→Y,则存在XZ→YZ和XZ→Y。
函数依赖的一些常用规则 • 自反性:若X包含Y,则存在X→Y。 • 增广性:若X→Y,则存在XZ→YZ。 • 传递性:若X→Y和Y→Z则存在X→Z。 • 合并性:若X→Y和X→Z则存在X→YZ。 • 分解性:若X→Y且Y包含Z,则存在X→Z。 • 伪传递性:若X→Y和WY→Z则存在WX→Z。 • 复合性:若X→Y和Z→W则存在XZ→YW。 • 自增性:若X→Y,则存在WX→Y。
最小函数依赖集的定义:设一个关系为R(U),X和Y为U的子集,若X→Y,并且为完全非平凡函数依赖,同时Y是单属性,则称X→Y为R的最小函数依赖。由R中所有最小函数依赖构成R的最小函数依赖集,其中不含有冗余的传递函数依赖。最小函数依赖集的定义:设一个关系为R(U),X和Y为U的子集,若X→Y,并且为完全非平凡函数依赖,同时Y是单属性,则称X→Y为R的最小函数依赖。由R中所有最小函数依赖构成R的最小函数依赖集,其中不含有冗余的传递函数依赖。 • 候选码的定义:设一个关系为R(U),X为U的一个子集,若X能够函数决定U中每个属性,并且X的任何真子集都不能函数决定U中的每个属性,则称X为关系R的一个候选码。 • 根据一个关系模式的语义,能够求出它的最小函数依赖集,从而能够得到各属性间的函数依赖关系,以及得到所有的候选码。
关系规范化 • 第一范式是一个关系的最低规范化级别,它确保关系中的每个属性都是单值属性,即不是复合属性。 • 第二范式消除了关系中所有非主属性对候选码的部分依赖。若关系中的每个候选码都是单属性,则符合第一范式的关系自然也达到第二范式。 • 第三范式消除了关系中所有非主属性对候选码的部分和传递依赖。
BC范式消除了关系中所有属性对候选码的部分和传递依赖。若一个关系达到了第三范式,并且它只有单个候选码,或者它的每个候选码都是单属性,则该关系自然也达到BC范式。BC范式消除了关系中所有属性对候选码的部分和传递依赖。若一个关系达到了第三范式,并且它只有单个候选码,或者它的每个候选码都是单属性,则该关系自然也达到BC范式。 • 关系规范化的过程就是概念单一化和逐步分解关系的过程,就是把属性间存在的部分和传递依赖逐步转化为关系之间1对1或1对多联系的过程。
通过关系的规范化能够逐步消除数据冗余和操作异常,从而提高数据的共享度,提高插入、删除修改数据安全性、一致性、单一性和灵活性。但规范化程度越高,查询时愈需要进行多个关系之间的连接操作,从而增加了一些查询的复杂性。通过关系的规范化能够逐步消除数据冗余和操作异常,从而提高数据的共享度,提高插入、删除修改数据安全性、一致性、单一性和灵活性。但规范化程度越高,查询时愈需要进行多个关系之间的连接操作,从而增加了一些查询的复杂性。 • 对于一般应用来说,通常是规范化到第三范式就可以了。
实例分析: • 假设一个关系为R(A,B,C,D,E),它的最小函数依赖集为FD={ A→B,C→D, C→E },则该关系的候选码为什么?该关系属于第几范式,请简要地说明理由。若要规范化到高一级的范式,则将得到什么样的关系。 • 解答:该关系的候选码为(A,C)。 • 因为该关系中存在有非主属性对候选码的部分函数数依赖,即A→B,C→D, C→E,其中B,C和E只依赖于候选码的部分A或C,所以该关系只属于第一范式。 • 若要规范化到高一级的范式,则需要将关系R根据属性对候选码的部分依赖拆分成三个关系,它们分别为: R1(A,B)和R2(C,D,E), R3(A,C),这三个关系达到了BC范式的要求。