可能重複:
Should each and every table have a primary key?主鍵和數據庫規範化
我一直對有關數據庫規範化學校的項目。 我需要幫助的正常化有我在遇到困難沒有主鍵 表一表,訂閱一個表,它的結構是這樣的:
itemSubscribed emailAddress
-------------- ------------
1 [email protected]
1 [email protected]
1 [email protected]
2 [email protected]
2 [email protected]
3 [email protected]
注意itemSubscribed
和emailAddress
值可能會重複,所以都不能成爲主鍵。
這種結構將正常工作與我的代碼,我可以發送電子郵件給所有項目X的用戶時,有項X的更新,但我的老師需要一個規範化的數據庫和1NF必須有一個主鍵。
如果我爲了創建主鍵而創建了一個自動生成的主鍵,我不能繼續使用3NF,因爲它要求所有列都依賴於主鍵,所以w/c不是這種情況。
我應該創建一個自動生成的主鍵嗎?我錯過了關於3NF的一些事情嗎?
嗯,你忘了定義一個問題! – home
儘可能難以複製佔位符文本,最後忘記了這段時間。 – BoltClock
我不能說這是一個答案,因爲它已經關閉了,當然這有點晚了,但是......看起來你所描述的是一張橋表。橋表通常不是什麼,而是一個複合主鍵。如果您將'itemSubscribed'和'emailAddress'列一起作爲主鍵,則不會有任何重複項,並且它位於3NF中。自動生成的主鍵是您想要使用橋接表完成的最後一件事,因爲它只會導致混淆和額外的工作,而實際上卻鼓勵重複。 – jmoreno