我有2表與許多 - 許多關係。所以我使用第三個表格將2個表格映射在一起。我不知道應該在自動遞增的整數主鍵之間進行選擇,然後在其他鍵上使用唯一索引或使用主鍵有很多值。每種方式有哪些好處?我應該選擇具有索引主鍵和鍵的唯一列具有多個值?
感謝很多
我有2表與許多 - 許多關係。所以我使用第三個表格將2個表格映射在一起。我不知道應該在自動遞增的整數主鍵之間進行選擇,然後在其他鍵上使用唯一索引或使用主鍵有很多值。每種方式有哪些好處?我應該選擇具有索引主鍵和鍵的唯一列具有多個值?
感謝很多
在Microsoft SQL Server數據庫有一個PRIMARY KEY約束和非空列UNIQUE約束之間沒有顯著差異。主鍵基本上只是語法糖。公約和個人偏好是使用PRIMARY KEY約束的最常見原因。
在任何DBMS中,真正重要的是您擁有哪些密鑰以及如何使用它們,而不是您指定爲「主」的那些密鑰。
理論上數據建模的,兩種解決方案都是正確的。
但在實踐中:最好使用第二種解決方案。
採用新的自動遞增ID並將其設置爲主鍵並將兩個傳輸的外鍵設置爲唯一(一起)。
優點:
數據的冗餘: 假設我們有一個名爲兩個表和B型和AB是新創建的中間表(因爲很多一對多的關係)。
現在如果AB與C有一個新的關係(一對多)。我們應該將AB的Primary-Key作爲外鍵傳遞給C.所以最好轉換ID而不是兩個屬性。如果C與D具有新的關係(一對多),那麼也是如此,等等。
缺點:
訪問性能,以標識:雖然在第一個解決方案的冗餘,但有一個性能的訪問標識,而無需使用任何連接。 (假設在表C中,我們想要訪問A和B的ID。)但是,訪問只有到ID沒有太多的用處。