2.数据库设计
2.1、数据规范化
建⽴科学的,规范 的数据库就需要满⾜⼀些规则来优化数据的设计和存储,这些规则就称为范式。⽬前关系数据库有六种范式:第⼀范式(1NF)、第⼆范式(2NF)、第三范式(3NF)、巴斯-科德范式 (BCNF)、 第四范式(4NF)和第五范式(5NF,⼜称完美范式)。 满⾜最低要求的范式是第⼀范式(1NF)。在第⼀范式的基础上进⼀步满⾜更多规范要求的称为第 ⼆范式(2NF), 其余范式以次类推。⼀般说来,数据库只需满⾜第三范式(3NF)。
2.2、 1NF:
在符合第一范式(1NF)表中的每个域值只能是实体的一个属性或一个属性的一部分。简而言之,第一范式就是无重复的域。
2.3、2NF:
在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)
第⼆范式的特点: 1. ⼀张表只描述⼀件事情。 2. 表中的每⼀列都完全依赖于主键。
2.4、3NF:
在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)
函数依赖: 通过一个属性(组)A, 能确定唯一的B属性的值, 称B函数依赖于A
例如: 学号 -> 姓名 学号+课程名称 -> 分数
部分函数依赖: 通过属性组A中的部分属性, 就能确定唯一的B属性的值, 称B部分函数依赖于A
例如: 学号+课程名称 -> 姓名
完全函数依赖: 通过属性组A中的每一个属性一起确定唯一的B属性的值, 称B完全函数依赖于A
例如: 学号+课程名称 -> 分数
传递依赖: 通过属性(组)A确定唯一的B属性的值, 再通过B属性, 确定唯一C属性的值, 称C 传递依赖于A
例如: 学号 -> 系名 -> 系主任
主码: 也叫主属性, 表中其他所有属性的值, 都能通过一个属性(组)来确定, 这个属性(组)就是主码
例如: 学号+课程名称
原表:
NF1:
NF2:
NF3: