确定此数据是否真的符合第四范式?

Determining if this data is really in 4th normal form?

我有一些 - companylocationproduct 详细信息要存储在数据库

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 是

  1. 不是从候选键派生的(公司 ->> 位置和公司 ->> 公司不是候选键的产品)
  2. 或者工会不做整套(公司U位置 但是我的同事不同意我的看法,他坚持认为对于具有多值依赖关系的关系,每个公司在公司列中至少应该存在四个相同的值。即
    t1(公司)= t2(公司)= t3(公司)= t4(公司),
    对于公司abc,这是真的。但对于在三个地点只生产一种产品的公司 "buggy",这是不正确的。

关于我参考的正式定义和类似示例: https://en.wikipedia.org/wiki/Multivalued_dependency Fourth_normal_form 示例也在 wiki 上。

我知道我的同事正在做教育学,但在阅读正式定义后我也开始看到同样的问题。 (毕竟这些都是在数学基础上推导出来的。)

更新:我不是在问如何将这些数据规范化为 4NF,我想我知道。 (我需要将其分为两个表 1)公司 - 位置和 2)公司 - 产品。
我已经完成了。

谁能解释一下为什么这种关系仍然是 MVD,即使 它不满足正式定义? 非常欢迎详细的解释。

"There exist" 表示存在一些 ,并且它们不必 不同 EXISTS followed by some name(s) 表示存在一些 value(s) 由名称引用,条件成立。多个名称可以引用同一个值。 (FOR ALL可以用EXISTS来表示。)

MVD 的概念可以应用于变量和值。 事实上,链接定义的形式是,当 MVD 在变量意义上成立时,它在变量意义上成立价值感"in any legal relation"。要了解特定值是否合法,您需要 业务知识 。然后,您可以显示 该值 是否满足 MVD。但是要显示其 变量 是否满足 MVD,您必须证明 MVD 满足变量可以容纳的 "in any legal relation" 值。一个有效值可以告诉您 MVD 包含(它和)它的变量,但它不能告诉您 MVD 包含 保存在它的变量中。这需要 更多业务知识

您可以通过使用 MVD 的定义来证明此 value 违反 4NF。 该定义表明关系变量满足 MVD当某个条件成立时 "for any valid relation" 值:

for all pairs of tuples t1 & t2 in r such that t1[a] = t2[a] there exist tuples t3 & t4 [...]

您的同事声称 t1 和 t2 的 MVD 和值是多少 存在 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 - T) 的预测。这个定义可能对你和你的同事更有帮助,因为它避免了你和他们误解的术语。例如,您的示例数据是这两个投影的连接:

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} (等等)。 (也许您将能够想到与零、一、二、三等元组的关系示例,其中一个或多个(平凡 and/or 非平凡)MVD 成立。)

当然,这两个定义是描述相同情况的两种不同方式。

PS 1 每当 FD F → T 成立时,MVD F ↠ T 成立。对于 BCNF 中的关系,违反 4NF 和 5NF 的 MVD 是那些与 FD 没有关联的。

PS 2 当且仅当当它的值被代入给定的时,它在业务术语中做出真实的陈述时,关系变量才意味着保存元组语句模板,或 predicate。这加上 MVD 的 JD 定义给出了关系变量在业务术语中满足 MVD 的条件。这里我们的谓词是 ...company...location...product... 的形式。 (例如company namedcompanyis located atlocationand makes productproduct.) 对于所有有效的业务情况,FOR ALL company, location, product,

,这个 MVD 恰好适用于一个变量
        EXISTS product [...company...location...product...]
    AND EXISTS location [...company...location...product...]
IMPLIES ...company...location...product...