Database-Design
多少欄位對於主鍵來說太多了?
我正在創建一個表來儲存有關對像在網格(遊戲地圖)中的位置的資訊。
例如,我有一個 10x10 的網格,我想在數據庫中儲存單元格 (5,5) 有一個藍色框,(3,3) 有一個紅色椅子等等。
任何一個方格中都可以有多個項目,但同一個項目不應該在同一個方格中出現兩次。
有這種結構可以接受嗎?(主鍵中的所有列)
(room_id (FK), room_object_id (FK), x_cell, y_cell)(PK)
或者有這個會更好嗎
id(PK), room_id (FK), room_object_id (FK), x_cell, y_cell
我認為第一種方法更有意義,但我擔心在輸入內容時增加完整性檢查可能會產生很多不必要的成本。
首先,在確定存在性能問題之前不要擔心性能,尤其是對於少量行。
其次,無論您使用作為主鍵的唯一索引還是非主鍵的唯一索引來強制執行四列組合的唯一性,該索引的性能都將相同。
是否將該唯一索引作為主鍵應取決於架構中發生的其他情況。如果您有另一個表(或多個表)引用此表,那麼您的複合主鍵將作為外鍵傳播到其他表。如果發生這種情況,您需要考慮更多。
如果您不需要擔心傳播複合外鍵,那麼您可能應該將復合唯一索引作為表的主鍵。這將是實現執行業務規則目標的最少努力。