MySQL之范式

MySQL知识点总结之范式

1.范式概念

数据库设计的范式概念:
设计数据库时,需要遵循的一些规范,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范(即要求越来越高),越高的范式数据库冗余越小。要遵循后边的范式要求,必须先遵循前边的所有范式要求

目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5NF,又称完美范式)。
注:BCNF是第三范式的改进版

1.三大范式概念

● 第一范式:
强调列的原子性, 即确保数据库表字段的原子性,数据库表的每一列都是不可分割的原子数据项
● 第二范式:
属性完全依赖于主键. 不能存在仅依赖主关键字一部分的属性;
即在1NF的基础上,非码属性必须完全依赖于码(在1NF基础上消除非主属性对主码的部分函数依赖)
● 第三范式:
确保每列都和主键列直接相关, 属性不依赖于其他非主属性.
即在2NF基础上,任何非主属性不依赖于其它非主属性(在2NF基础上消除传递依赖),即不能存在”非主键列 A 依赖于非主键列 B,非主键列 B 依赖于主键“的情况。

1NF:
比如字段 userInfo: 广东省 10086’ ,依照第一范式必须拆分成 userInfo: 广东省 userTel:10086两个字段。

2NF:
假定选课关系表为student_course(student_no, student_name, age, course_name, grade, credit),主键为(student_no, course_name)。其中学分完全依赖于课程名称,姓名年龄完全依赖学号,不符合第二范式,会导致数据冗余(学生选n门课,姓名年龄有n条记录)、插入异常(插入一门新课,因为没有学号,无法保存新课记录)等问题。
可以拆分成三个表:学生:student(stuent_no, student_name, 年龄);课程:course(course_name, credit);选课关系:student_course_relation(student_no, course_name, grade)。

3NF:
假定学生关系表为Student(student_no, student_name, age, academy_id, academy_telephone),主键为"学号",其中学院id依赖于学号,而学院地点和学院电话依赖于学院id,存在传递依赖,不符合第三范式。
可以把学生关系表分为如下两个表:学生:(student_no, student_name, age, academy_id);学院:(academy_id, academy_telephone)。

2.函数依赖

函数依赖:A–>B,如果B依赖于A,则如果通过A属性(属性组)的值,可以确定唯一B属性的值。
例子(1): 学号–>姓名,即姓名依赖于学号,通过学号可以唯一的确定姓名
例子(2): (学号,课程名称) --> 分数

3.完全函数依赖

完全函数依赖:A–>B, 如果A是一个属性组,则B属性值得确定需要依赖于A属性组中所有的属性值。
例如:(学号,课程名称) --> 分数

4.部分函数依赖

部分函数依赖:A–>B, 如果A是一个属性组,则B属性值得确定只需要依赖于A属性组中某一些值即可。
例如:(学号,课程名称) – > 姓名

5.码、属性、(码)属性组

码:如果在一张表中,一个属性或属性组,被其他所有属性所完全依赖或者部分依赖,则称这个属性(属性组)为该表的码
例如:1NF中的那个的表中的码为:(学号,课程名称)
通过学号与课程名称可以唯一的确定分数,通过学号与课程名称可以确定唯一的姓名,通过学 号与课程名称可以确定唯一的系名,通过学号与课程名称可以确定唯一的系主任
主属性:码属性组中的所有属性
非主属性:除过码属性组的属性

6.1NF

image-20220114110211029
image-20220114113503269

7.2NF

image-20220114114834256
image-20220114141703699

8.3NF

image-20220114143354989

9.2NF和3NF的区别

2NF依据是非主键列是否完全依赖于主键,还是依赖于主键的一部分。
3NF依据是非主键列是直接依赖于主键,还是直接依赖于非主键。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GoGo在努力

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值