簡體   English   中英

對超級鍵或Boyce Codd Normal形式的誤解是什么

[英]Misconception of what superkey or Boyce Codd Normal form is

這段視頻的9點34分,發言者說所有3個功能依賴都是Boyce Codd Normal Form。 我不相信,因為顯然GPA無法確定學生表中的SSN,sName,地址和所有其他屬性。 我對Boyce Codd Normal Form的定義或超級密鑰的含義感到困惑嗎? 它是否必須能夠唯一地識別某些屬性,而不是模式中的所有屬性? 例如,GPA確定優先級(位於功能依賴性的右側),但不確定其他所有優先級。

例如,如果我有關系R(A,B,C,D)和FDs A-> B,我們會說A是B的超級密鑰,但我認為超級密鑰是針對整個表格的嗎? 為了增加我的困惑,我知道BCNF它可以是(主)鍵,但你只能擁有該表的主鍵。 我的大腦很痛。

“......發言者說,所有3個功能依賴都是博伊斯科德范式。”

要處於BC正常形式是一個屬性,可以由RELATIONS (關系變量 ,更具體地說,或關系模式 ,如果該術語更適合你),而不是功能依賴。 如果你發現某人談論如此笨拙的規范化理論,請離開並轉向更准確的解釋。

關系變量是否確實處於BC正規形式,取決於應該在其中保留哪些功能依賴性。 這就是為什么說功能性依賴性是否屬於BC正常形式完全是胡說八道。

“我不相信,因為很明顯GPA無法確定學生表中的SSN,sName,地址和所有其他屬性。要么我對Boyce Codd Normal Form的定義或者超級密鑰是什么感到困惑?它只需要能夠唯一地識別某些屬性,而不是模式中的所有屬性?“

不可縮減的候選鍵是關系模式的屬性集(不一定是唯一的),其保證具有屬性值的唯一組合,無論任何關系值可以有效地出現在數據庫中的關系變量中。

在您的(A,B,C,D)示例中,如果A-> B是唯一保留的FD,則唯一的候選鍵是{A,C,D}。

“例如,如果我有關系R(A,B,C,D)和FDs A-> B,我們會說A是B的超級密鑰”

在這種情況下,談論A作為B的“關鍵”是邋and和混亂的。 假裝教別人的人應該知道這一點,而那些不這樣做的人,除非他們知道這一點,否則不應該從事任何教學。 在這種情況下,最好將A作為B的“決定因素”。 在關系數據庫設計的上下文中,術語“關鍵”具有非常明確和精確的含義,並且對於其他含義使用相同的術語僅僅使人混淆。 正如你的問題所證明的那樣。

“但我覺得超級鑰匙適用於整張桌子?”

是的,你認為是對

回到你的(A,B,C,D)例子。 如果我們將該設計分為(A,B)和(A,C,D), 那么我們將得到一個關系模式 - (A,B)其中一個我們可以說“{A}是一個密鑰“在該模式中。

這實際上正是FD A-> B的含義: 如果你在(A,B,C,D)模式中對屬性{A,B}中的關系值進行投影 - , 那么你應該得到一個沒有A值出現兩次的關系(如果確實如此,那么A值將對應於> 1個不同的B值,這意味着A畢竟不可能是B的決定因素)。

“為了增加我的困惑,我知道BCNF它可以是一個(主要)鍵但......”

現在你自己很邋.. “它”指的是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM