确定这个数据是否真的是第四范式?

问题描述 投票:0回答:1

我有一些 - 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 是

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

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

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

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

有人可以解释为什么这种关系仍然是 MVD,即使它不满足正式定义吗? 非常欢迎详细的解释。

database-normalization
1个回答
1
投票

“存在”表示存在一些,它们不必是不同的 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...
© www.soinside.com 2019 - 2024. All rights reserved.