使用许多(0,n)关系建模数据库

时间:2018-04-11 15:41:53

标签: sql database

我有一个管理字符的数据库,我想添加一些更改:

现在:

一个characater有多个设备,一个设备属于多个字符。

一个设备有多个统计信息,一个统计信息属于多个设备。 enter image description here

如果我们知道角色和设备,我们就可以知道角色设备的一面,所以我放了" side"在枢轴上。问题是:侧面只涉及响铃,因此我的数据侧面看起来像

null | null | null | left | null | right | null |null | null | null

只有一种类型的属性才有问题吗?

另外,我想添加一个stat元素。问题是,对于30个统计数据,只有2个与元素有关。对于元素关注的统计,角色选择一个或多个元素。它可能看起来像这样:

enter image description here

目前,我按照以下方式管理统计数据:

我使用他的装备检索角色的所有数据,然后当我知道他的装备时,我可以检索所有统计数据(我知道他们的价值通过" value_stat")。感谢Laravel,我用热切的负载来做。

现在拥有" value_stat"我必须知道id_character,id_equipement,id_stats,id_element,因为所选元素取决于字符。这种模式是否正确?即使在大多数情况下使用该模式,id_element也将设置为null,因为element仅适用于某些统计信息。

谢谢!

1 个答案:

答案 0 :(得分:1)

  

只有一种类型的属性是否有问题?

Reworded:"是否可以为一个行子集提供非NULL的属性?

答案:是的。这在SQL数据库中很常见。您只需确保您的应用程序正确处理NULL值。

  

现在拥有" value_stat"我必须知道id_character,id_equipement,id_stats,id_element,因为所选元素取决于字符。这种模式是否正确?

答:这取决于实际物体模型是否正确!例如,设备 stat 之间的关系真的是多对多的吗?我的意思是 - 一个统计记录真的可以参考许多不同的设备吗?如果是这样,没问题。从SQL的角度来看,使用任意复杂的关系模型并没有什么不好。但从标准化的角度来看,它必须与现实世界相匹配(在这种情况下:游戏逻辑)。