mysql 数据库设计

范式

大概有8种范式,遵循前三个一般数据库就没有问题

1、列不能再拆分   #比如一列中有姓名,又有性别,就是没有遵循这一条范式

2、在第一范式的基础上,1、必须有主键(提示:主键可以是表中的多个列),2、非主键列必须完全依赖主键,不能是依赖主键的一部分,比如有两个主键,有非主键列只依赖其中一个主键,那么就不遵循范式2,这个列应该拆分成另一个表,比如:

 

| order_id | product_id | price | quantity | product_name |

 

|      111 |         11 |   123 | good     | pen          |

order_id 和 product_id是两个主键,

product_name、price只依赖主键product_id,却不依赖order_id,不符合范式2,应该拆分:

 

 

| order_id | product_id | quantity |

 

|      111 |         11 | 4    |

 

 

 

 

product_id | price | product_nam

 

 

3、在范式2基础上,另外非主键必须直接依赖主键,不能存在传递依赖。即不能存在:非主键列a依赖于非主键b,非主键列b依赖于主键的情况。

 

 

多重主键应用:

 

比如这种时候
商品品牌  商品型号
诺基亚       920
三星        NOTE2
诺基亚      8088

比如这样商品品牌可能有重复,都是诺基亚,但是诺基亚厂商生产的商品型号是不会重复的
也比如,可能好多品牌都有920这个型号,但是一个品牌只有一个920的型号

 

 

关系型数据库设计:

多对一时,在多的表中添加字段,对应一

多对 多时,新建一个表,在其中存储前两个表的主键,这个表叫做聚合表,它用到了几个表的信息

 

posted @ 2019-01-22 22:52  greenfan  阅读(90)  评论(0)    收藏  举报