FD函数依赖
发布时间:2020-05-23 13:05:39 所属栏目:程序设计 来源:互联网
导读:fd FD(functional dependency):在数据库系统中,设有关系模式R或简记为R,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的一个函数依赖。
fdFD(functional dependency):在数据库系统中,设有关系模式R或简记为R,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的一个函数依赖。:某个属性决定另一个属性时,称另一属性依赖于该属性。比如在设计学生表时,一个学生的学号能决定学生的姓名,也可称姓名属性依赖于学号,对于现实来说,就是如果知道一个学生的学号,就一定能知道学生的姓名,这种情况就是姓名依赖于学号,这就是函数依赖,函数依赖又分为非平凡依赖,平凡依赖,多值依赖。从性质上还可以分为部分依赖,完全依赖两种。 概念1. 函数依赖不是指关系模式R的某个或某些关系实例满足的约束条件,而是指R的所有关系实例均要满足的约束条件。 2. 函数依赖是语义范畴的概念。只能根据数据的语义来确定函数依赖。 例如“姓名→年龄”这个函数依赖只有在不允许有同名人的条件下成立 3. 数据库设计者可以对现实世界作强制的规定。例如规定不允许同名人出现,函数依赖“ 姓名 → 年龄 ”成立。所插入的元组必须满足规定的函数依赖,若发现有同名人存在, 则拒绝装入该元组。函数依赖与属性关系属性之间有三种关系,但并不是每一种关系都存在函数依赖。设R(U)是属性集U上的关系模式,X、Y是U的子集: ● 如果X和Y之间是1:1关系(一对一关系),如学校和校长之间就是1:1关系,则存在函数依赖X → Y和Y →X。 ● 如果X和Y之间是1:n关系(一对多关系),如年龄和姓名之间就是1:n关系,则存在函数依赖Y → X。 ●如果X和Y之间是m:n关系(多对多关系),如学生和课程之间就是m:n关系,则X和Y之间不存在函数依赖。案例分析例: 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(职工名,项目名,工资,部门名,部门经理),如果规定每个职工可参加多个项目,各领一份工资;每个项目只属于一个部门管理;每个部门只有一个经理。 1.试写出关系模式R的基本函数依赖和所有的候选码。 2.说明R不是2NF模式的理由,并把R分解成2NF模式集。 3.进而把R分解成3NF模式集,并说明理由。 七、解:1.R的基本FD有三个: (职工名,项目名)工资 项目名部门名 部门名部门经理 候选码为(职工名,项目名)。 2.根据1),R中存在下列两个FD: (职工名,项目名)(部门名,部门经理) 项目名(部门名,部门经理) R应分解成两个模式: R1(项目名,部门名,部门经理) R2(职工名,项目名,工资) R1和R2都是2NF模式。 3.R2已是3NF模式。 在R1中,由于存在两个FD: 项目名部门名 部门名部门经理 即存在一个传递依赖。 对R1应分解成两个模式:R11(项目名,部门名),R12(部门名,部门经理)。因此,R分解成3NF模式集时,ρ={ R11,R12,R2 }。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
