数据库三范式

范式是关系数据库设计的重要规则,下面我来介绍下1NF、2NF、3NF

首先来了解一下范式需要的的前置知识

函数依赖

我觉得类似数学中的函数,描述的是一个映射关系。在一个关系R中,一个集合X在另一个集合Y中总能唯一对应(X→Y)。则X决定Y或者Y依赖于X。

简单点说就是:一个属性集决定另一个属性集。

其中函数依赖还可以根据不同性质分为完全函数依赖、部分函数依赖、传递函数依赖。在这里我们可以借助集合的概念帮助理解。

1.完全函数依赖:存在X → Y,X中的任何真子集X‘ ,存在X‘ !→ Y

例:(学号,课程号)→ 成绩

          学号 !→ 成绩,课程号 !→ 成绩

          所以(学号,课程号)→ 成绩 是完全函数依赖。

2.部分函数依赖:存在X → Y,X中的任何真子集X‘ ,存在X‘ → Y

例:(学号,姓名)→ 性别

          学号 → 性别

           所以(学号,姓名)→ 性别 是部分函数依赖

3.传递函数依赖:存在X → Y → Z、Y !→ X。则X → Z

例:学号 → 系名→ 系主任

       系名 !→ 学号

       所以学号 → 系主任   是传递函数依赖。

主属性与非主属性

主属性:包含在任何一个候选键中的属性称主属性。

非主属性:不包含在任何一个候选键中的属性称为非主属性。 

关于键请参考:https://blog.csdn.net/xyzyhs/article/details/99438912

下面来介绍范式:

1NF

第一范式的核心为原子性,所有的内容都应该是符合原子性的,也就是不可分割。

         

                                         表1

表1中这种情况,手机号属性中填写了两个内容,这是不符合1NF。

2NF

第二范式主要有2点:1.满足1NF。2.所有非主属性都完全依赖于候选关键字。

                                 (在1NF基础上消除非主属性对主码的部分函数依赖)

非主属性和完全依赖的概念,在前面已经详细介绍过,这里不再赘述,直接举例

选课关系表:R(学号,姓名,年龄,课程号,成绩,学分),候选关键字(学号,课程名称)

                (学号,课程名称) → (姓名,年龄,成绩,学分)

                  且(学号)→(姓名,年龄),(课程号)→(成绩,学分)   所以不满足第二范式。

要想满足第二范式应修改为:R1(学号,姓名,年龄)

                                            R2(课程号,成绩,学分)

3NF

第三范式主要有2点:1.满足2NF。2.所有非主属性都不存在传递依赖。

                                    (在2NF基础上消除传递依赖)

例:学生关系表:R(学号,姓名,年龄,所在学院,学院地点,学院电话)

                          存在(学号) → (所在学院) → (学院地点,学院电话)  所以不满足第三范式

要想满足第三范式应修改为:R1(学号,姓名,年龄,所在学院)

                                            R2学院:(学院,地点,电话)

最后总结一下:1NF:字段取值不可再分(原子性)

                       2NF:在1NF的基础上,非码属性必须完全依赖于候选码(在1NF基础上消除非主属性对主码的部分函数依赖)

                       3NF:在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值