【MySQL】数据库设计(一)三大范式

三大范式

1NF 第一范式

强调列的原子性,即列不可分

例如:

image-20210610111143010

2NF 第二范式

前提是1NF,另外包含两个部分:

  • 表必须具有一个主键;

  • 没有包含在主键中的列必须完全依赖于主键,而不是只依赖主键的一部分;主键有多个列判断

例如:

image-20210610111323780

上述表中,表(1)不能由单独的OederID(订单号)或者ProductID(商品名)来唯一区分每条记录(因为买同一个商品的人有很多,同一订单号下有很多商品),也就是可以由多个主键确定一个记录。但是除了主键之外的字段仅部分依赖主键,这就不符合要求(比如洗发水以及其价格可以由商品名直接确定,不用订单号)。

修改后得到表(2)就符合所有字段直接依赖主键的要求。

3NF 第三范式

前提是2NF, 非主键列必须直接依赖于主键。

不能存在传递依赖,既不能存在:非主键列A依赖于非主键列B,非主键列B依赖于主键的情况。

例如:

image-20210610112800242

在这里,如果按表(1)的设计,用户修改信息之后会出现很多重复的表。因此要拆分。

最终结构关系:

image-20210610113239083

层层关联即为关系型数据库

posted @ 2021-06-10 11:36  dayceng  阅读(170)  评论(0编辑  收藏  举报