数据库表的相关操作五:数据库范式;字段约束:主键约束、非空约束、唯一约束;外键约束(外键约束不建议使用);

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

目录

0.数据库的范式:

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

(1.1)主键约束

(1.2)非空约束

(1.3)唯一约束

(1.附加)主键约束、非空约束、唯一约束的一个小范例

2.字段约束:外键约束

(2.1)外键约束

(2.2)外键约束的一个小范例

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


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

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)为什么不建议使用外键约束

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值