数据库中的功能依赖

时间:2015-02-16 21:23:23

标签: database-design functional-dependencies

我对确定功能依赖性感到困惑,需要确认我拥有所有依赖项列表。我有一张桌子。

enter image description here

从下表中我发现:

enter image description here

我的问题是,我是否正确列出了所有可能的功能依赖项?另外(如果我是对的),我看到model --> make,我还需要model, color --> make等等。自make, msrp --> model, year以来,我还需要model, year --> make, msrp在列表中?

1 个答案:

答案 0 :(得分:3)

功能依赖性一直存在。

当您尝试从数据中导出FD时,您可能只能通过巧合导出FD。 FD make, color -> model意味着"当我看到本田的红色时,我知道它是一个雅阁。"就你所提供的数据而言,这是真的。但是你和我都知道,如果我们等待更多的数据,我们肯定会找到一辆红色的本田思域。 FD make, color -> model适用于此示例数据,但它并非始终保持不变。

要确定您是否已根据样本数据找到所有FD,您必须测试每种可能的属性组合。 (或者,更好的是,写一个程序来做它。)我没有尝试找到所有这些。你似乎走在了正确的轨道上。

  

另外(如果我是对的),我看到那个模型 - >制作,我还需要吗?   型号,颜色 - >制作等等。

如果您在学校这样做,您的教授可能希望看到a)所有可能的FD(包括model, color --> make)和b)您删除后的所有FD可简化的(所以,删除model, color --> make)。

  

此外,自make,msrp - >模特,一年,我还需要模特,一年    - > make,msrp在列表中?

是。通过BCNF的归一化取决于确定a)所有候选键,以及b)所有主要和非主要属性。 (主要属性是任何候选键的一部分属性。)FD {AB->CD}的集合为您提供了一个候选键AB和两个非主要键属性,C, D。 FD {AB->CD, CD->AB}集合为您提供两个候选键和零非主要属性。