【问题标题】:Understanding trivial functional dependency from Sailboat book从帆船书了解琐碎的功能依赖
【发布时间】:2020-11-17 22:13:04
【问题描述】:

我正在阅读《帆船》第 7 章的幻灯片:https://www.db-book.com/db7/slides-dir/PDF-dir/ch7.pdf,我很难理解作者所说的意思

如果所有函数都满足,则函数依赖是微不足道的 关系的实例。

措辞与Wiki的措辞大不相同,很容易理解。

如果 Y 是 X 的子集,则函数依赖 FD:X → Y 称为平凡

我尝试查看一个可行的示例,但“关系的所有实例都满足”条件真的让我感到困惑。

以下是大学课程中的一个关系: http://web.cs.ucla.edu/classes/fall04/cs143/solutions/ch7.pdf

| A  | B  | C  |
|----|----|----|
| a1 | b1 | c1 |
| a1 | b1 | c2 |
| a2 | b1 | c1 |
| a2 | b1 | c3 |

在练习 7.4 的解决方案中,它是这样写的

非平凡的函数依赖是:A → B 和 C → B ...

对我来说,关系的实例都是表中的元组,每个元组都满足上面引用的所有函数依赖。我不明白为什么,使用帆船书的定义,这些函数依赖不是微不足道的。

感谢您阅读我的问题。


7.4 列出图 7.21 的关系满足的所有函数依赖。
答案:非平凡的函数依赖是:A → B 和 C → B, 练习 85 以及它们在逻辑上暗示的依赖关系:AC → B。有 19 个形式为 α → β 的平凡函数依赖关系,其中 β ⊆ α。 C 没有功能 确定 A 因为第一个和第三个元组具有相同的 C 但不同的 A 价值观。相同的元组也表明 B 在功能上不能确定 A。同样,A 在功能上不能确定 C,因为前两个元组具有 相同的 A 值和不同的 C 值。相同的元组也显示 B 不 功能确定 C.

【问题讨论】:

  • 请在您的帖子中以文字形式提出您提出问题所需的所有内容。使您的帖子自成一体。 “关系的实例都是表中的元组”没有意义。关系变量的实例是关系值,它不是元组值。
  • @philipxy 除了我对 relvar 的错误解释(根据 Wiki 不是标准术语)之外,我的帖子还缺少什么?我已经包含了相关的定义、示例和来源。即使 PDF 被删除,问题仍然可以回答。
  • 请改写我评论中的引用,这没有意义。重新完整,你没有给出所有练习 7.4 或其解决方案,所以不清楚你在说什么。
  • @philipxy 1. 作为 MathJax 在 Math.SE 上线性规划问题的倡导者和 this meta.SE answer 的作者,我肯定知道 SE 网络上允许哪些类型的图片。包含屏幕截图是一个说明性目的,它依赖于您要求的练习 7.4 的解决方案。没有屏幕截图也没关系,因为我已经在问题上下文中输入了表格。 2. 在帆船书上,写着“关系”。我在书中找不到包含“关系变量”一词的地方。
  • 您评论中的引用使用“表/关系的实例”来表示“特定时间/状态下表/关系变量的特定值/状态”。有时关系值是一组元组/记录;有时是一个袋子;有时这样的集合/包加上本质上是模式或其属性的标题;等取决于演示文稿。最好坚持你的教科书定义和术语使用。可悲的是,这个问答显示仍然很草率。 (记录和使用设计的语言和工具手册不是教科书。)(维基文章或网络帖子也不是。)(或幻灯片。)

标签: database relational-database database-schema functional-dependencies


【解决方案1】:

我们说 FD(函数依赖)在给定的关系值中满足(保持)当且仅当它所陈述的值是真的时。我们说 FD 在给定的关系变量/模式中满足(保持)当且仅当当当它满足(保持)在给定业务规则下可能出现的每个值时。

您的引号都没有给出 FD 在给定关系值或变量/模式中何时是微不足道的定义,因为他们说“如果”而不是 iff/when。他们只给出一个充分条件;他们没有给出充要条件。因此,对于给定的关系值或变量/模式,他们不会准确地告诉您何时 FD 是微不足道的。

如果他们说 iff/when,它们就是定义。

让我们将他们的“如果”表示为 iff/when。

“对关系的所有实例都满意”是草率、无用且具有误导性的。它的措辞旨在应用于关系变量/模式。它试图说,即使您不知道有什么约束条件,也会感到满意,即,即使没有约束条件,也会感到满意。在给定关系值的情况下使用它没有多大意义,因为某些 FD 在任何时候都对给定的关系值保持不变。 (很明显,一个值被限制为它自己。)

适用于变量/模式和值的正确措辞是,仅给定属性就满足,或暗示仅给定属性,或者,如果您只知道属性,则能够证明满足。

p>

在幻灯片底部显示

一般来说,如果 β ⊆ α,则 α → β 是微不足道的

这也不是一个定义,出于同样的原因,即(ab)在 iff/when 打算使用“if”时。但是将“如果”作为当夫/当,你会得到一个定义。它与您的第二个引用的措辞基本相同,α 代表 X,β 代表 Y,⊆ 代表子集。

因此,您的示例值中的平凡 FD 正是 X → Y,其中 Y ⊆ X。A → B & C → B 不是那种形式,因此它们不是该值的平凡 FD。

然后练习继续讨论持有的非平凡 FD,将持有的 FD 的定义应用于该关系值。一些重要的 FD 持有,而另一些则没有。但是微不足道的必须根据定义成立;无论给定属性赋予您什么价值,它们都是有效的。

【讨论】:

  • 我想我明白了。为了清楚起见,帆船书应该在“关系”后面添加“变量”这个词。关系变量的实例是关系值。无论元组值是什么,总有一类 FD 总是保持微不足道(由于设置包含属性子集,如 Y ⊆ X)。我们将这些 FD 定性为“微不足道的”。
  • 为了清楚起见,它应该添加“价值”。很明显,该练习讨论了关系值,并且字母+下标是一些彼此不同的值。如果您只知道您有一个可以保存该值的变量,那么您只能推断未保存该值的 FD 不保存在该变量中;保存在值中的 FD 可能不会保存在变量中。如果您被告知变量的 FD 是该值的 FD ...但您不是。如果你被告知示例表是变量中值的某种模式......但你不是。
  • FD 对关系值或变量做出某种陈述。琐碎的可以通过子集定义。但是该类的动机是它由仅给出属性的陈述为真的 FD 组成。 X → Y 表示每次出现给定的 X 子元组值时,它都具有相同的 Y 子元组值;每个 X 子元组值只有一个 Y 子元组值。对于 X={x1,...} & Y={y1, ...} 它表示 EXISTS f(x1,...)=(y1,...)。当 Y ⊆ X 时,EXISTS 不包含任何内容。这导致子集定义。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-05-04
  • 1970-01-01
  • 2018-09-04
  • 1970-01-01
  • 2011-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多