数据库设计三范式&五大约束

虽说已经使用数据库有两三年了,也能写出稍微复杂点的SQL、存储过程,略懂一些库表、SQL优化等,但是对于数据库设计相关一直都是含糊不清的。直到前些日子被人问道数据库三范式是什么?一些关于数据库设计的标准其实很早就有了,看似很简单,但是很多业务开发并没有考虑到这些,所以记录下。

数据库设计三范式

第一范式(1NF):

数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性;

第二范式(2NF):

满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;

第三范式(3NF):

必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键);

第一范式和第二范式在于有没有分出两张表,第二范式是说一张表中包含了所种不同的实体属性,那么要必须分成多张表, 第三范式是要求已经分成了多张表,那么一张表中只能有另一张表中的id(主键),而不能有其他的任何信息(其他的信息一律用主键在另一表查询)。

数据库五大约束

  1. primary KEY:设置主键约束;
  2. UNIQUE:设置唯一性约束,不能有重复值;
  3. DEFAULT 默认值约束,height DOUBLE(3,2)DEFAULT 1.2 height不输入是默认为1,2
  4. NOT NULL:设置非空约束,该字段不能为空;
  5. FOREIGN key :设置外键约束。
投食入口