
本文共 2249 字,大约阅读时间需要 7 分钟。
文章目录
一、三大范式
什么是范式:简言之就是,数据库设计对数据的存储性能,还有开发人员对数据的操作都有莫大的关系。所以建立科学的,规范的的数据库是需要满足一些规范的来优化数据数据存储方式。在关系型数据库中这些规范就可以称为范式。范式是关系数据库理论的基础,也是我们在设计数据库结构过程中所要遵循的规则和指导方法,以下就是对这三个范式的基本介绍:
第一范式(1NF)
1、数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性。满足第一范式是关系模式规范化的最低要求,否则,将有很多基本操作在这样的关系模式中实现不了。


2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。


第二范式(2NF)
满足1NF后要求表中的所有列,每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。



第三范式(3NF)
满足2NF后,要求:表中的每一列都要与主键直接相关,而不是间接相关(表中的每一列只能依赖于主键)。
数据不能存在传递关系,即没个属性都跟主键有直接关系而不是间接关系。像:a–>b–>c 属性之间含有这样的关系,是不符合第三范式的。
注意事项
1.第二范式与第三范式的本质区别:在于有没有分出两张表。
第二范式是说一张表中包含了多种不同实体的属性,那么必须要分成多张表,第三范式是要求已经分好了多张表的话,一张表中只能有另一张标的ID,而不能有其他任何信息,(其他任何信息,一律用主键在另一张表中查询)。
2.必须先满足第一范式才能满足第二范式,必须同时满足第一第二范式才能满足第三范式。
三大范式只是一般设计数据库的基本理念,可以建立冗余较小、结构合理的数据库。如果有特殊情况,当然要特殊对待,数据库设计最重要的是看需求跟性能,需求>性能>表结构。所以不能一味的去追求范式建立数据库。
五大约束
数据库中的五大约束包括:
1.主键约束(Primay Key Coustraint) 唯一性,非空性;
2.唯一约束 (Unique Counstraint)唯一性,可以空,但只能有一个;
3.默认约束 (Default Counstraint) 该数据的默认值;
4.外键约束 (Foreign Key Counstraint) 需要建立两表间的关系;
5.非空约束(Not Null Counstraint):设置非空约束,该字段不能为空。
五大约束的语法示例
- 添加主键约束
Alter table 表名 add Constraint 主键名 primary key(字段)
- 添加唯一约束
Alter table 表名 add Constraint 约束名 unique(字段)
- 添加默认约束
Alter table 表名 add Constraint 约束名 default(默认内容) for 字段名
- 添加检查约束
Alter table 表名 add Constraint 约束名 check (字段表达)
- 添加外键约束
Alter table 表名 add Constraint 约束名 foreign key(字段) references 表名(字段名)
详细介绍
(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)。发表评论
最新留言
关于作者
