我有一些 - company, location and product details to store in a db.
sample data
company location product
------------------------------
abc hilltop alpha
abc hilltop beta
abc riverside alpha
abc riverside beta
buggy underbridge gama
buggy underbridge theta
buggy underbridge omega
据我所知,关系是多值的。并且数据需要归一化,因为 MVD 是
对于我引用的正式定义和类似示例: https://en.wikipedia.org/wiki/Multivalued_dependency 和 Fourth_normal_form 示例也在 wiki 上。
我知道我的同事正在做教育学,但我在阅读正式定义后也开始看到同样的问题。 (毕竟这些都是在数学基础上推导出来的。)
更新:我不是在问如何将这些数据规范化为 4NF,我想我知道。 (我需要把它分成两张表 1)公司 - 位置和 2)公司 - 产品。
我已经做过了。
有人可以解释为什么这种关系仍然是 MVD,即使它不满足正式定义吗? 非常欢迎详细的解释。
“存在”表示存在一些值,它们不必是不同的。 EXISTS 后跟一些名称表示存在一些值被引用按条件成立的名称。多个名称可以引用同一个值。 (FOR ALL 可以用 EXISTS 来表示。)
MVD 的概念可以应用于变量和值。 事实上,链接定义的形式是,当 MVD 在值意义上成立时,它在变量意义上成立 “在任何法律关系中”。要知道某个特定值是合法的,您需要商业知识。然后您可以显示那个值是否满足 MVD。但是要显示其 variable 是否满足 MVD,您必须证明 MVD 满足变量可以持有的“任何法律关系”值。一个有效值可以告诉您 MVD doesn't hold in (it and) its variable,但它不能告诉您 MVD does hold 在其变量中。这需要更多的商业知识。
您可以通过使用 MVD 的定义来证明此 value 违反了 4NF。 该定义表明,当某个条件满足“对于任何有效关系”值时,关系变量满足 MVD:
对于 r 中的所有元组 t1 和 t2 对,使得 t1[a] = t2[a] 存在元组 t3 和 t4 [...]
您的同事声称 t1 和 t2 的 MVD 和值是多少 doesn't 存在 t3 和 t4 的值?没有这种 MVD 和 t1 & t2 值的组合。例如,对于 {company} ↠ {product} 和 t1 & t2 两者(越野车、underbridge、gamma),我们可以将(company、underbridge、gamma)作为 t3 和 t4 的值,对于 t1 的所有其他选择以此类推& t2.
F ↠ T holding 的另一个定义是二元 JD(连接依赖)*{F U T, F U (A - T)} 成立,即关系等于其在 F U T & F U (A -吨)。这个定义可能对你和你的同事更有帮助,因为它避免了你和他们误解的术语。例如,您的示例数据是这两个投影的结合:
company location
--------------------
abc hilltop
abc riverside
buggy underbridge
company product
----------------
abc alpha
abc beta
buggy gamma
buggy theta
buggy omega
所以它满足 JD *{{company, location}, {company, product}},所以它满足 MVDs {company} ↠ {location} 和 {company} ↠ {product} (等等)。 (也许您将能够想到与零、一、二、三等元组的关系示例,其中一个或多个(平凡和/或非平凡)MVD 成立。)
当然,这两个定义是描述相同条件的两种不同方式。
PS 1 每当 FD F → T 成立时,MVD F ↠ T 成立。对于 BCNF 中的关系,违反 4NF 和 5NF 的 MVD 是那些与 FD 没有关联的 MVD。
PS 2 当且仅当它的值被代入给定的语句模板或 predicate 时,关系变量在业务术语中做出真实的陈述时,关系变量才意味着保存元组。这加上 MVD 的 JD 定义给出了关系变量在业务术语中满足 MVD 的条件。这里我们的谓词是
...company...location...product...
的形式。 (例如company named
company
is located at
location
and makes product
product
。)碰巧这个MVD适用于所有有效业务情况下的变量,FOR ALL company, location, product
,
EXISTS product [...company...location...product...]
AND EXISTS location [...company...location...product...]
IMPLIES ...company...location...product...