第一范式:原子性
第一范式是数据库的基本要求,不满足这一点就不是关系数据库
数据表的每一列都是不可分割的基本数据项,同一列中不能有多个值,也不能存在重复的属性。
第二范式:唯一性
数据表中的每条记录必须是唯一的。为了实现区分,通常要为表加上一个列用来存储唯一标识,这个唯一属性列被称作主键列
第三范式:关联性
字段约束
MySQL中的字段约束共有四种:
约束名称 关键字 描述
主键约束 PRIMARY KEY 字段值唯一,且不能为NULL
非空约束 NOT NULL 字段值不能为NULL
唯一约束 UNIQUE 字段值唯一,且可以为NULL
外键约束 FOREIGN KEY 保持关联数据的逻辑性
主键约束
主键约束要求字段的值在全表必须唯一,而且不能为NULL值
建议主键一定要使用数字类型,因为数字的检索速度会非常快
如果主键是数字类型,还可以设置自动增长
CREATE TABLE t_teacher (
id INT PRIMARY KEY AUTO_INCREMENT,
...
) ;
非空约束
非空约束要求字段的值不能为NULL值下
NULL值以为没有值,而不是 "" 空字符串
CREATE TABLE t_teacher (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR (200) NOT NULL,
married BOOLEAN NOT NULL DEFAULT FALSE
);
唯一约束
唯一约束要求字段值如果不为NULL,那么在全表必须唯一
CREATE TABLE t_teacher (
...
tel CHAR(11) NOT NULL UNIQUE
);
外键约束的闭环问题
如果形成外键闭环,我们将无法删除任何一张表的记录