数据库的三大范式
2018-03-05 20:02
211 查看
第一范式(1NF):
数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性
例如: userInfo: ‘山东省烟台市 1318162008’ 依照第一范式必须拆分成
userInfo: ‘山东省烟台市’ userTel: ‘1318162008’两个字段
第二范式(2NF):
满足1NF后要求表中的所有列,都必需依赖于主键,而不能有 任何一列与主键没有关系(一个表只描述一件事情)
例如:订单表只能描述订单相关的信息,所以所有的字段都必须与订单ID相关。产品表只能描述产品相关的信息,所以所有的字段都必须与产品ID相关。因此在同一张表中不能同时出现订单信息与产品信息。
第三范式(3NF):
满足2NF后,要求:表中的每一列都要与主键直接相关,而不是间接相关(表中的每一列只能依赖于主键)
例如:订单表中需要有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户ID即可,而不能有其他的客户信息,因为其他的用户信息是直接关联于用户ID,而不是关联于订单ID。
注意事项:
1.第二范式与第三范式的本质区别:在于有没有分出两张表
第二范式是说一张表中包含了多种不同实体的属性,那么必须要分成多张表,第三范式是要求已经分好了多张表的话,一张表中只能有另一张表的ID,而不能有其他任何信息,(其他任何信息,一律用主键在另一张表中查询)
2.必须先满足第一范式才能满足第二范式,必须同时满足第一第二范式才能满足第三范式
数据表中的每一列(字段),必须是不可拆分的最小单元,也就是确保每一列的原子性
例如: userInfo: ‘山东省烟台市 1318162008’ 依照第一范式必须拆分成
userInfo: ‘山东省烟台市’ userTel: ‘1318162008’两个字段
第二范式(2NF):
满足1NF后要求表中的所有列,都必需依赖于主键,而不能有 任何一列与主键没有关系(一个表只描述一件事情)
例如:订单表只能描述订单相关的信息,所以所有的字段都必须与订单ID相关。产品表只能描述产品相关的信息,所以所有的字段都必须与产品ID相关。因此在同一张表中不能同时出现订单信息与产品信息。
第三范式(3NF):
满足2NF后,要求:表中的每一列都要与主键直接相关,而不是间接相关(表中的每一列只能依赖于主键)
例如:订单表中需要有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户ID即可,而不能有其他的客户信息,因为其他的用户信息是直接关联于用户ID,而不是关联于订单ID。
注意事项:
1.第二范式与第三范式的本质区别:在于有没有分出两张表
第二范式是说一张表中包含了多种不同实体的属性,那么必须要分成多张表,第三范式是要求已经分好了多张表的话,一张表中只能有另一张表的ID,而不能有其他任何信息,(其他任何信息,一律用主键在另一张表中查询)
2.必须先满足第一范式才能满足第二范式,必须同时满足第一第二范式才能满足第三范式