数据库中的函数依赖

functional dependencies in databases

我对确定功能依赖关系感到很困惑,需要确认我拥有所有依赖关系列表。我有一个 table.

从下面的table中,我发现:

我的问题是,我在这里是否正确列出了所有可能的功能依赖项?另外(如果我是对的),我看到 model --> make,我还需要 model, color --> make,等等。还有因为 make, msrp --> model, year,我还需要 model, year --> make, msrp 在名单?

功能依赖性一直有效。

当您尝试从数据中推导出 FD 时,您很可能会推导出仅因巧合而成立的 FD。 FD make, color -> model 表示 "When I see a Honda that's red, I know it's an Accord." 就您提供的数据而言,这是正确的。但你我都知道,如果我们等待更多数据,我们一定会找到一辆红色的本田思域。 FD make, color -> model 适用于此示例数据,但并非所有时间都适用。

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

Also (If I'm right), i see that model --> make, Do i still need to model, color --> make, etc.

如果你在学校这样做,你的教授可能希望看到 a) 所有可能的 FD(因此,包括 model, color --> make)和 b) 在你删除可还原的 FD 之后的所有 FD (因此,删除 model, color --> make)。

Also since make, msrp --> model, year , do I still need model, year --> make, msrp in the list?

是的。通过 BCNF 的规范化取决于确定 a) 所有候选键,和 b) 所有素数和非素数属性。 (主属性是 any 候选键的一部分的属性。)FD 集合 {AB->CD} 给你一个候选键 AB 和两个非主属性, C, D. FD 集 {AB->CD, CD->AB} 为您提供 两个 个候选键和零个非素数属性。