00:00
呃,好,同学们,那现在我们再往下走,那下边呢,我们呃,就可以花一点时间去简单的了解一下这三个范式了,呃,下面我就已经跟大家说过了啊,实际上呢,在我们的维度模型当中,我们会用到这个什么实体关系模型或者数据规规范化的一个概念,咱们应该是不太用得着了,对吧?啊,但是在这儿呢,我们呃,前面说了,为了让大家有一个更加全面的这个剑玩理论的一个知识体系,这块我们也要了解啊,所以咱接下来要讲这些东西呢,大家也最好认真听一下啊,咱们多了解一些东西没有什么坏处啊。好,那接下来咱们就开始往下走啊,那在我们去学习这个三范式之前,我需要先给大家去阐明一个概念,这个概念叫什么呢?叫做函数依赖,函数依赖是样的,那这个函数依赖是干什么用的呢?哎,我们后边的这个三范式就会用到函数依赖的概念,是这样的,OK,好,那在讲这个函数依赖之前,我需要先问大家一个问题啊,就这个函数的概念,大家还有没有印象函数这个函数指的就是数学当中那个函数的一。
01:00
一个概念啊,数学里边函数是怎么定义的?还记得吗?呃,可能那个标准的定义咱们说不出来了啊,但其实大概应该有这样的一个意思,所谓一个函数是不是应该就是一个X到一个Y的一个映射呀,对吧?哎,那这个映射关系我们称之一个函数对吧?好,那完之后呢,我在这儿呢,给大家哎,呃,出一个小题啊,那比如说我现在这儿呢,有一个这样的坐标图,这个呢,是X轴啊,叫做自变量,对吧?这是Y轴是因变量对不对?好,假如说我现在有一个X到Y的映射关系,它是这样的,那你说这个映射关系能不能成为一个函数呢?可不可以?应该可以吧,对不对?OK啊好,那假如说我这儿呢,有一个应式关系是这种,那它能不能做一个函数呢?是不可以的,为什么?因为函数它有要求,是不是一个X自变量只能对应一个Y因变量啊,对吧?那这一点大家必须得明确才行,好这是函数的概念,得先回忆起来,好那接下来呢,我们再来看一下下边这个咱们要讲的这三个函数依赖,那首先各位同学我们先看啥呢?我们先看一下这张表,大家来简单的看一下这张表啊,这个表实际上应该是一个什么表。
02:03
应该是一个成绩单对吧,是个成绩单对吧,是不是就是谁哪一科考了多少分啊,对吧,那完了之后大家来看一看,就是这张表里边他有没有刚才咱们所提到那个数据冗余的问题。有没有数据冗余是不是很明显对吧?你看这一部分信息是不是都是相同的,对不对,这是冗余对吧?那这分是不是也是完全相同的呀,对吧,也是冗余的,也就是它这里边显然是存在数据的冗余的,OK,好,那所以说一会儿我们就会以这张表为例去学习一下咱们,诶,就这个需要去讲的这个三范式,咱说以它为例去学习啊好,暂时我们先不看它了,我们继续往下看,看一看我们这要讲的这个所谓的函数依赖到底是怎么回事儿,呃,函数依赖呢,在这儿我们一共会介绍三种,那分别是呃,完全函数依赖,还有部分函数依赖,还有传递函数依赖,一共这三种,那现在呢,我们逐个的来看,首先我们先看第一个完全海尔依赖,那什么叫做完全海尔依赖呢?大家来看一下。
03:02
哎,这是完全函数依赖的一个标准的定义啊,大家可以看它是用什么去阐述完全函数依赖的,是用集合论去阐述这个完全函是依赖的,对吧?呃,是这样的,为什么?实际上关系型数据库它是有非常强的数学理论基础的,那主要就是哪部分数学理论呢?就是集合论对吧?所以这些东西它都是用集合去阐述的,当然可能大家现在已经把这些是不是基本的理论知识都忘了呀,对吧?那比如说这有一什么甄子集,大家记得什么叫甄子集嘛,不知道了就知道什么叫甄子丹了,对吧?呃,甄子集咱们就不看了啊,咱们继续往下看,各位同学,那所以说这块呢,我们这个,呃,这段话咱们就不读它了,咱们往下看,下边有那啥,有这个人类语言对吧?当然人类语言咱们暂时也不看啊,咱然我先给大家举一个这个呃,具体的小小公式,我用一个小公式给大家去说明一下这个问题,假如我现在有一个这样的函数啊,这个函数呢,我叫做Y,这个这个FX,然后Y它等于谁呢?等于Z,哎,我有一个这样的函数,这是一个二元函。
04:03
数,对吧?好那玩意,假如说我现在呢,给大家一个X的值,我再给大家一个Y的值,大家说我能不能得到Z呢?很显然是可以的,对吧?好,那玩意儿,我只给一个X,我要是不给Y,大家说我能不能得到Z,你显然是得不到的,对吧?同理,我不给X,只给Y,是不是也是得不到Z的呀?没问题吧?OK,那这时候我们就得到一个结论,什么结论呢?我们就说C是完全函数依赖于X和Y的,你缺一不可,这俩都得给我,我才能得到具体的Z的值,这就是所谓的完全还依赖,咱就这么理解就行,好,那当然呢,这是通过一个小公式去说明了啊,我们还得回归到什么上面来呢?你得回归到关系型数据库的表上面去理解这个完全函数依赖对吧?好,那我们现在来看一看,就是在这张表当中对不对,那咱们有没有这个所谓的完全函数依赖的例子呢?其实有的,你看下边啊。他说了,比如我们通过学号和课程能够推出分数来看一下能不能啊,你比如说我给你一个学号,给你一个课程,能不能得到一个准确的分数呢?能对不对,但是呢,我往后看,你单独的使用学号,你推不出来分数,你单独的使用课名,你也得不到一个分数,但说是不是这么回事,那比如说给一个姓名,你比如说我,我给一个学分,对吧,就是他对吧,你能得到一个具体的分数,不能,为啥?因为这一个人我不是有多个科目啊,对吧,那同理,我给你一个科目,是不是有很多人都有这个科目的分数,你也不知道具体的分数是啥,那所以这个时候咱们就怎么说呢?就是说在这张表当中,分数这个字段是完全函数,依赖于学号加课名这两个字段,哎,是这个意思啊,这个咱们理解一下好了,那完全函数依赖咱就搞清楚了,接下来我们再来看另外一种啊,另外一种呢,我们称之为部分函数依赖,那通常它这也是使用这个集合论去论证的啊,在这儿咱们不看它了,那我还是给大家举一个生活当的例子啊,比如说我们还是以刚才那个函数为。
05:52
一去说明,那在这假如我有一个FXY等于Z这样的函数,还是这个函数啊好,那假如说啊,我现在呢,给大一个X,给大一个Y,这个Z肯定能得到,这个没得说对吧,那点我现在这么给,我给一个X,我再给个Y,我再给一个L,那来说我能不能得到Z的值呢。
06:13
这个能不能得到可以吧,你只要有X有Y是不是就能得到C啊,对吧?啊,这个是可以的啊,那所以这时候我就怎么说呢,我就说Z是部分函数依赖于XYL的。然后Z是完全还是依赖于XY的。能能理解吧,这个很很形象对吧,也就是说我在是不是只依赖于你给我提供的这三个自变量里边的一部分呀,对吧,这就是部分还是依赖,就这意思,好,那当然我们还是需要把它对应到我们这个关系型数据库表里边去理解啊,你比如说他这怎么说的,他说给你一个学校号,给你一个课程,我能够推出姓名,这个能不能推出来,学号给了,课名给了,那姓名是啥,应该能知道,对吧?好,但是呢,大家都知道我这个姓名,我依赖于课程吗?不依赖,你只要给我学号是不是就能到姓名啊,对吧?那所以说我们就说诶姓名这个字段是部分函数依赖于学号加课程的,哎,就这个意思好了,那这就是所谓的部分依赖,那最后我们再来看一下,呃,第三种我们叫做传递函数依赖,这个传递函数依赖又是啥意思呢?诶在这还是先举一个函数的例子啊,比如说我这儿呢,一个这样的函数叫做呃,F等于,呃不得说F等于啊,应该是Y吧,Y等于FX,哎,没问题吧,然后又有一个函数,我叫什么呢?叫做这个Z等于,比如说JY。
07:32
哎,那我现在问一下大家,你说我给一个X最终能不能得到Z的值,能吧,对吧,我可以先告诉我它是不是得到Y的值,再通过它是不是进而得到Z的值啊,对吧?所以在这咱们是能得到的,但是呢,中间是不是应该是相当于是哎传递依赖的一个变量,对吧?哎,我们就说Z是传递函数依赖于X的,哎,就是这么个逻辑啊,是啊,那当然了,这个东西对应到我们关系型数据的库的表里边,应该是怎么样的一个形式的,是不是应该是这个字段,是不是依赖于它,然后它是不是依赖于它,那这时候我们就说它是不是传递函数依赖于这个字段啊,对吧?啊,就是这么个逻辑,那到底这里边谁跟谁是这种传递函数依赖关系呢?那文档当中有例子,但是我们不看这个呢,咱们一会儿自己去找一下,咱们锻炼一下,看看能不能自已找出来这个所谓的传递还是依赖啊,好了同学,那截止到现在函数依赖的这三种类型咱们就说完了,说完它之后我们就可以开始去学习这三个范式了啊OK,那当然这个时间有点长了,咱们先休息会儿啊,下节课再说啊。
08:32
嗯。
我来说两句