第一范式:
1、数据表中的每一列(字段),必须是不可拆分的最小单元,即确保每一列的原子性。满足第一范式是关系模式规范化的最低要求。
2、两列的属性相近或相似或一样,尽量合并属性一样的列,确保不产生冗余数据。
第二范式:
满足1NF后要求表中的所有列,每一行的数据只能与其中一列相关,即一行数据只做一件事。只要数据列中出现数据重复,就要把表拆分开来。
第三范式:
满足2NF后,表中的每一列都要与主键直接相关,而不是间接相关(即表中的每一列只能依赖于主键)。
数据不能存在传递关系,即每个属性都跟主键有直接关系而不是间接关系。比如:X->Y->Z 属性之间含有这样的关系,是不符合第三范式的。
注意:
1.必须先满足第一范式才能满足第二范式,必须同时满足第一第二范式才能满足第三范式。
2.第二范式与第三范式的本质区别:在于有没有分出两张表。
第二范式是说一张表中包含了多种不同实体的属性,那么必须要分成多张表,第三范式是要求已经分好了多张表的话,一张表中只能有另一张标的ID,而不能有其他任何信息,(其他任何信息,一律用主键在另一张表中查询)。
五大约束:
数据库中的五大约束包括:
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 表名(字段名)