学说 - 实体A与相关实体B和C之间的关系

时间:2013-07-27 08:21:34

标签: symfony doctrine entity-relationship

我正在使用Symfony / Doctrine进行游戏。我有两个表“Model”,它代表一个3D模型,还有“Texture”,一个可以应用于每个模型的纹理列表。它们之间存在一对多的关系(一个模型有很多纹理)。

现在有许多其他实体(怪物,角色,道具等)需要纹理和模型信息。我需要建立一个关系,说“这个怪物有这个模型和这个纹理”(但由于模型和纹理本身是相关的,我不能使用具有地精纹理的龙模型 - 它必须是一个有效的对。)

问题在于我觉得同时具有 - >模型和 - >纹理属性是多余的,因为一个可以由另一个计算。没有数据库层检查纹理A实际上与模型B一起使用。

我最初认为我只有 - > getTexture(),并创建一个“假”模型getter,就像a)

public function getModel()
{
    if ( $this->texture ) return $this->texture->getModel();
}

其他方法是 -

b)在Monster实体中同时使用 - > getModel()和 - > getTexture(),并添加一个检查模型和纹理匹配的验证规则。这里的缺点是我正在有效地创建冗余数据,并且我有很多验证规则可以在任何地方添加。

c)添加一个ModelInstance类,它在Model和Texture之间创建一个关系。这里的缺点是总体上存在更多的查询/复杂性,并且模型和纹理之间的简单关系不再存在 - 它已被更复杂的东西所取代。我们还必须在Texture上添加一个唯一约束。

很想听听其他人如何解决这个问题!

谢谢, 詹姆斯

0 个答案:

没有答案