首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >SQLServer数据库----关系规范理论(码,依赖,范式类型)

SQLServer数据库----关系规范理论(码,依赖,范式类型)

作者头像
阑梦清川
发布2025-02-24 22:24:10
发布2025-02-24 22:24:10
3040
举报
文章被收录于专栏:学习成长指南学习成长指南

1.函数依赖

1.1问题的引入

1)

下面的这个数据库里面:我们的这个学号决定了系部,因此我们可以说这个西部依赖于学号;

我们的系部决定了这个系主任的名字,我们可以说这个系主任的名字依赖于这个系部;

我们的这个学号和课程号决定这个课程的成绩,因此这个成绩依赖于这个课程号和学号组成的这个集合

image-20241126130901316
image-20241126130901316

1.2关系可视化

1)

下面的这个图就是对于上面的这个依赖关系的可视化的效果:

image-20241126131201719
image-20241126131201719

1.3存在的问题

1)

单一模式存在的这个问题:

image-20241126131242190
image-20241126131242190

1.4关系模式的分解

我们的解决方案就是把上面的这个关系模式进行分解,消除这个不合适的数据以来对于其他的数据的影响;

image-20241119095317043
image-20241119095317043

1.5函数依赖的引入

image-20241119095500763
image-20241119095500763

1.6平凡/非平凡函数依赖

下面的这个是我们的平凡函数依赖和非平凡函数依赖的这个定义,很好理解,但是这个名字起的让人不知道是什么意思~~~

image-20241119095708622
image-20241119095708622

1.7完全/不完全依赖

下面的这个是完全函数依赖和部分函数依赖,这个也是结合下面的这个案例进行理解:

image-20241119100512249
image-20241119100512249

1.8传递依赖

传递依赖类似于我们学习的这个传递性,就是一个道理,这个我们后续介绍这个范式的时候会使用到这个传递依赖进行范式的判断;

image-20241119100618885
image-20241119100618885

1.9主码/候选码

码:就是我们的这个函数依赖里面的这个前者(是我个人的理解):

例如这个sno,cno----------->grade:因此这个里面的学号和课程号就是码;

​ sno----->sdept因此这个里面的sno就是码;

image-20241119100807013
image-20241119100807013

1.10外码

1)

下面的这个就是对于外码的一个解释:

2)

简单说明一下,这个为什么在这个sc里面的这个sno不是码,这个是因为sno和cno组合在一起才可以决定我们的grade,因此无论是单独的这个sno和sno都不是码,只有组合在一起才是码;

image-20241126132237076
image-20241126132237076

2.范式

2.1引入

1)

下面的这个就是我们的范式的分类;

image-20241126132055337
image-20241126132055337

2.2第一范式

1)

关系数据库都是需要满足这个第一范式的:第一范式是我们的这个关系数据库最基本的这个要求;

image-20241126132127275
image-20241126132127275

2.3第二范式

1)

第二范式是基于这个第一范式进行定义的:如果这个范式是第二范式,那么肯定是第一范式,这个是我们首先需要明白的

2)

我们的这个码是sno,cno,这个sdept就可以决定sloc,因为系部一样学生住的地方是一样的,但是我们的这个码sno,cno部分决定sdept,因此这个不满足我们的这个第二范式的定义,所以只能是第一范式;

3)

码:可以决定这个元组里面的所有的信息:因此这个下面写的这个sno,cno-------->sdept这个是我们的码的定义,不要问为什么(问的时候一定要去查看这个定义,我知道很多人这个地方想不明白,包括我自己在内)

image-20241126132938580
image-20241126132938580

这个想要解决解决依赖的问题:就需要使用这个分解,把这个关系模式进行下面的分解,解决部份依赖问题:

image-20241126134141039
image-20241126134141039

2.4 第三范式

1)

第三范式就是在这个第二范式的基础上面,消除这个非主属性对于码的传递依赖;

image-20241126134214824
image-20241126134214824

2.5BC范式

1)

上面讨论的都是我们的非主属性对于码的依赖,我们的这个BC范式要求这个主属性对于码也要完全依赖(在第三范式的基础上面)

image-20241126134359164
image-20241126134359164

) |

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.函数依赖
    • 1.1问题的引入
    • 1.2关系可视化
    • 1.3存在的问题
    • 1.4关系模式的分解
    • 1.5函数依赖的引入
    • 1.6平凡/非平凡函数依赖
    • 1.7完全/不完全依赖
    • 1.8传递依赖
    • 1.9主码/候选码
    • 1.10外码
  • 2.范式
    • 2.1引入
    • 2.2第一范式
    • 2.3第二范式
    • 2.4 第三范式
    • 2.5BC范式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档