2013-12-10 5 views
5

Так что я занимаюсь практикой в ​​области проектирования баз данных, и возникает вопрос, что я не могу понять, как исправить.Может ли внешний ключ ссылаться на несколько таблиц?

Я довольно новичок в этом, поэтому я не лучший, но здесь он идет.

Итак, я хочу создать две разные таблицы, одну из которых называется Team, и одну под названием Player. Эти таблицы сильно отличаются друг от друга.

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

В основном есть соревнования, и они либо соревновались индивидуально, либо как команда. Я хочу, чтобы иностранный ключ ссылался на команду, если ее командный вызов, или Игрок, если его лицо.

Я не могу объединить две таблицы, так как они содержат очень разные элементы.

Я просто немного смущен относительно того, как это сделать. Могу ли я иметь только один внешний ключ, который будет ссылаться на одну или другую таблицу. Или у меня есть два, с одним нулем.

Или я могу добавить еще один идентификационный ключ в Team and Player. И затем в Challenge, если новый ключ типа указал его группу, он будет ссылаться на команду, и если ее индивидуум ссылается на Player.

Опять же, довольно новый на этом, так что надеюсь, что я имел смысл.

+0

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

+1

В одном обходном столе будет таблица конкурентов, в которой есть команда для команды и игрока. Итак, теперь у вас есть конкурент для иностранного ключа для Challenge, а также внешний ключ Team and Player для участников. Наверное, не стоит хлопот. –

ответ

2

Вы можете добавить в поле две колонки: PlayerID & TeamID, оба из которых могут быть NULL.

PlayerID references Player.id 
TeamID references Team.id 

пример, вызов имеет игрок:

PlayerID = 14 
    TeamID = NULL 

Обратите внимание, что упомянутые столбцы (Player.id & Team.id) должны быть определены как NOT NULL, поскольку они ссылаются из таблицы вызова

Смежные вопросы