Database-Design
代理鍵和主鍵可以在同一個表中嗎?
例如我們有:
代理鍵:ABC123 主鍵:1 姓名:詹姆斯
這在數據倉庫表中是否合法?
一個表可以而且應該有盡可能多的鍵。通常,當使用代理鍵時,這意味著您還需要一些替代鍵(也稱為域鍵、自然鍵或業務鍵)。
將任何一個鍵指定為“主要”的做法沒有多大意義。以某種對數據庫使用者有意義的方式將其中一個鍵標記為“首選”或重要只是一種約定。通常,主鍵是由其他表中的外鍵約束引用的主鍵。
這取決於密鑰的用途。“代理鍵”對不同的人可能意味著不同的東西;在我看來,這意味著除了主鍵之外的候選鍵(唯一標識記錄的欄位或欄位組合)。例如,社會保險號可能是客戶的代理鍵(不是很好,請注意)。
如果值是您的範例中的字母數字,則可能是業務密鑰。如果倉庫使用者可能需要這個密鑰,那麼當然,包括它。在事實表上,如果有幾個這樣的鍵,和/或它們異常寬,請考慮將它們剝落以保持事實表的狹窄。
如果它是合成密鑰,為在倉庫中使用而創建的密鑰以避免與業務密鑰相關的許多問題,那麼當然,包括它。實際上,這很可能是您的主鍵/集群鍵。
我不確定這是否能回答你的問題。你能再具體一點嗎?您是否正在考慮是否在您正在設計的倉庫中包含此欄位?