欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据库范式 博客分类: 技术综合 DB范式

程序员文章站 2024-03-14 18:58:23
...

回想一下,数据库已经学过两三年左右了,期间虽然也会断断续续的使用不同的数据库系统,但具体用的时候都直接通过是否冗余直接对设计的结果进行判断了,所以对数据库范式的具体规定似乎忘的差不多了,正好借着这两天有空重新复习了一下。

 

  • 1NF: 数据库表中的字段都是单一属性的,不可再分。单一属性由基本类型构成,包括整形、实数、字符型、逻辑性、日期型等。例如电话的字段就有可能不符合1NF,因为每个人可能拥有一个以上的电话记录,如家庭电话、办公电话等等。
  • 2NF: 在符合1NF的基础上,没有部分主键功能决定其他属性的现象,也就是说主键之外的其他属性都完全功能依赖于主键。如关系(学号,姓名,年龄,课程名称,成绩,学分)中,主键为(学号,课程名称),而课程名称->学分,所以该关系不满足2NF。
  • 3NF: 在第二范式的基础上,数据表中如果不存在非关键字段对任意候选关键字段的传递依赖,则符合3NF。例如满足3NF的数据库表不应该存在如下关系:关键字段->非关键字段->非关键字段。 如关系(学号,姓名,学院,学院地点)中,学号为主键,其中存在学号->学院->学院地点,因而其不满足3NF。
  • BCNF: 符合3NF的基础上,不存在非主键属性决定部分主键的情况。例如关系(A,B,C,D,E)中,A、B为复合主键,如果存在C->B,则该关系不满足BCNF。
相关标签: DB 范式