模型开发选择

时间:2016-10-18 06:29:41

标签: python django-models

让我们说,我想开发一种游戏(类似RTS,具有经济导向性),其中玩家以及AI几乎可以拥有每个游戏内对象。例如:玩家拥有土地和一些建筑物;其他玩家,或AI也可以在这片土地上有一些建筑物;此外,有人可以拥有整个地区的土地,并将其中的一些出售给其他人。可拥有的对象可以是可移动的,也可以是不可移动的,但它们都具有共同的属性,例如所有者,标题,世界坐标等。关于Django模型的DB结构最适合这种描述?

  • Owner_Table - (一对多) - PossesableObject_Table
  • PossesableObject_Table - (多对多) - PossesableObject_Table(in 例如,建筑物链接到地块()

  • Owner_Table - (一对多) - PossesableObjectType_Table(每种可能对象的表格)
  • PossesableObjectType_Table - (一对多) -
    PossesableObjectType_Table(已经解释过上面的类型) 连接)

1 个答案:

答案 0 :(得分:1)

您应该问的问题如下:

  1. 可以 A最多可以链接1个或多个(超过1个)B?
  2. 可以 B最多连接1个或多个A?
  3. 如果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的问题:我认为最好将它们共有的东西放在一个表中,然后指定类型。为每种类型的对象创建一个单独的表,该对象具有对象的唯一属性并连接它们,但您的方式也可以。这取决于您拥有的不同类型以及最容易使用的类型。请记住:只要有效就可以了。