Database-Design
具有兩個潛在主鍵的規範化
STUDENT
我在第一範式中具有以下關係,其中id
已被標識為主鍵(STUDENT(**id**, email, first_name, last_name)
我想規範化這個關係/表,使其處於第三範式(3NF)。
我已經能夠從上述
STUDENT
關係/表中辨識出的依賴項如下滿的:
{ id } → { email }
傳遞:
{ email } → { first_name, last_name }
這是我感到困惑的部分。我已將其標識
id
) 標識,並且屬性/列first_name
andlast_name
。…如果我繼續這個想法,我最終會得到一個看起來像這樣的 3NF:
STUDENT(**id**, email) STUDENT_INFO(**email**, first_name, last_name)
但是,
STUDENT
這裡的關係/表似乎非常多餘,因為它所做的只是指向另一個關係/表。我的標準化過程是否正確?還是我的依賴關係錯了?似乎只要初始關係/表有兩個候選鍵,這兩個候選鍵都可以是主鍵(id
或者
這是我出錯的地方:
關於傳遞依賴,重要的是以下兩個關鍵因素:
- 如果 B 依賴於 A,而 C 依賴於 B,那麼 C 也依賴於 A (A → B → C)
- B 不是(或部分)候選鍵
在我的範例中,我將以下內容確定為傳遞依賴項:
{ email } → { first_name, last_name }
但是,情況並非如此,候選鍵
id
{ id } → { email, first_name, last_name }