我正在設計一個角色有很多項目的遊戲,這些項目可以有多種類型。有一個人物表,以及按類型細分的12個不同的可能物品表格(例如武器,盔甲和各種其他物品類型)。正常化這個數據庫:在這種情況下什麼是理想的?
我想打一個表來保存這些項目類型(基本上是一個字的情況下,項目表)中的每一行都會有從人物的外鍵表中,指出哪些字符具有該項目的所有權。
起初,我想我會在字符的物品表中製作外鍵 - 每個十二個項目表的一個鍵。但是由於每個項目只能有一個「類型」,這將導致每行有11個空字段,這似乎是錯誤的。
什麼是更好的方法?我還沒有建立數據庫,因此我可以招待其他不使用十二個項目表的庫存創意,但知道這一點:管理界面將允許用戶根據需要添加/刪除/修改每種類型的項目。
此外,我想堅持最好的規範化實踐,所以我會忽略不可避免的「誰在乎?只要做一些有用的工作,並使用無效的領域。」
最好的規範化實踐並不總是最好的編程實踐。特別是,任何需要查詢12個表格的東西,只要你能保證你只返回1個表格的行就不是最好的編程實踐,不管你的數據集有多緊湊和非冗餘。這個系統的優先順序是什麼? – Kylotan 2010-07-22 10:09:45
@Kylotan +1 - 歸一化應該總是應用,但它是一種平衡行爲,理論上你可以正常化到N級,但是到這時你會有很多表,這會降低你的查詢性能。 – Dal 2010-07-28 13:31:33