Functional dependencies 素数属性和部分依赖关系的澄清

Functional dependencies 素数属性和部分依赖关系的澄清,functional-dependencies,Functional Dependencies,当我在看我的讲稿幻灯片时,我遇到了这个我认为是错误的例子。我的讲师无法澄清。如果我能得到一些澄清,我将不胜感激 R = (A, B, C) Functional Dependencies = (A -> B, B -> A) 这个例子说明了上述的最高标准形式是1NF,因为A->B形成了部分依赖关系 我的解决方案: AC -> BC (via augmentation axiom) BC -> AC (via augmentation axiom) (A,C) and

当我在看我的讲稿幻灯片时,我遇到了这个我认为是错误的例子。我的讲师无法澄清。如果我能得到一些澄清,我将不胜感激

R = (A, B, C)
Functional Dependencies = (A -> B, B -> A)
这个例子说明了上述的最高标准形式是1NF,因为A->B形成了部分依赖关系

我的解决方案:

AC -> BC (via augmentation axiom)
BC -> AC (via augmentation axiom)

(A,C) and (B,C) are minimal keys and (A, B, C) are prime attributes.
我这样说对吗:

If (A,C) is the primary key, A -> B is NOT partial FD as RHS is a prime 
attribute. B -> A is a non trivial FD as LHS is not a candidate key.

我的讲师的解释是,如果选择A,C作为主键,我们不必将B,C视为键,如果B不是一个基本属性,那么部分依赖性就成立了假设给定的函数依赖性是关系模式的所有函数依赖性的覆盖,那么呈现的模式是3NF,正如你所发现的。事实上,唯一的候选键是A,C和B,C,因此每个属性都是素数,根据定义,关系在3NF中。请注意,prime属性取决于候选键,而不是主键

一般来说,依赖关系是X→ 在F+中,如果Y还依赖于X的适当子集,则关系的依赖集的闭包称为部分。更准确地说,Y称为部分依赖于X。如果每个非素数属性完全依赖于每个候选键,则关系为第二范式。在这种情况下,你说A是正确的→ B是非部分依赖项,但不是因为B是基本属性。例如,由于部分依赖性ac的存在,B不完全依赖于候选密钥ac→ F+中的B。然而,B是prime属性这一事实意味着模式在2NF中

换言之,鉴于前面对部分依赖性的定义,关于你问题的这一部分:

我这样说对吗:

If (A,C) is the primary key, A -> B is NOT partial FD as RHS is a prime 
attribute. B -> A is a non trivial FD as LHS is not a candidate key.
如果A,C是主键,则A→ B不是部分FD,因为RHS是基本属性。B→ A是一个非平凡的FD,因为LHS不是候选密钥

我们可以说:

A→ B是非部分依赖项,不是因为B是素数,而是因为{a}的适当子集不能确定B

B→ A是非平凡的,不是因为LHS不是候选键,而是因为{A}不是{B}的子集


最后要注意的是,这种关系不是Boyce Codd范式。一个符合标准形式的分解是R1A,B,R2A C。

谢谢您的帮助clarification@nicguo&Renzo A->B是非部分的,因为A的适当子集不能决定B。基本属性是不相关的。它们和部分FD与2NF相关。提问者在问题中的另一个理由也是错误的。见我对这个问题的评论。希望他们能被纳入这个答案。答案是正确的。很多资料都是错误的,包括教科书。你在哪里查到的?它的确切定义是什么?这一定义的背景是什么?看见当X是Y的超集时,PS X->Y是微不足道的。@a,C没有任何部分依赖关系,这是没有意义的。我想你是想说,A,C不是部分FD的行列式。PS如果{A,C}->{B}&{A}->{B},部分FD将是{A,C}->{B},而不是{A}->{B}。事实上,{A,C}->{B}是部分的,但它不是部分的&A CK确定一个非素数属性。@A,C->B是部分FD,因为A->B;CKs和PKs是不相关的。尽管A,C是CK,B不是非素数,所以A,C->B不违反2NF。B、C和A也是如此。你甚至可能想这么说,但事实并非如此。别再提PKs了。但这并不能证明2NF,因为您需要解决所有持有的FD。BCNF要求每个非平凡FD的行列式都是一个超键,即CK超集。因此,B->A&A->B&可能更违反。为了得到CKs,你需要知道你的FD集是一个封面。引用并使用正确的教科书定义。细节很重要。你认为A->B是非部分的理由是错误的。找到部分FD的定义。你认为B->A不平凡的理由是错误的。找到平凡FD的定义。你把这些定义和2NF的部分定义混淆了。那么,你在哪里找到了部分FD的错误定义?我的解决方案后面的两行是不是应该证明第三行是正确的?这一部分令人费解。此外,你也没有表明这两个超级键是最小的。Re是这样的:根据你的参考/教科书显示你的工作步骤,并说明理由我们想检查你的工作,但不想重做&当算法允许时,我们需要你的选择&否则我们无法告诉你哪里错了&对了。请参阅谷歌搜索“stackexchange家庭作业”的热门内容。例如,不清楚您总结了哪些论点,但没有给出,因为RHS是一个基本属性&因为LHS不是候选键,所以我们无法解决它们。