【问题标题】:How to create relation between single column from one table and multiple rows from second table?如何在一个表的单列和第二个表的多行之间创建关系?
【发布时间】:2013-03-18 11:19:19
【问题描述】:

我有两张桌子:Players 和 Characters。每个Player 可以有最大值。 10Characters。我正在寻找在这些表之间创建关系的最佳方法。我打算使用外键将Players 中的characters 列与Characters 中的id 连接起来,但我不知道是否应该在Players 中创建10 列,例如character1、character2 , character3, 等等他的每个角色?

我知道我可以创建具有integer[] 类型值的列,但是关系呢?

我希望我的问题很清楚,因为我不知道如何才能更好地解释它。

【问题讨论】:

  • 为什么不单独的映射表?

标签: mysql database foreign-keys relational-database


【解决方案1】:

您绝对应该创建两张表,一张用于玩家,一张用于角色。 Players 表将使用单独的 player_id 列或 player_name 列作为主键。如果您选择有一个单独的 player_id 列,请确保将 player_name 设置为唯一的。 Characters 表将有一个 character_id 列、一个 player_id 或一个 player_name 列(取决于 Players 的结构),这是对 Players 表的外键引用,最后是一个 character_name 列。现在,每个字符将在 Characters 表中代表自己的行。

【讨论】:

  • 是的,忘记了最多 10 个字符的限制。这应该从应用程序代码中通过查询字符表并查看玩家已经有 10 个或更多字符来完成(理论上他们应该永远不会有更多)。
【解决方案2】:

您的外键应该在字符表上 - 引用 player_id。无法在约束中将此限制为 10 - 您必须为此编写代码或在对 createCharacter 的过程调用中进行检查,该过程将为您执行检查。

【讨论】:

    猜你喜欢
    • 2018-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-01
    • 1970-01-01
    • 2023-02-16
    相关资源
    最近更新 更多