Может ли 1 первичный идентификатор ссылаться на несколько идентификаторов в одной таблице? - PullRequest
0 голосов
/ 10 июня 2019

Я пытаюсь создать схему базы данных относительно ставок, в которые играют многие поставщики ставок.Некоторые поставщики ставок имеют 15/13/16 и т. Д. Игр на пул.

Например, у провайдера A (ID 1) есть Ливерпуль против Man City имеет 1 из 15 своих игр, и у провайдера B (ID 2) также есть этот матч для одной из 13 игр.

Могу ли язапишите это следующим образом:

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

Возможно ли это или SQL не может сохранить идентификаторы для 1 первичного идентификатора?

Я пытаюсь сохранить запись каждого совпадения для каждого пула, чтобыЗатем я могу записать, какие цены были у определенных букмекеров и каков процент выплат для будущих ссылок.

Есть ли в любом случае это сделать?

Например, у провайдера A (ID 1) есть Ливерпуль против Man City имеет 1 из 15 своих игр, и у провайдера B (ID 2) также есть этот матч для одной из 13 игр.Могу ли я записать это следующим образом:

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

Возможно ли это или SQL не может хранить идентификаторы для 1 первичного идентификатора?

Пока не закодировано, в настоящее время работает над созданием схемы базы данных

1 Ответ

2 голосов
/ 10 июня 2019

Это распространенное недоразумение с внешними ключами.Если вы считаете, что вам нужно хранить два идентификатора в внешнем ключе одной записи, ваш внешний ключ находится в неправильном месте.

В вашем случае, если в матче может быть много игроков, а в ставке может быть много матчей,вам нужна таблица «многие ко многим» или «соединение», связывающая совпадения с игроками.

Ваша схема может выглядеть примерно так:

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 теперь имеет двавнешние ключи, которые могут быть применены через ограничения внешнего ключа, связывающие обоих провайдеров с одним и тем же соответствием.

...