[英]Do you agree that this table is normalized in 3NF
我正在檢查表的規范化,看看我來了什么:
描述並說明將本表中顯示的數據標准化為第三范式(3NF)的過程:
BRANCH_NO(PK) BRANCH_ADDRESS TELL_NO MANAGER_ID MANAGER_NAME
B001 ADDRESS 1 TELL 1 S1500 TOM DANIELS
B002 ADDRESS 2 TELL 2 S0010 MARY MARTINEZ
B003 ADDRESS 3 TELL 3 S0145 ART PETERS
B004 ADDRESS 4 TELL 4 S2250 SALLY STEM
轉換之后,它們最終得到這兩個表,它們都聲稱它們都位於3NF中:
BRANCH_NO(PK) BRANCH_ADDRESS TELL_NO MANAGER_ID(FK)
B001 ADDRESS 1 TELL 1 S1500
B002 ADDRESS 2 TELL 2 S0010
B003 ADDRESS 3 TELL 3 S0145
B004 ADDRESS 4 TELL 4 S2250
和
MANAGER_ID(PK) MANAGER_NAME
S1500 TOM DANIELS
S0010 MARY MARTINEZ
S0145 ART PETERS
S2250 SALLY STEM
我認為很明顯,第一個表不是3NF。 例如:tell_no依賴於branch_addres,它不是主鍵,但是主鍵在功能上標識與過渡功能依賴項沖突的branch_address。
規范化就是確保數據庫模式准確地表示給定的一組依賴關系。 如果沒有給您提供依賴關系,那么這種練習實際上就是基於一組屬性名稱和幾行示例數據的猜測和假設。 因此,對於什么是對和什么是錯,不可能有任何明確的答案。 更多的情況是了解正在做出哪些假設以及可能產生的后果。 寫下您希望應用的依賴項,然后確保已針對這些依賴項對架構進行了規范化。
假設每個分支都必須具有唯一的分支編號和唯一的地址,因此我們要強制執行以下FD:
BRANCH_NO -> BRANCH_ADDRESS
BRANCH_ADDRESS -> BRANCH_NO
BRANCH_NO -> TEL_NO
BRANCH_NO -> MANAGER_ID -> MANAGER_NAME
假設BRANCH_NO和BRANCH_ADDRESS都將是候選鍵(假設您需要考慮所有鍵,而不僅僅是一個主鍵),則您的兩表設計就這些依賴關系滿足3NF。
現在,這確實假定對BRANCH_ADDRESS的隱含依賴關系是准確且重要的,以至於可以強制執行BRANCH_ADDRESS的唯一性。 可能會,也可能不是,但這就是為什么您需要確定此類問題才能回答問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.