数据库数据规范化

Codd博士定义了6个范式来规范化数据库,范式由小到大来约束,范式越高冗余越小,但表的个数也越多。实验证明,三范式是性价比最高的。
2.1 第一范式:确保每列原子性
第一范式确保每个字段不可再分
数据库数据规范化

如下表设计是否合理?
数据库数据规范化
不合理。不满足第一范式,上课时间可以再分
数据库数据规范化
地址包含省、市、县、地区是否需要拆分?
如果仅仅起地址的作用,不需要统计,可以不拆分;如果有按地区统计的功能需要拆分。
2.2 第二范式:非键字段必须依赖于键字段
一个表只能描述一件事
数据库数据规范化
如下表设计是否合理?
数据库数据规范化
2.3 第三范式:消除传递依赖
在所有的非键字段中,不能有传递依赖
数据库数据规范化
下列设计是否满足第三范式?
数据库数据规范化
不满足,因为语文和数学确定了,总分就确定了。
上面的设计不满足第三范式,但是高考分数表就是这样设计的,为什么?
高考分数峰值访问量非常大,这时候就是性能更重要。当性能和规范化冲突的时候,我们首选性能。这就是“反三范式”。

给定关系模式R,U={A,B,C},F={AB→C,C→B}。
C→B,AC→AB,而AB→C,所以AC→C,关系R有2个候选关键字AC和AB。包含在任何候选码中的诸属性都是主属性,A、B、C都包含在候选码中,因此主属性有3个,非主属性有0个。

数据库数据规范化

数据库数据规范化