【问题标题】:How to model a X vs Y vs Z relationship in a database?如何在数据库中建模 X vs Y vs Z 关系?
【发布时间】:2014-05-09 16:57:44
【问题描述】:

我正在考虑制作一款“战斗”游戏,您可以在其中安排多人之间发生战斗的事件。

IE:一个 PPV 有很多部分,每个部分都可以是“促销”或“战斗” - 如果是战斗,您可以进行:

即: 1对1(单人) 2 对 2(标签) X 与 Y(其中 X 和 Y 可以是 1-5 之间的任何数字)

在上述示例中,您可以建立关系(1 对多)或多对多。

即: [Segment] 有很多战士(等式的左手) [Segment]有很多战士(等式的右手)

这看起来不错。

但是,当涉及到更复杂的关系时,我会陷入困境。

例如,如果比赛现在是三重威胁,例如 1-vs-1-vs-1 或四路或六路比赛(1 vs 1 vs 1 vs 1 vs 1 vs 1),我不知道如何在有意义的数据库中对此进行建模。

使用关系的最初原因是因为匹配的类型可以是不同的类型和模块化的。

我能想到摆脱这种情况的唯一方法是拥有数组或人员列表,并将其作为每种匹配类型的硬性限制。

但我想知道这种类型的其他游戏如何为他们的数据库建立这种关系。

因此我的查询是——如何在数据库中建模 X vs Y vs Z 关系?

现在谢谢。

【问题讨论】:

    标签: entity-relationship theory


    【解决方案1】:

    在我看来,您应该考虑球队和比赛的设置:

    • 团队是一组玩家(根据您的描述有 1 到 2 名玩家)
    • 一场比赛是一组球队,每支球队都与该组中的其他球队进行战斗。

    由于比赛是组合,球队是组合,你可以这样表示:

    {{P1}, {P2}} => P1 与 P2

    {{P1, P2}, {P3, P4}} => P1+P2 与 P3+P4

    {{P1}, {P2}, {P3}} => P1 vs P2 vs P3

    这都是用数据库中的 1 对 N 关系建模的。

    这是 P1+P2 与 P3 与 P4 的数据库示例(即 {{P1, P2}, {P3}, {P4}})

    **Player**
    +--------+
    |PlayerID|
    +--------+
    |P1      |
    |P2      |
    |P3      |
    |P4      |
    +--------+
    
    **Team**
    +--------+
    |TeamID  |
    +--------+
    |Team1   |
    |Team2   |
    |Team3   |
    +--------+
    
    **Team Players**
    +------+--------+
    |TeamID|PlayerID|
    +------+--------+
    |Team1 |P1      |
    |Team1 |P2      |
    |Team2 |P3      |
    |Team3 |P4      |
    +------+--------+
    
    **Match**
    +--------+
    |MatchID |
    +--------+
    |Match1  |
    +--------+
    
    **Match Teams**
    +-------+--------+
    |MatchID|TeamID  |
    +-------+--------+
    |Match1 |Team1   |
    |Match1 |Team2   |
    |Match1 |Team3   |
    +-------+--------+
    

    【讨论】:

    • 我没有意识到我可以在数据库中使用集合。这会更有意义。我认为,如果它是 {{P1 + P2}, {P3}, {P4}},它甚至会起作用
    • 我将不得不对集合做更多的研究,因为它不是我立即记得的东西。我认为像 Smackdown vs Raw 这样的游戏使用固定限制或他们拥有的每种比赛风格的模板。
    • @zardon "set" 不是普通关系数据库的一等公民,甚至不是在这种情况下明确定义的术语!对不起,如果我让你不相信。但是使用一个简单的 id 值将作为集合成员的表行链接在一起很容易实现。
    • 哦。你能直观地表达你的意思吗?我仍然不确定您是指一堆外键还是比这更容易的东西?
    • 非常感谢 - 现在这对我来说好多了,因为我可以在脑海中直观地看到它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-22
    相关资源
    最近更新 更多