我正在尝试创建一个关于与众多投注提供商一起进行的投注的数据库模式。一些博彩提供商每个池有 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/