阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

数据库基础知识:数据库中的约束和三大范式

55次阅读
没有评论

共计 1661 个字符,预计需要花费 5 分钟才能阅读完成。

一. 数据库中的范式:

范式,英文名称是 Normal Form,它是英国人 E.F.Codd(关系数据库的老祖宗)在上个世纪 70 年代提出关系数据库模型后总结出来的,范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法,以下就是对这三个范式的基本介绍:

第一范式(1NF):

数据表中的每一列 (字段),必须是不可拆分的最小单元,也就是确保每一列的原子性。

例如:userInfo: ‘ 山东省烟台市 1318162008’ 依照第一范式必须拆分成

userInfo: ‘ 山东省烟台市 ’ userTel: ‘1318162008’ 两个字段

第二范式(2NF):

满足 1NF 后要求表中的所有列,都必需依赖于主键,而不能有 任何一列与主键没有关系(一个表只描述一件事情)。

例如:订单表只能描述订单相关的信息,所以所有的字段都必须与订单 ID 相关。

产品表只能描述产品相关的信息,所以所有的字段都必须与产品 ID 相关。

因此在同一张表中不能同时出现订单信息与产品信息。

第三范式(3NF):第三范式 (3NF):满足 2NF 后,要求:表中的每一列都要与主键直接相关,而不是间接相关(表中的每一列只能依赖于主键)

例如:订单表中需要有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户

ID 即可,而不能有其他的客户信息,因为其他的用户信息是直接关联于用户 ID,而不是关联

于订单 ID。

注意事项:

1. 第二范式与第三范式的本质区别:在于有没有分出两张表。

第二范式是说一张表中包含了多种不同实体的属性,那么必须要分成多张表,第三范式是要求已经分好了多张表的话,一张表中只能有另一张标的 ID,而不能有其他任何信息,(其他任何信息,一律用主键在另一张表中查询)。

2. 必须先满足第一范式才能满足第二范式,必须同时满足第一第二范式才能满足第三范式。

二:数据库中的五大约束:

数据库中的五大约束包括:

1. 主键约束(Primay Key Coustraint)唯一性,非空性;

2. 唯一约束(Unique Counstraint)唯一性,可以空,但只能有一个;

3. 默认约束 (Default Counstraint) 该数据的默认值;

4. 外键约束 (Foreign Key Counstraint) 需要建立两表间的关系;

5. 非空约束(Not Null Counstraint): 设置非空约束,该字段不能为空。

详细介绍:

(1)[外键约束 (Foreign Key Counstraint) ]
1. 设置外键的注意事项:
①:只有 INNODB 的数据库引擎支持外键,修改 my.ini 文件设置 default-storage-engine=INNODB;
②:外键与参照列的数据类型必须相同。(数值型要求长度和无符号都相同,字符串要求类型相同,长度可以不同);
③:设置外键的字段必须要有索引,如果没有索引,设置外键时会自动生成一个索引;
2. 设置外键的语法:
[CONSTRAINT 外键名] FOREIGN KEY(外键字段) REFERENCES 参照表 (参照字段);
[ON DELETE SET NULL ON UPDATE CASCADE] — 设置操作完整。

3、外键约束的参照操作:
当对参照表的参照字段进行删除或更新时,外键表中的外键如何应对。
参照操作可选值:
RESTRICT: 拒绝对参照字段的删除或修改(默认);
NO ACTION: 与 RESTRICT 相同,但这个指令只在 MySql 生效;
CASCADE:  删除或更新参照表的参照字段时,外键表的记录同步删除或更新;
SET NULL: 删除删除或更新参照表的参照字段时,外键表的外键设为 NULL (此时外键不能设置为 NOT NULL)。

(2)[主键约束](Primay Key Coustraint)
1. 主键的注意事项:主键默认非空,默认唯一性约束,只有主键可以设置自动增长(主键不一定自增,自增一定是主键)。
2. 设置主键的方式:

①:在定义列时设置:id     INT UNSIGNED PRIMARY KEY。
②:在列定义完成后设置:PRIMARY KEY(id)。

其他约束没有特殊要求因此不做解释。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-12-03发表,共计1661字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中