首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >能否在此表中找到4个不同的函数依赖项?

能否在此表中找到4个不同的函数依赖项?
EN

Stack Overflow用户
提问于 2013-06-01 13:10:55
回答 1查看 313关注 0票数 1

我的教授在下表中给出了一个任务,以找到4种不同的功能依赖关系:

Company(Company_Name,Street_Address,城市,Zip,State,CEO_Name)

他还指出:每一家公司都有不同的(唯一)地址含义(Street_Address、City、Zip、State)共同构成一个密钥。不同的公司可能有相同的名字。每家公司都有一个CEO,一个人不可能是不止一个公司的首席执行官。CEO的名字可能不是唯一的(可能有两个CEO的名字是一样的)。要计算具有属性(A、B、C、D)的表中的4个函数依赖关系:如果A -> B显然是A,C -> B也是。这不应算作两个独立的依赖项。另一方面,A -> B和A -> C应算作2种不同的函数依赖关系。“

但在我看来,没有4种功能依赖关系。

  1. 首席执行官,公司名称-> (Street_address,城市,邮编,州)
  2. 压缩->状态

但是,由于两家公司可以有相同的名称,所以也应该有一个主键,比如"Company_Number“。但是创建已知的表并不是任务..。

EN

回答 1

Stack Overflow用户

发布于 2013-06-01 14:31:24

函数依赖项回答了一个问题:“给出X的一个值,我们知道Y的一个值吗?”Eitehr X或Y可能是属性集合,而不仅仅是单个属性。当你阅读这个答案时,要记住这一点。

每一家公司都有一个不同的(唯一的)地址含义(Street_Address,City,Zip,State)共同构成一个密钥。

顾名思义,这意味着

  • Street_Address,城市,Zip,州立-> CEO_Name
  • Street_Address,城市,Zip,州立-> Company_Name

这是候选密钥{Street_Address、City、Zip、State}的所有可能的FDs。四个中的两个--回家一半。

您将{CEO_Name,Company_name}标识为函数依赖项的左侧.在这种情况下,您还可以将其标识为候选密钥。让我们来看看一些虚构的数据。

代码语言:javascript
复制
Company_Name  CEO_Name    Street_Address  City      State  Zip
--
Wibble, Inc.  Mary Smith  123 E Main St   Anytown   PA     00001
Wibble, Inc.  Mary Smith  456 S Darn St   Sometown  WY     10000

这些数据描述了两家不同的公司,它们的名字恰好相同,有两位不同的CEO恰好有着相同的名字。这符合FDs的描述,但清楚地表明{Company_Name,CEO_Name}不是候选密钥。伪造的数据还清楚地表明,{Company_Name,CEO_Name}不能是函数依赖的左侧。给定{Company_Name,CEO_Name}的单个值,对于任何其他属性,我们都没有一个和唯一一个值。

在将属性Company_Name和CEO_Name排除为左侧的可能性之后,“制造”另外两个函数依赖项的唯一方法是在候选键{Street_Address、City、Zip、State}中找到它们。不是因为候选键有什么特别之处,而是因为这些是剩下的唯一属性。

我猜你的老师希望你说

  • Zip ->城市
  • Zip ->状态

在美国(在“真实”世界),"Zip -> City,State“并不适用。邮政编码与运营商如何驾驶他们的路线和递送邮件有关;邮政编码与地理无关。一些城市(和邮政编码)跨越州边界。相当多的邮政编码跨越相邻的城市在一个州内。随着USPS削减预算,我预计这样的邮政编码数量会增加。

但在学术界,这种现实世界的行为往往由于教学原因而被忽视.这就是为什么我敢打赌你们的老师希望{Zip ->市,州}。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16873088

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档