数据库原理函数依赖有哪些,关于数据库的函数依赖各范式
来源:整理 编辑:黑码技术 2024-05-17 09:13:09
本文目录一览
1,关于数据库的函数依赖各范式
1.课名<-->老师,老师-->家庭住址,2.ABC,BC为侯选码 因BC-D,D-E 所以BC-E,又ABC包含BC,ABC-E,所以存在非主属性E部分函数依赖于ABC,因此它不满足第2范式,它满足第一范式。三范式。不存在非主属性部分依赖于关键属性。也不存在属性依赖于其他非主属性。
2,数据库中的函数依赖
上述模式实际上对应一个数据库表,该表由SNO,SDEPT,MN,CNAME,G字段所构成,由于有函数依赖关系F,于是该关系(表)的主码是(SNO,CNAME),这意味着SNO,CNAME皆不可为空,但现在学生没有选课,CNAME为空,违反了主码不为空的原则,所以与之相关的记录是不能写入数据库的,同时,由于系中尚没有其他的学生,就是表中没有系及其负责人的信息,故与该学号相关的系、负责人是不能写入数据库的。当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:好久没看过数据库理论的书了,如果答的不对,请多指教,函数依赖部分是让人比较头疼的地方......
3,数据库理论函数依赖
函数依赖:FD(function dependency),设有关系模式R(U),X,Y是U的子集, r是R的任一具体关系,如果对r的任意两个元组t1,t2,由t1[X]=t2[X]导致t1[Y]=t2[Y], 则称X函数决定Y,或Y函数依赖于X,记为X→Y。X→Y为模式R的一个函数依赖。部分函数依赖:即局部依赖,对于一个函数依赖W→A,如果存在XW(X包含于W)有X→A成立, 那么称W→A是局部依赖,否则称W→A为完全函数依赖。传递依赖:在关系模式中,如果Y→X,X→A,且XY(X不决定Y), AX(A不属于X),那么称Y→A是传递依赖。函数依赖集F的闭包F+: 被逻辑蕴涵的函数依赖的全体构成的集合,称为F的闭包(closure),记为F+。最小依赖集:如果函数集合F满足以下三个条件(1)F中每个函数依赖的右部都是单属性; (2)F中的任一函数依赖X→A,其F-{X→A}与F是不等价的;(3)F中的任一函数依赖X→A,Z为X的子集,(F-{X→A})∪{Z→A}与F不等价。则称F为最小函数依赖集合,记为Fmin。当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:好久没看过数据库理论的书了,如果答的不对,请多指教,函数依赖部分是让人比较头疼的地方......
4,函数依赖可分为哪三种
1.部分函数依赖 设R(U)是属性集U上的关系,x、y是U的子集,x是x的真子集,若x→y且x→y,则称y部分依赖x,记作X→PY。显然,当且仅当x为复合属性组时,才有可能出现部分函数依赖。 例如表1.6中, 显然有课程号→课程名,课程号→开课教研室代码。从另一角度看,只要课程号一定,同时课程名确定,开课教研室也就唯一确定,因此课程号+课程名→开课教研室代码。 但它与前述课程号→开课教研室代码是不同的,因为{课程号,课程名}存在真子集:“课程号”,课程号→开课教研室代码,我们把课程号十课程名→开课教研室代码称为“开课教研室代码”部分函数依赖于课程号+课程名。2.完全函数依赖 设R(U)是属性集U上的关系,x、y是U的子集,x是x的真子集。若对于R(U)的任何一个可能的关系,有x→y但x→y,则称y完全函数依赖于x,记作X→FY。 所谓完全依赖是说明在依赖关系的决定项(即依赖关系的左项)中没有多余属性,有多余属性就是部分依赖。 例如设关系模式R,R=R(学号,姓名,班号,课程号,成绩),易知: “(学号,班号,课程号)→成绩”是R的一个部分依赖关系。 因此有决定项的真子集(学号,课程号),使得“(学号,课程号)→成绩”成立,且“学号→成绩”或“课程号→成绩”成立,“(学号,课程号)→ 成绩”是R的一个完全依赖关系。 3.传递函数依赖 设R(U)是属性集U上的关系,x、y、z是U的子集,在R(U)中,若x→y,但y→x,若y→z,则x→z,称z传递函数依赖于x,记作X→TZ。 例如在一个学校中,每门课均是某一位老师教,但有些老师可教多门课,则有关系“教学”如表3.1所示。 由以上关系不难分析,课程名→职工号、职工号→课程名,但职工号和其他属性的函数关系中都是决定因素,即职工号→老师名、职工号→职称,在这种情况下,老师名、职称传递函数依赖于课程名。1. 流依赖(flow dependency),一个变量在一次表达式中赋值或修改然后用在后来的另一个表达式中。例 a=b*c ... d=a-e 2.反依赖(anti dependency),一个变量在一个表达式中被使用然后在后来一个表达式中被修改赋值。例 a=b*c ...... b=d+e 3.输出依赖,一个变量在一表达式中被修改赋值然后又在后来另一个表达式中被修改值,例 a=b+c ......a=d-e
5,谁能用最简单的一个例子给我讲一下 数据库的函数依赖 只讲最基本的
设R(U)是一个属性集U上的关系模式,X和Y是U的子集。 若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等, 而在Y上的属性值不等, 则称 “X函数确定Y” 或 “Y函数依赖于X”,记作X→Y。 X称为这个函e79fa5e98193e4b893e5b19e31333332626137数依赖的决定属性集(Determinant)。 Y=f(x) 说明: 1. 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。 2. 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。 例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立 3. 数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“姓名→年龄”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。 例: Student(Sno, Sname, Ssex, Sage, Sdept) 假设不允许重名,则有: Sno → Ssex, Sno → Sage , Sno → Sdept, Sno ←→ Sname, Sname → Ssex, Sname → Sage Sname → Sdept 但Ssex -\→Sage 若X→Y,并且Y→X, 则记为X←→Y。 若Y不函数依赖于X, 则记为X-\→Y。 在关系模式R(U)中,对于U的子集X和Y, 如果X→Y,但Y 不为 X的子集,则称X→Y是非平凡的函数依赖 若X→Y,但Y 为 X的子集, 则称X→Y是平凡的函数依赖 例:在关系SC(Sno, Cno, Grade)中, 非平凡函数依赖: (Sno, Cno) → Grade 平凡函数依赖: (Sno, Cno) → Sno (Sno, Cno) → Cno 部分函数依赖: 若x->y 并且,存在X的真子集x1,使得x1->y,则 y部分依赖于 x。 完全函数依赖:若x->y并且,对于x的任何一个真子集x1,都不存在x1->y 则称y完全依赖于x。当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:好久没看过数据库理论的书了,如果答的不对,请多指教,函数依赖部分是让人比较头疼的地方......
文章TAG:
数据 数据库 原理 函数 数据库原理函数依赖有哪些