努力找出多种关系的数据库结构

时间:2019-05-29 22:25:10

标签: database data-structures

我正在创建一个laravel应用程序来跟踪游戏中的战役。我正在努力弄清的数据库结构情况涉及以下表格:

  • 广告系列
    • 编号
    • 名称
  • 字符
    • 编号
    • 名称
  • 项目
    • 编号
    • 名称

广告系列表为空。 角色表中填充了游戏中的角色数据。 物品表中会填充游戏中的物品数据。

Character和Item表都包含游戏本身的数据,不应填充用户数据。

用户可以创建一个新的活动,这将在“活动”表中创建一个条目。 然后,用户可以选择要在广告系列中使用的字符。我可以使用campaign_character链接表创建这种关系。

问题涉及物品。可以购买商品,这时需要将其添加到当前广告系列中。我可以为此使用一个campaign_items链接表,但也可以选择使用广告系列中的角色来装备物品。我不确定如何处理这种关系。

我无法创建character_item链接表,因为关系不是直接在角色与物品之间,而是在活动中的角色与活动中的物品之间。

我目前的想法是制作一个campaign_character链接表,一个campaign_item链接表和一个campaign_character_campaign_item链接表,但是这种情况会出现很多次(不仅与字符和项目有关,例如,字符可以在项目后添加附件)并且我觉得这只会导致大量的表格和复杂的关系。

有没有更好的方法来解决这个问题?这是正确的方法吗?

谢谢您的指导

1 个答案:

答案 0 :(得分:0)

这是一个建议

除了3个主表以外,您创建的链接表为

campaign_character
campaign_item

在您的campaign_item中创建一个称为equipped_by的可空列,并存储character_id

如果此列中有一个character_id,则表示该item_id由该字符装备,如果该null具有未附加到特定字符的项目,则为


对于附件,请创建一个链接表item_attachment,以仅保存项目和附件之间的链接。

由于character表中已经建立了itemcampaign_item之间的连接,因此{{1}可以派生attachmentcharacter之间的链接。 }}和campaign_item表。

请告诉我这是否有帮助