范式定义:设计表的规范
为了减少数据冗余,设计数据表时必须遵循一定的规则,关系数据库中将这一规则称为范式。
引用: http://www.cn blogs.com/linji Qin/archive/2012/04/01/2428695.html
1第一范式1NF(确保每列保持原子性)
各列的属性是不可分离的属性值,确认各列的原子性2列的属性相近、相似或相同,尽量合并属性的同一列,避免生成冗长的数据。 根据实际需求设计的字段值是不可分割的。 例如,“部门”和“角色”在需求中经常使用,应该划分两个字段。
2第二范式2NF(确保表中的每列都和主键相关)(拆多表)
第二种范例是,一个表中包含了多个不同的实体属性,所以必须分为多个表
一个数据库表只能保存一个数据,不能将多个数据保存在同一数据库表中。 订单表和商品表不能设计成一张表。 需要分为两个表,追加多对多的商品id和订单id的关联表。 (一个表只记述了一件事)
http://www.Sina.com/http://www.Sina.com /
第三范式(3NF )必须首先满足第二范式(2NF )。 要求:表中各列只与主键直接相关,不间接相关。 (表中各列只取决于主键);
例如,订单表需要有关客户的信息,分离客户表后,订单表只需要有一个用户id (外键),不能有其他的客户信息。 因为其他客户信息与用户id直接相关,而不是与订单id直接相关。
订单表的用户信息不是直接设计字段,而是仅需要设计用户id字段并将用户表与外键相关联。
三大范式只是一般设计数据库的基本理念,可以构建冗余度小、结构合理的数据库。 有特殊情况,当然要特殊对待。 数据库设计中最重要的是看需求和性能,需求性能表的结构。 所以不能追求范式建立数据库。
二、三范式可以不满足实用!
转载: https://blog.csdn.net/QQ _ 33862644/article/details/79692652
总结:
第1范式:各表有一列,该列是不可分割的最小单位
2范式:一张表只记载了一件事
第三范式:使用外键关联表
【数据库的5个限制】
1 .设置主键:主键约束;
2.UNIQUE :设置唯一性约束,不能有重复值;
3.DEFAULT默认约束height double (3,2 )不输入DEFAULT 1.2 height默认值为1,2
4.NOT NULL :设置非空约束。 此字段不能为空。
5 .设置5.FOREIGN key :外键约束。