Skip to content

数据库三范式五约束

三范式

  • 第一范式:数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性;
  • 第二范式(2NF):满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;
  • 第三范式:必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键);
-- 1NF 第一范式

字段不能再分,就满足第一范式。

-- 2NF 第二范式

满足第一范式的前提下,不能出现部分依赖。

消除联合主键可以避免部分依赖。增加单列关键字。

-- 3NF 第三范式

满足第二范式的前提下,不能出现传递依赖。

某个字段依赖于主键,而有其他字段依赖于该字段。这就是传递依赖。

将一个实体信息的数据放在一个表内实现。

第二范式(2NF)和第三范式(3NF)的概念很容易混淆,区分它们的关键点在于,2NF:非主键列是否完全依赖于主键,还是依赖于主键的一部分;3NF:非主键列是直接依赖于主键,还是直接依赖于非主键列。

举例说明:

关系表(A,B,C,D)中A,B是候选键,那么:(A,B)→ C (A,B)→ D

2NF : 不能存在非主属性部分依赖主键 如: B → C 或 A → C 等。当主键为多值联合主键时可能会存在违反2NF

3NF : 不能存在非主属性之间的传递依赖 如: C → D 或 D → C

BCNF : 不能存在主属性之间的传递依赖 如 : A → B 或 B → A

五约束

  • primary KEY:设置主键约束;
  • UNIQUE:设置唯一性约束,不能有重复值;
  • DEFAULT 默认值约束
  • NOT NULL:设置非空约束,该字段不能为空;
  • FOREIGN key :设置外键约束。