簡體   English   中英

您是否同意該表格已在3NF中標准化

[英]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.

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