数据库的范式
- 构造数据库必须遵循一定的规则,这种规则就是范式
- 目前关系数据厍有6种范式,一般情况下,只满足第三范式jike
第一范式:原子性
- 第一范式是数据库的基本要求,不满足这一点就不是关系数据库
-
数据表的每一列都是不可分割的基本数据项,同一列中不能有多个值,也不能存在重复的属性。
在这里插入图片描述
第二范式:唯一性
-
数据表中的每条记录必须是唯一的。为了实现区分,通常要为表加上一个列用来存储唯─标识,这个唯一属性列被称作主键列
在这里插入图片描述
第三范式:关联性
-
每列都与主键有直接关系,不存在传递依赖
在这里插入图片描述 -
依照第三范式,数据可以拆分保存到不同的数据表,彼此保持关联
在这里插入图片描述
字段约束
在这里插入图片描述主键约束
- 主键约束要求字段的值在全表必须唯一,而且不能为NULL值
- 建议主键一定要使用数字类型,因为数字的检索速度会非常快
- 如果主键是数字类型,还可以设置自动增长
AUTO_INCREMENT
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 NUTL,
married BOOLEAN NOT NULL DEFAULT FALSE
);
唯一约束
- 唯一约束要求字段值如果不为NULL,并且在全表必须唯一
CREATE TABLE t_teacher (
tel CHAR(11) NOT NULL UNIQUE
) ;
创建表的时候建议在表名前加个
t_
,表明这是一个真实的数据表,因为还存在视图(v_
或vw_
开头)等其他类型。
实战
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, hiredate DATE NOT NULL, FOREIGN KEY (deptno) REFERENCES t_dept (deptno) ) ;
ENUM
为枚举,只能为指定范围内的值。
外键约束的闭环问题
-
如果形成外键闭环,我们将无法删除任何一张表的记录
在这里插入图片描述
网友评论