1.什么是范式?
范式是数据库设计范式的简称,是符合某一种级别的关系模式的集合。构造数据库必须遵循一定的规则,在关系数据库中,这种规则就是范式。
2.第一范式(1NF)
数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是保证每一列的原子性。
举例:
该表的每一列都是不可拆分的最小单元(最小数据单元或最小原子单元),即符合每一列的原子性。
3.第二范式
指的是在满足第一范式(1NF)的基础上,要求表中所有的列都必须依赖于主键,不能有任何一列与主键没有关系,通俗的来说就是一个表只描述一件事。
举例:
订单与订单日期表:
产品和产品名称表:
订单表只描述与订单相关的信息,所有的字段都必须与订单id相关, 产品表只描述产品相关的信息,所有字段都必须与产品id相关;因此不能在一张表中同时出现订单信息与产品信息。这就是满足了第二范式。
3.第三范式
在满足第二范式的前提下,要求表中的每一列只与主键直接相关而不是间接相关(表中的每一列只能依赖于主键)。
例如:订单表中若需要有客户相关的信息,在分离出客户表之后,订单表中只需要一个客户id即可,而不需要客户的其他信息(性别,电话号码等等)。因为其他的客户信息直接关联于客户id,而不是与订单id直接相关。
4.如何更好地区分三大范式呢?
第一范式和第二范式在于有没有分出两张表,第三范式要求已经分出了多张表,但是一张表中只能有另一张表中的id(主键),而不能有其他的任何信息。