我正在设计一个角色有很多项目的游戏,这些项目可以有多种类型。有一个人物表,以及按类型细分的12个不同的可能物品表格(例如武器,盔甲和各种其他物品类型)。正常化这个数据库:在这种情况下什么是理想的?
我想打一个表来保存这些项目类型(基本上是一个字的情况下,项目表)中的每一行都会有从人物的外键表中,指出哪些字符具有该项目的所有权。
起初,我想我会在字符的物品表中制作外键 - 每个十二个项目表的一个键。但是由于每个项目只能有一个“类型”,这将导致每行有11个空字段,这似乎是错误的。
什么是更好的方法?我还没有建立数据库,因此我可以招待其他不使用十二个项目表的库存创意,但知道这一点:管理界面将允许用户根据需要添加/删除/修改每种类型的项目。
此外,我想坚持最好的规范化实践,所以我会忽略不可避免的“谁在乎?只要做一些有用的工作,并使用无效的领域。”
最好的规范化实践并不总是最好的编程实践。特别是,任何需要查询12个表格的东西,只要你能保证你只返回1个表格的行就不是最好的编程实践,不管你的数据集有多紧凑和非冗余。这个系统的优先顺序是什么? – Kylotan 2010-07-22 10:09:45
@Kylotan +1 - 归一化应该总是应用,但它是一种平衡行为,理论上你可以正常化到N级,但是到这时你会有很多表,这会降低你的查询性能。 – Dal 2010-07-28 13:31:33