目录
定义数据表的时候,一般都需要主键约束,非空约束等字段约束。了解字段约束之前,需要先了解数据库的范式,然后才能更好的理解数据库的约束。
0.数据库的范式:


……………………………………………………

……………………………………………………

阐述上面的图,并解释为什么需要第三范式???:
(1)设想我们用箱子存放东西的时候,只有摆放整齐、规矩,才能存放的更多,也存放的调理更清晰,当翻开箱子找东西的时候也更加快;数据表同理,如果数据表字段之间的关系都非常的松散,那么这个数据表保存的数据就会存在一些问题,特别是检索的时候,速度就会非常慢;
(2)主键字段的查找速度是非常快的,如第一张表,像查找【女儿陈婷婷的玩具和衣服】,那么按照“爸爸”这个主键去查找,并不能找到【女儿陈婷婷的玩具和衣服】,因为条件并不符合,这样只能以非主键字段“女儿”字段去查找,这个速度是非常慢的;
(3)如果把表给拆开,如下面两张表,查找【女儿陈婷婷的玩具和衣服】,直接在第三张表中,以“女儿”这个主键去查找就行了,速度也很快;
(4)即按照第三范式去创建数据表、保存数据的时候,将来在检索、提取数据的时候,会非常的方便;;;如果违反第三范式,虽然表也能创建出来,但是将来在检索、提取数据的时候,都会非常的慢。

1.字段约束:主键约束、非空约束、唯一约束

(1.1)主键约束

……………………………………………………
(1.2)非空约束

……………………………………………………
(1.3)唯一约束

……………………………………………………
(1.附加)主键约束、非空约束、唯一约束的一个小范例
首先,创建t_teacher表:
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
);
注:在创建数据表的时候,强烈建议在表的名字前面加一个前缀,如上的前缀,如这儿的前缀就是“t_”!!!;;;这是因为,在数据库中,有些表示真实存在的,有些表并不存在是虚拟表(这些数据表在数据库中叫做View视图的意思);所以,给这个表加一个如“t_”的前缀,就表示这是一个真实的数据表,如果前缀是“v_”或者“vw_”就代表这个表是个虚拟的表,也就是视图。



2.字段约束:外键约束
(2.1)外键约束


……………………………………………………
(2.2)外键约束的一个小范例
首先,创建d_dept表:
CREATE TABLE t_dept(
deptno INT PRIMARY KEY NOT NULL,
dname VARCHAR(20) NOT NULL UNIQUE,
tel CHAR(4) NOT NULL UNIQUE
);

向t_dept中,添加几条数据:

然后,创建t_emp表;并设置外键约束:
CREATE TABLE t_emp(
empno INT PRIMARY KEY,
name VARCHAR(20) NOT NULL,
sex ENUM("男","女") NOT NULL,
deptnoo INT NOT NULL,
hairedate DATE NOT NULL,
FOREIGN KEY (deptnoo) REFERENCES t_dept(deptno)
);

向t_emp中添加几条数据:
此时,如果想删掉t_dept表中的,deptno=10的那个部分,会报错的:违反了外键约束;

正确的做法是,先把t_emp表中,所有deptno=10的记录,然后再删除t_dept表中deptno=10的那条记录。
……………………………………………………
注解:说明的第一个问题

注解:说明的第二个问题 ;这个问题,那个太关心啦,因为实际中基本不会使用外键约束的。。。

……………………………………………………
(2.3)为什么不建议使用外键约束

本文详细解析数据库范式理论,重点讲解主键约束、非空约束和唯一约束的定义及其在设计表结构时的应用。同时探讨外键约束的使用场景、优缺点,并揭示为何在实践中不常使用。通过实例演示,理解遵循第三范式对数据检索效率的重要性。
4万+

被折叠的 条评论
为什么被折叠?



