让我们说,我想开发一种游戏(类似RTS,具有经济导向性),其中玩家以及AI几乎可以拥有每个游戏内对象。例如:玩家拥有土地和一些建筑物;其他玩家,或AI也可以在这片土地上有一些建筑物;此外,有人可以拥有整个地区的土地,并将其中的一些出售给其他人。可拥有的对象可以是可移动的,也可以是不可移动的,但它们都具有共同的属性,例如所有者,标题,世界坐标等。关于Django模型的DB结构最适合这种描述?
或
答案 0 :(得分:1)
您应该问的问题如下:
如果A可以链接到许多B而B可以链接到许多A,则需要多对多链接。
如果A可以链接到最多1个B而B可以链接到许多A,则需要一对多链接,其中链接列位于表A中。
如果A最多可以链接1个B而B可以链接到最多1个A,则需要一个一对一的链接。此时你应该考虑是否可以将它们加入到单个表中,尽管从其他考虑因素中可能不可能或不好。
在你的情况下,你问自己一个问题:一个PossessableObject只能链接到最多1个其他PossessableObject或许多其他PossessableObject吗?或者换句话说:PossessableObject只能由最多1个其他PossessableObject或许多其他PossessableObject拥有吗?如果答案最多为1,请使用一对多链接,如果答案很多,请使用多对多链接。
关于每个可能类型的对象的PossesableObject_Table的问题:我认为最好将它们共有的东西放在一个表中,然后指定类型。为每种类型的对象创建一个单独的表,该对象具有对象的唯一属性并连接它们,但您的方式也可以。这取决于您拥有的不同类型以及您最容易使用的类型。请记住:只要有效就可以了。