【问题标题】:Functional Dependencies examples功能依赖示例
【发布时间】:2016-12-07 12:34:15
【问题描述】:

因此,总而言之,仅通过查看抽象示例,我在理解函数依赖关系方面遇到了重大困难,并且非常感谢对理解可能的现实生活情况的一些帮助。 我想看看这些功能依赖是否违反了 BCNF。 我已经阅读了很多解释,但我仍然难以完全理解,仅通过查看以下字符我无法理解全貌。我觉得我需要一些真实的数据来思考,因此我的示例如下。

R(A,B,C,D,E) where functional dependencies are AB -> C, DE -> C, and B -> D.

我在这里尝试不同的示例和场景并得到了这个。不确定我的想法是否完全错误。但我走了。

Employee(employee_id, firstname, lastname, title, department)
AB -> C,   employee_id, firstname -> lastname   (lastname can be determined by employee_id and firstname). lefthand side is a key so no bcnf violation?
DE -> C,   title, department -> lastname   (lastname of specific employee can NOT be determined by title and department. a bcnf violation, because lefthand side contain no key attribute?
B -> D,    firstname -> title   (title of employee can not be determined by only firstname, because it can exist several employees with same firstname? and lefthand side has no key attribute, => bcnf violation?

我现在的问题是,对于上述关系的这些 FD,在我测试的每个示例上都必须是相同的结果吗?还是取决于每个关系以及它们具有的属性以及顺序?

如果我尝试另一个具有相同 FD 和关系的示例。

Movie(movieName, published, starName, age, address)
movieName, published -> starName    (starnName can be determined from movieName and published. no bcnf violation?
age, address -> starName  (starName cannot be determined from age and address. bcnf violation?
published -> age  (age of the movie can be determined from published. No bcnf violation?

我真的很感激一些指导。

谢谢。

【问题讨论】:

    标签: relational-algebra functional-dependencies


    【解决方案1】:

    您不了解“功能依赖”或“BCNF”的定义。您需要记住定义,包括定义使用的术语的定义。

    功能依赖并不是在某些日常意义上“确定”一件事与另一件事。

    在给定的表中,当决定性属性集的每个子行值总是与确定的属性集的相同子行值出现时,FD 成立。。当一个 non-trivial FD 的每个 determinant 都是一个 superkey 时,一个表在 BCNF 中。 (了解这些术语的定义。)

    在实践中,我们确定给定表的其他列在功能上确定哪些列,然后进行数学运算,然后使用得出的结果。从一个复杂的例子中没有什么可学的。您在问题中给出的每个示例表都有特定的含义,并且考虑到出现的情况,它没有那组 FD。使用常识,在 Employee 中,employee_id 确定所有属性,并且可能没有其他 FD 持有,除了那些必须持有的那些。使用常识,在电影中,许多电影可以有相同的名称,并且唯一的 FD 是 {published} -> {age} 和那些从它跟随的。

    任何时候确实有一个关系“R(A,B,C,D,E),其中函数依赖是 AB -> C、DE -> C 和 B -> D” 以及它们暗示的那些(大概是 R、A、B、C、D 和 E 是实际名称的占位符)然后是 候选键和超级键以及它是否在BCNF 以及如何分解它总是相同的(就 A、B、C、D 和 E 而言)。

    【讨论】:

    • 啊,好吧。所以这仅对与 tha FD 的关系有效,但如果 FD 改为:例如 AB->C、C->E、D-B,它很可能会有所不同?是的,我可能会花费大量时间试图理解这些定义,并且尽可能多地理解这些定义。谢谢
    • stackoverflow.com/a/27504915/3404097。还有我的扩展答案。记住定义、定理/规则和算法是无可替代的,但示例和实践会大有帮助。
    • 什么仅对该关系和 FD 有效? 如果持有 FD AB->C、C->E、D->B 会有什么不同?如果您的意思是可能的 BCNF 分解,那么是的。但您无需知道 FD 是如何产生的即可使用分解算法。
    猜你喜欢
    • 1970-01-01
    • 2021-04-24
    • 2013-01-09
    • 2010-12-18
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多