加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

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的一个函数依赖。

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的一个函数依赖。
:某个属性决定另一个属性时,称另一属性依赖于该属性。比如在设计学生表时,一个学生的学号能决定学生的姓名,也可称姓名属性依赖于学号,对于现实来说,就是如果知道一个学生的学号,就一定能知道学生的姓名,这种情况就是姓名依赖于学号,这就是函数依赖,函数依赖又分为非平凡依赖,平凡依赖,多值依赖。从性质上还可以分为部分依赖,完全依赖两种。

概念

  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 }。

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读