数据库范式简单总结

第一范式(1NF):
  • 数据表的每一列是基本列,不可再拆分(下面的表1的结构则不符合第一范式,当然,目前在用的各种数据库也不允许创建这种表)
    表1
  • 不可有重复列

第二范式(2NF):
  • 数据表必须有主键(关键字或组合关键字)以区分各行数据
  • 非关键字段不允许存在对关键字的部分依赖

举例:

假定选课关系表为SelectCourse(学号,姓名,年龄,课程名称,成绩,学分)
关键字为组合关键字(学号,课程名称),决定关系关系如下:

(学号,课程名称) → (姓名,年龄,成绩,学分)

这个数据库表不满足第二范式,因为存在如下决定关系:

(课程名称) → (学分)
(学号) → (姓名,年龄)`

即存在组合关键字中的某字段决定非关键字的情况。
满足2NF的数据表设计示例:

把选课关系表SelectCourse改为如下三个表:
学生:Student(学号,姓名,年龄);
课程:Course(课程名称,学分);
选课关系:SelectCourse(学号,课程名称,成绩)。


第三范式(3NF):
  • 不允许传递依赖
    满足第三范式的数据库表不允许存在如下依赖关系:
    关键字段 → 非关键字段x → 非关键字段y

BC范式(BCNF):
  • 不允许关键字间的依赖

关键字互相决定
(仓库ID) → (管理员ID)
(管理员ID) → (仓库ID)


第四范式(4NF):
  • 消除表中的多值依赖关系

举例:

有这样一个关系 <仓库管理员,仓库号,库存产品号> ,假设一个产品只能放到一个仓库中,但是一个仓库可以有若干管理员,那么对应于一个 <仓库管理员,库存产品>有一个仓库号,而实际上,这个仓库号只与库存产品号有关,与管理员无关,就说这是多值依赖

你可能感兴趣的:(数据库范式简单总结)