数据库设计的三大范式

1.第一范式:指的是数据库表的字段不可再分,都是单一属性。所谓单一属性,就是由基本属性构成,如整形、字符型、日期型、逻辑型等。现在的数据库管理工具是不可能允许你设计出违背第一范式的表的。

 

2.第二范式:指的是不存在非关键字段 对任一候选关键字段的部分函数依赖关系 ,部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况,也就是说非关键字段与任一候选关键字之间是完全函数依赖关系。如有一个选课关系表

SelectCourse(学号,姓名,年龄,课程名称,成绩,学分),关键字为组合关键字(学号,课程名称),因为存在

(学号,课程名称)-》(姓名,年龄,成绩,学分),但此表不满足第二范式,因为存在部分函数依赖关系:

(课程名称)->(学分)

(学号)->(姓名,年龄),即存在组合关键字中的字段决定非关键字的情况。

带来的问题有:数据冗余、插入异常、删除异常、更新异常。

 

3.第三范式:在第二范式基础上,不存在非关键字段任一候选关键字段传递函数依赖关系 ,所谓传递函数依赖关系,指的是“A->B->C"的情况,则C传递依赖于A,不满足第三范式的表存在如下关系:关键字段->非关键字段x->非关键字段y。

如有学生关系表Student(学号,姓名,年龄,所在学院,学院地点,学院电话),关键字为单一关键字”学号”,这符合第二范式,因为不存在部分函数依赖关系,但是不满足第三范式,因为存在如下决定关系:

(学号)->(所在学院)->(学院电话,学院地点),也会带来数据冗余、更新异常、插入异常、删除异常的问题。应该拆成两个表《学生》,《学院》。

 

一般来说,掌握上面三种范式即可。

你可能感兴趣的:(数据库设计)