数据库设计三大范式

数据库设计三大范式

  为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。

 

常见的三大设计范式:

1. 第一范式(确保每列保持原子性)

  第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

  例:地址可进一步分解,若系统经常访问地址中的省、市、区(县),拆分存储更方便

编号 姓名 性别 地址
1 张三 湖北省武汉市洪山区
2 李四 河南省郑州市新密市
3 王五 河南省郑州市二七区

 

 

 

 

 

改:遵循第一范式,这样在对用户使用城市进行分类的时候就非常方便,提高了数据库的性能。

编号 姓名 性别 区(县)
1 张三 湖北 郑州 洪山区
2 李四 河南 郑州 新密市
3 王五 河南 郑州 二七区

 

 

 

 

 

2. 第二范式(确保表中每列都和主键相关)

  第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

  例:订单信息表(一个订单中可能有多种商品)

 

   这个表以订单编号和商品编号作为联合主键。在该表中商品名称、单位、商品价格等信息不与联合主键相关,而只是与联合主键的一部分(商品编号)相关。

  改:把订单信息表进行拆分,把商品信息分离到另一个表,把订单信息也分离到另一个表。

 

 

 3. 第三范式(确保每列都和主键直接相关,而不是间接相关)

  在设计一个订单信息表的时候,可以将客户编号作为外键和客户信息表建立相应的关系。而不可以在订单表中添加关于客户的其他信息(姓名、公司等)的字段,这些字段和主键(订单编号)间接相关。

 

 

   

posted @ 2020-06-11 16:15  FardlyP  阅读(266)  评论(0)    收藏  举报