一、函数依赖
- 函数依赖:X—>Y,即X函数决定Y,或Y函数依赖于X。
- 平凡函数依赖:X—>Y,但X包含Y (Y包含于X)。
- 例:(学号,课号)—>课号 #课号存在于 (学号,课号) 之中。
- 非平凡函数依赖: X—>Y,但X不包含Y。
- 例:(学号,课号)—>成绩 #成绩不存在于 (学号,课号) 之中。
- 完全函数依赖:X—>Y,对于X的任意一个真子集X‘都有X‘不能函数决定Y。
- 例:(学号,课号)—>成绩 #只有学号或姓名无法决定成绩,二者缺一不可。
- 部分函数依赖:X—>Y,存在X的某一个真子集X‘能够函数决定Y。
- 例:(学号,课号)—>姓名 #只有学号就能决定姓名,课号为冗余项。
- 传递函数依赖:X—>Y,X不包含Y,Y不函数决定X,Y—>Z,即Z对X传递函数依赖。
- 例:学号—>系号,(系号不函数决定学号) ,系号—>系主任,则系主任传递函数依赖于学号。
二、关系模式的规范化
- 满足第一范式条件的关系模式(1NF):关系模式 R的每一个属性都是原子域,元组的每一个分量都是不可分割的数据项。
- 满足第一范式条件的关系模式(2NF):关系模式 R∈1NF ,每一个非主属性完全函数依赖于码。
- 满足第一范式条件的关系模式(3NF):关系模式 R∈2NF ,每一个非主属性都不传递依赖于码。
- 满足第一范式条件的关系模式(BCNF):关系模式 R∈3NF ,对于每一个非平凡函数依赖X—>Y,都有X包含码。(在函数依赖的范畴内,BCNF达到了最高的规范化程度)
- 满足第一范式条件的关系模式(4NF):关系模式 R∈BCNF ,对于每一个非平凡的多值依赖X—>—>Y(Y?X),都有X包含码。(限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖)
规范程度层次:4NF?BCNF?3NF?2NF?1NF
三、“好的”关系数据库系统应具有的特点
- 适度减少数据冗余。
- 对关系模式的属性间允许的数据依赖加以限制,减少表中非主属性间存在的函数依赖,避免更新异常问题。
- 非主属性完全函数依赖于码。
- 非主属性不传递依赖于码。
- 关系明确,表与表之间主外键设置明确,表名称明确。
- 选择合理的数据库引擎,查询操作较多的与增删改操作较多的数据库分别使用不同的引擎。
关系数据库 · 规范化理论
原文:https://www.cnblogs.com/wsyjlly/p/10387413.html