数据库设计之三大范式

xiaoxiao2021-02-28  129

数据库规范——三大范式

        数据库规范化,是数据库设计过程中的一系列原理和技术,以减少数据库的数据冗余,增进数据的一致性。共包括:

第一范式:第二范式:第三范式:BC范式:第四范式:第五范式:DK范式:第六范式:

        目前数据库设计最多满足第三范式,范式过高,虽然对数据有更好的约束性,但是会导致关系表增加,令IO操作频繁,尤其是在多表查询的时候,会降低查询效率。

1. 第一范式(1NF):排除重复组的出现,要求数据库的每个列的值域都由原子值组成,每个字段的值只能是单一值。

同一个字段不能出现多个值,每个字段的值只能是单一的 顾客数量peeter19 20jack10 30

- 必须包含主键:否则无法区分两条数据

顾客数量peeter20peeter20

- 单一字段不能存放多个有意义的值

名字喜欢的水果jack苹果,梨子,香蕉petter葡萄,西瓜

- 同一张表格里面不能出现多个字段表示同一个意思

名字喜欢的水果1喜欢的水果2喜欢的水果3jack苹果梨子香蕉petter葡萄西瓜

2. 第二范式(2NF):要求数据表中的所有数据都要和该数据表的键(主键或者候选键)有完全依赖关系:如果那些键只和键的一部分有关,和另外的键无关,就需要把它独立出来成为另外一个数据表。

补充:

        候选键:主键+外键 - 下表每个字段都是单一值,符合第一范式,此表的键有ID和供应商ID,价格和两个键都有关系,不同组件,不同供应商会有不同的价格,但是供应商名称和组件ID无关,只与供应商ID有关,供应商地址同上,所以此表不符合第二范式,需要将其独立出一张表

组件ID价格供应商ID供应商名称供应商地址119.991Stylized PartsVA220.991Stylized PartsVA330.992ACME IndustriesCA

==>转化为如下

组件ID价格供应商ID119.991220.991330.992 供应商ID供应商名称供应商地址1Stylized PartsVA2ACME IndustriesCA

3. 第三范式(3NF):所有非键属性只与候选键相关,非键属性间是独立无关的

下列表格中的字段小计与字段单价和数量相关,不满足第三范式 订单编号客户名称单价数量小计1000peter¥354¥1401001jack¥305¥150

参考:维基百科

转载请注明原文地址: https://www.6miu.com/read-27288.html

最新回复(0)