什么是函数依赖?

ppt2000 2005-11-14 10:01:26
什么是函数依赖、部分函数依赖、完全函数依赖、传递函数依赖?请通俗的讲解一下,不要用那些数学符号,最好能举个例子。
...全文
3348 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ppt2000 2005-12-05
  • 打赏
  • 举报
回复
没有回答的?
ppt2000 2005-11-23
  • 打赏
  • 举报
回复
没有回答的?
rfq 2005-11-15
  • 打赏
  • 举报
回复
你一提醒,我也该复习复习!谢谢
zouqiang122 2005-11-15
  • 打赏
  • 举报
回复
支持一下吧!
superunusa 2005-11-15
  • 打赏
  • 举报
回复
这是数据库原理上的东西,如果你让说出具体是什么东西,还真不好说,感觉平时用的不多。多看看理论方面的书吧。

ChengKing 2005-11-15
  • 打赏
  • 举报
回复 1
一、函数依赖概念

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

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

ppt2000 2005-11-15
  • 打赏
  • 举报
回复
看书看不明白阿。
lalakid 2005-11-14
  • 打赏
  • 举报
回复
你肯定是看书了,但是没有看明白,
我以前也有这种情况,每个字都认识,但是组成句子后却不知道是什么意思了
呵呵,多看几遍吧,你要是想让别人给你讲讲,估计是很困难的,而且他在这里写,跟在书上写不是一个道理吗,最好你去找个老师,直接讲吧,
bugchen888 2005-11-14
  • 打赏
  • 举报
回复
萨师煊《数据库系统概论》高等教育出版社
bugchen888 2005-11-14
  • 打赏
  • 举报
回复
看书吧,《数据库原理》里面举的例子讲的很清楚了。

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧