日期:2014-05-16  浏览次数:20415 次

2011.2.26数据库设计范式小结
又准备开始找工作了,根据以往经验,数据库范式是面试时较为常见的问题,前些天重新翻了下资料,今晚简单总结一下。

在数据库设计时,我们鼓励设计满足一定的规则,即是所谓的数据库范式,已确保消除数据库的数据冗余、更新异常、插入异常、删除异常。数据库范式有第一范式,第二范式,第三范式,BCNF范式....一般情况下,我们主需要关注到第三范式

第一范式要求数据库表中的属性具有原子性,即他的属性列不能是多列。这个无需理会,只要是关系型数据库都满足此范式。

第二范式要求数据库表的非关键字段完全依赖于任意候选关键字段,既不存在依赖于关键字段的某部分的非关键字字段。

第三范式要求消除数据库表的传递依耐性,即不存在非关键字字段传递函数依赖于关键字段。

BCNF范式是修正的第三范式,要求不存在任何字段传递依赖于关键字段。



然后举下例子吧,拿个简单的企业人事管理系统来做例子,数据有 员工ID,员工资料,部门ID,部门资料,任务ID,任务资料

满足第一范式
(员工ID,员工资料,部门ID,部门资料,任务ID,任务资料)

满足第二范式
(员工ID,员工资料,部门ID,部门资料)
(员工ID,任务ID)
(任务ID,任务资料)

满足第三范式
(员工ID,员工资料,部门ID)
(部门ID,部门资料)
(员工ID,任务ID)
(任务ID,任务资料)

当然,实际设计中也不一定要做到满足这些范式,具体情况具体分析,下次再写(*^__^*)