我有一些 - 公司,位置和产品详细信息要存储在数据库中。
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 和wiki上的Fourth_normal_form示例。
我知道我的同事正在教育学,但在阅读正式定义之后,我也开始看到同样的问题。 (毕竟这些都是在数学基础上得出的。)
更新:我不是问如何将这些数据标准化为4NF,我想我知道。 (我需要将其分为两个表1)公司 - 地点和2)公司 - 产品 我已经做过了。
有人可以解释这种关系如何仍然是MVD,即使它不符合正式定义吗? 详细解释非常受欢迎。
答案 0 :(得分:1)
“存在”表示存在一些值,并且它们不必不同。 EXISTS后跟一些名称(s )表示存在某些条件所引用的某些值,条件成立。多个名称可以引用相同的值。 (FOR ALL可以用EXISTS表示。)
MVD的概念可以应用于变量和值。实际上,链接定义的形式是当MVD保持在值意义上时,MVD保持在变量意义上 “在任何法律关系中”。要知道特定价值是合法的,您需要商业知识。然后,您可以显示该值是否满足MVD。但要显示其变量是否满足MVD,您必须证明MVD满足变量可以容纳的“任何法律关系”值。一个有效值可以告诉您MVD 不保留(它和)其变量,但它无法告诉您MVD 保留其变量。这需要更多商业知识。
您可以通过使用MVD的定义来证明此值违反了4NF。定义说当某个条件适用于任何条件时,关系变量满足MVD有效关系“值:
对于所有元组t1& r中的t2使得t1 [a] = t2 [a]存在元组t3& t4 [...]
对于t1和amp;的MVD和值t2你的同事是否声称不存在 t3&的值T4?对于t1和amp;没有MVD和值的这种组合。 T2。例如{company}↠{product}和t1& t2(bug,underbridge,gamma),我们可以将(公司,underbridge,gamma)作为t3和amp;的值。 t4等等,用于t1&的所有其他选择T2。
F↠Tholding 的另一个定义是二元JD(连接依赖)* {FUT,FU(A-T)}成立,即该关系等于其投影的连接关于FUT& 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}},因此它满足MVD {company}↠{location}和{company}↠{product}(以及其他)。 (也许你将能够想到一个或多个(平凡的和/或非平凡的)MVD所拥有的零,一,二,三等元组关系的例子。)
当然,这两种定义是描述相同条件的两种不同方式。
PS 1 每当FD F→T成立时,MVDF↠T成立。对于BCNF中的关系,违反4NF&的MVD。 5NF是那些与FD无关的人。
PS 2 当且仅当它的值被替换为给定语句模板或谓词<时,它才能保存元组,当且仅当它在业务术语中生成真实语句时/ em>的。加上MVD的JD定义为在业务术语中满足MVD的关系变量提供了条件。这里我们的谓词的格式为...company...location...product...
。 (例如 company named
company
is located at
location
and makes product
{{ 1}}。)对于所有有效的业务情况{1},
product