前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL数据库设计三大范式

MySQL数据库设计三大范式

作者头像
越陌度阡
发布2020-11-26 11:38:27
1.3K0
发布2020-11-26 11:38:27
举报

1. 第一范式 1NF

设R为任一给定关系, 如果R中每个列与行的 交点处的取值都是不可再分的基本元素,则R为第一范式。

2. 第二范式 2NF

由于第一范式冗余高,插入操作异常,删除操作异常,于是便有了第二范式。

设R为任一给定关系,若R为1NF, 且其所有非主属性都完全函数依赖于候选关键字,则R为第二范式。

在上表中,在没有拆分之前,学生上课信息表的主键为(SN0,CNO),但其中的课程信息却不依赖于SNO,所以要将学生上课信息表拆分为学生上课成绩表与课程表,这两张表通过课程编号CNO进行关联,即实现第二范式。

3. 第三范式 3NF

设R为任一给定关系,若R为2NF, 且其每一个非主属性都不传递函数依赖于候选关键字,则R为第三范式。

在上图未折分之前,通过课程编号CNO推出授课名称CTITLE,而通过授课名称CTITLE又可以分别推出授课老师INAME和授课地点IPLACE,这样就造成了传递依赖,所以要拆分成两张表,通过授课老师INAME关联起来,即实现第三范式。

4. 第三范式的特殊形式 BCNF

设R为任一给定关系,X、Y为其属性集,F为其函数依赖集,若R为3NF,且其F中所有函数依赖X→Y(Y 不属于X)中的X必包含候选关键字,则R为BCNF。

在上图未拆分之前,候选关键字为(SNO,CTITLE)和(SNO,INAME),同时在上表中可以通过授课老师INAME推断出课程名称CTITLE,但授课老师INAME却不包含候选关键字,所以要拆分成右边的形式,即满足BC范式。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 第一范式 1NF
  • 2. 第二范式 2NF
  • 3. 第三范式 3NF
  • 4. 第三范式的特殊形式 BCNF
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档