【问题标题】:Struggling to figure out database structure for multiple relationships努力找出多种关系的数据库结构
【发布时间】:2019-05-29 22:25:09
【问题描述】:

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

  • 活动
    • 身份证
    • 姓名
  • 字符
    • 身份证
    • 姓名
  • 项目
    • 身份证
    • 姓名

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

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

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

问题出现在物品方面。可以购买物品,此时需要将它们添加到当前活动中。我可以为此使用campaign_items 链接表,但项目也可以由战役中的角色选择装备。我不知道如何处理这种关系。

我无法创建 character_item 链接表,因为关系不是直接在角色和项目之间,而是在战役中的角色和战役中的项目之间。

我目前的想法是制作一个campaign_character链接表,一个campaign_item链接表,以及一个campaign_character_campaign_item链接表,但是这种场景出现了很多次(不仅仅是人物和物品,例如人物可以然后给物品添加附件)和我觉得这只会导致大量的表格和复杂的关系。

有没有更好的方法来处理这个问题或者这是正确的方法?

感谢您的指导

【问题讨论】:

    标签: database data-structures


    【解决方案1】:

    这是一个建议

    除了 3 个主表之外,将链接表创建为

    campaign_character
    campaign_item
    

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

    如果该列有一个 character_id 表示这个 item_id 是由该字符配备的,如果它有 null item 则不附加到特定字符。


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

    由于characteritem之间的连接已经在campaign_item表中建立,attachmentcharacter之间的连接可以从campaign_itemitem_attachment表中导出。

    如果有帮助请告诉我

    【讨论】:

    • 感谢您的回复。链接表中有多余的列是否正常?出于某种原因,我认为它应该只是它将链接的表的 ID。
    • 根据您的需要,您可以添加一个额外的列,它将使您免于另一个表和更复杂的设计。您可以根据您的用例“改变规则”,归结为“架构设计决策”
    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 2012-07-10
    • 2021-11-23
    • 1970-01-01
    • 2013-09-29
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多