mysql - 1 个主 ID 可以链接到一张表中的多个 ID 吗?

标签 mysql sql database primary-key

我正在尝试创建一个关于与众多投注提供商一起进行的投注的数据库模式。一些博彩提供商每个池有 15/13/16 等游戏。

例如提供商 A(ID 1)在其 15 场比赛中拥有利物浦对阵曼城的 1 场比赛,提供商 B(ID 2)在其 13 场比赛中也拥有这场比赛。

我可以像下面这样记录它吗?

Match ID 1
Provider ID 1,2
Home Team Liverpool
Away Team Man.City
Bookmaker Pinnacle

这可能吗?或者 SQL 不能将 1 个主 id 存储到 id 中吗?

我试图保留每个彩池的每场比赛的记录,以便我可以记录特定博彩公司的投注价格以及支付百分比,以供将来引用。

有办法做到这一点吗?

例如提供商 A (ID 1) 在其 15 场比赛中拥有利物浦对阵曼城的 1 场比赛,提供商 B (ID 2) 在其 13 场比赛中也拥有这场比赛。 我可以像下面这样记录一下吗?

Match ID 1
Provider ID 1,2
Home Team Liverpool
Away Team ManCity
Bookmaker Pinnacle

这可能吗?或者 SQL 不能将 1 个主 id 存储到 id 中吗?

尚未编码,目前正在创建数据库架构

最佳答案

这是对外键的常见误解。如果您认为需要在一条记录的外键中存储两个 ID,则您的外键位置错误。

就您的情况而言,如果一场比赛可以有很多投注者,而一个投注者可以有很多场比赛,那么您需要一个多对多或“联结”表,将比赛与投注者链接起来。

您的架构可能如下所示:

table matches:

id  | Home Team | Away Team
----+-----------+-----------
 1  | Liverpool | Man.City


table providers:

id  | name
----+------------
  1 | Provider A
  2 | Provider B


table provider_matches:

provider_id | match_id
------------+----------
      1     |    1
      2     |    1

您的表 provider_matches 现在有两个外键,可以通过外键约束强制执行,将两个提供程序链接到同一匹配项。

关于mysql - 1 个主 ID 可以链接到一张表中的多个 ID 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56529063/

相关文章:

mysql - 授予本地主机所有权限

mysql - 复杂的sql更新

php - mysql 数据库的 Symfony2 Doctrine 约束外键问题

asp.net - 为什么按钮单击插入数据两次

php - 这个代码是 : $_SESSION ['username' ] = $username; enough to store the username in the session?

php - 如何添加 1 个表中多行中的多列以及另一个表中的 1 行?

mysql - 在 SQL 中存储/查询特定树结构有更好的方法吗?

php - 我可以更新记录(如果存在),如果不存在则将其插入单个查询中的多行吗?

mysql - 使用mysql从时间戳中减去日期时间

sql - PostgreSQL:错误:关系列不存在