首页技术函数依赖的定义 部分函数依赖怎么理解

函数依赖的定义 部分函数依赖怎么理解

编程之家2026-06-271167次浏览

今天给各位分享函数依赖的定义的知识,其中也会对部分函数依赖怎么理解进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

函数依赖的定义 部分函数依赖怎么理解

数据库 关于函数依赖

当t1[X]=t2[X]为假时,说明任意两个元组的X(X可能包含多个字段)都不相等,也就是说X是唯一的,即X能唯一地标识该模式中的元组,所以X就是R的主键。故不管t1[Y]=t2[Y]为真或为假,都有X→Y成立。

可以找一个实例来理解:比如R(编号,姓名,年龄,学院,班级),X(编号),Y(年龄,班级),r是某一个班级的学生信息,t1(0001,小明,20,工学院,土木本一班),t2(0002,小马,19,工学院,土木本一班),若t1[X]=t2[X]为假,那说明在r中,任意两个学号都不相等,那X就可以作为R的主键,由主键可以确定该关系模式的所有字段,不管其他字段是否相等。

特别要注意函数依赖中“任意”两个字。

PS:好久没看过数据库理论的书了,如果答的不对,请多指教,函数依赖部分是让人比较头疼的地方......

数据依赖的数学定义

定义:设有一关系模式R(A1,A2,…,An),X和Y均为(A1,A2,…,An)的子集,对于R的值r来说,当其中任意两个元组u,v中对应于X的那些属性分量的值均相等时,则有u,v中对应于Y的那些属性分量的值也相等,称X函数决定Y,或Y依赖于X,记为X->Y。

例:有关系,学生(学号S#,姓名SN,系名SD),子集X(学号S#),子集Y(系名SD)。

函数依赖的定义 部分函数依赖怎么理解

每个学生有唯一的一个学号,学生中可以有重名的姓名,每个学生只能属于一个系,每个系有唯一的系代号。有此,可以找出学生关系模式中存在下列函数依赖:

S#->SN;S#->SD

例:有关系,学校简况(学号S#,系名SD,系主任MN,课程CN,成绩G)。可写出函数依赖:

S#->SD;SD->MN;S#,CN->G

根据函数依赖的不同性质,函数依赖可分为完全函数依赖、部分函数依赖和传递函数依赖。

2.2完全函数依赖

函数依赖的定义 部分函数依赖怎么理解

定义:在R(U)中,如果X->Y,对于X的任意一个真子集X’,都有X’不能决定Y,则称Y对X完全函数依赖,记为XY。

例:(S#,CN)->G

2.3部分函数依赖

定义:在R(U)中,如果X-> Y,但Y不完全函数依赖于X,则称Y对X部分函数依赖。

2.4传递函数依赖

定义:在R(U)中,当且仅当X-> Y,Y->Z时,称Z对X传递函数依赖。

例:描述学生(S#)、班级(SB)、辅导员(TN)的关系U(S#,SB,TN)。一个班有若干学生,一个学生只属于一个班,一个班只有一个辅导员,但一个辅导员负责几个班。根据现实世界可得到一组函数依赖:

F={S#->SB,SB->TN}

学生学号决定了所在班级,所在班级决定了辅导员,所以辅导员TN传递函数依赖于学生学号S#。

数据依赖还包括多值依赖和连接依赖两种形式。

--------------------------------------------------------------------------------------------------

数据库函数依赖问题。

一、函数依赖概念

函数依赖是从数学角度来定义的,在关系中用来刻画关系各属性之间相互制约而又相互依赖的情况。函数依赖普遍存在于现实生活中,比如,描述一个学生的关系,可以有学号、姓名、所在系等多个属性,由于一个学号对应一个且仅一个学生,一个学生就读于一个确定的系,因而当“学号”属性的值确定之后,“姓名”及“所在系”的值也就唯一地确定了,此时,就可以称“姓名”和“所在系”函数依赖于“学号”,或者说“学号”函数决定“姓名”和“所在系”,记作:学号→姓名、学号→所在系。下面对函数依赖给出确切的定义。

定义:设U{A1,A2,…,An}是属性集合,R(U)是U上的一个关系,x、y是U的子集。若对于R(U)下的任何一个可能的关系,均有x的一个值对应于y的唯一具体值,称y函数依赖于x,记作x→y。其中x称为决定因素。进而若再有y→x,则称x与y相互依赖,记作x←→y。例如表1.2所示“系”关系中:如果系名值是唯一的,即各系名均不相同,那么有函数依赖集:

系代码→系名,系代码→系地址,系代码→系电话,系代码→系专业设置。

系名→系代码,系名→系地址,系名→系电话,系名→系专业设置。

可见,系名与系代码相互依赖,记作系名←→系代码。

函数依赖中还可细分为多种函数依赖,分别介绍如下:

二、部分函数依赖

设R(U)是属性集U上的关系,x、y是U的子集,x’是x的真子集,若x→y且x’→y,则称y部分依赖x,记作X→PY。显然,当且仅当x为复合属性组时,才有可能出现部分函数依赖。

例如表1.6中,显然有课程号→课程名,课程号→开课教研室代码。从另一角度看,只要课程号一定,同时课程名确定,开课教研室也就唯一确定,因此课程号+课程名→开课教研室代码。但它与前述课程号→开课教研室代码是不同的,因为{课程号,课程名}存在真子集:“课程号”,课程号→开课教研室代码,我们把课程号十课程名→开课教研室代码称为“开课教研室代码”部分函数依赖于课程号+课程名。

三、完全函数依赖

设R(U)是属性集U上的关系,x、y是U的子集,x’是x的真子集。若对于R(U)的任何一个可能的关系,有x→y但x’→y,则称y完全函数依赖于x,记作X→FY。

所谓完全依赖是说明在依赖关系的决定项(即依赖关系的左项)中没有多余属性,有多余属性就是部分依赖。

例如设关系模式R,R=R(学号,姓名,班号,课程号,成绩),易知:

“(学号,班号,课程号)→成绩”是R的一个部分依赖关系。因此有决定项的真子集(学号,课程号),使得“(学号,课程号)→成绩”成立,且“学号→成绩”或“课程号→成绩”成立,“(学号,课程号)→成绩”是R的一个完全依赖关系。

四、传递函数依赖

设R(U)是属性集U上的关系,x、y、z是U的子集,在R(U)中,若x→y,但y→x,若y→z,则x→z,称z传递函数依赖于x,记作X→TZ。

例如在一个学校中,每门课均是某一位老师教,但有些老师可教多门课,则有关系“教学”如表3.1所示。

由以上关系不难分析,课程名→职工号、职工号→课程名,但职工号和其他属性的函数关系中都是决定因素,即职工号→老师名、职工号→职称,在这种情况下,老师名、职称传递函数依赖于课程名。

表3.1教学表

课程名

职工号

老师名

性别

出生日期

职称

英语

T1

张平

55.6.3

教授

数学

T2

王文

62.10.5

副教授

C语言

T3

李迎

62.10.5

副教授

数据库

T2

王文

62.10.5

副教授

下面进一步举例说明。

例如设车间考核职工完成生产定额关系为W:

W(日期,工号,姓名,工种,定额,超额,车间,车间主任)

请画出该关系中存在的所有类型的函数依赖。

解答:因每个职工每个月超额情况不同,而定额一般很少变动,因此为了识别不同职工以及同一职工不同月份超额情况,选定“日期”与“工号”两者组合作为主关键字。为了直观醒目,可以在关系框架中的主关键字下方划一横线。

用箭头标出各属性的依赖情况,如图3.3所示:

图3.3关系中各属性的依赖情况

图中表明:“超额”完全函数依赖于主关键字;“姓名”、“工种”和“车间”仅依赖于关键字中的“工号”;因“定额”依赖于“工种”,故“定额”传递函数依赖于“工号”;因“车间主任”函数依赖于“车间”,因而“车间主任”传递函数依赖于“工号”。

文章到此结束,如果本次分享的函数依赖的定义和部分函数依赖怎么理解的问题解决了您的问题,那么我们由衷的感到高兴!

T1战队成员名单,t1历届队员名单大全dnf男格斗时装(dnf男格斗一觉外观)