MySQL 三大范式
数据库的三大特性可谓是:实体属性和关系。
实体:表;
属性:表中的数据(字段;
关系:表与表之间的关系;
一、第一范式(1NF)
数据表中的每一列(每个字段)必须是不可拆分的最小单元,也就是确保每一列的原子性;
即:1NF是对属性的原子性,要求属性具有原子性,不可再分解
二、第二范式(2NF)
满足1NF后,要求表中的所有列,都必须依赖于主键,而不能有任何一列与主键没有关系,也就是说一个表只描述一件事情;
例如:订单表只描述订单相关的信息,所以所有字段都必须与订单id相关;产品表只描述产品相关的信息,所以所有字段都必须与产品id相 关;因此不能在一张表中同时出现订单信息与产品信息。
即:2NF是对记录的惟一性,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖;
三、第三范式(3NF)
必须先满足第二范式(2NF),要求:表中的每一列只与主键直接相关而不是间接相关,(表中的每一列只能依赖于主键);
例如:订单表中需要有客户相关信息,在分离出客户表之后,订单表中只需要有一个用户id即可,而不能有其他的客户信息。因为其他的客户信息直接关联于用户id,而不是直接与订单id直接相关。
即:
3NF是对字段的冗余性,要求任何字段不能由其他字段派生出来,它要求字段没有冗余,即不存在传递依赖;也就是非主键字段不能相互依赖