第一范式:原子性(这是数据库的基本要求,不满足这一点就不是关系型数据库)
数据表的每一列都是不可分割的基本数据项,同一列中不能有多个值,也不能存在重复的属性。

第二范式:唯一性
数据表中的每条记录都必须是唯一的,为了实现区分,通常要为表加上一个列来存储唯一标识,这个唯一属性列被称为主键列。

第三范式:关联性
每列都与主键有直接关系,不存在传递依赖。
依照第三范式,数据可以拆分到不同的数据表中,彼此保持关联


Mysql中的字段约束一共有四种

唯一约束:要求字段值唯一,但是对空字段值不约束,也就是可能存在多个为空的数据。


NOT NULL DEFAULT FALSE
这句话是说如果没给值则给一个默认值false;

给出一个使用示例:
CREATE TABLE t_teacher(
id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
tel CHAR(11) NOT NULL UNIQUE,
married BOOLEAN NOT NULL DEFAULT FALSE
);

创建父表:
CREATE TABLE t_dept ( deptno INT UNSIGNED PRIMARY KEY, dname VARCHAR ( 20 ) NOT NULL UNIQUE, tel CHAR ( 4 ) UNIQUE );
创建子表,添加约束
CREATE TABLE t_emp (
empno INT UNSIGNED PRIMARY KEY,
ename VARCHAR ( 20 ) NOT NULL,
sex ENUM ( "男", "女" ) NOT NULL,
deptno INT UNSIGNED NOT NULL,
hiredate DATE NOT NULL,
FOREIGN KEY ( deptno ) REFERENCES t_dept ( deptno )
);
此时如果字表中存在使用父表字段,则附表无法直接删除这一个被使用的数据。
如图:



