Я думаю, что то, на что вы обращаетесь, не может быть сделано с ограничением в MySQL.
Альтернативным вариантом будет изменение структуры вашей базы данных. Вы могли бы разделить таблицы для хранения отношений между каждой сущностью (командами, лигой, игроками, тренерами) и ключевыми словами.
Таким образом, вы могли бы создать четыре дополнительные таблицы бриджа:
teams_keywords (team_id, keyword_id)
league_keywords (league_id, keyword_id)
players_keywords(player_id, keyword_id)
coaches_keywords(coaches_id, keyword_id)
У каждой таблицы есть внешний ключ, который относится к таблице сущностей, а другой - к таблице keyword
. Вы можете использовать опцию on delete cascade
в этих внешних ключах, чтобы добавить нужный логический номер c.
Обратите внимание, что такая структура также может упростить некоторые ваши запросы. Скажем, вы хотите получить все teams
, которые соответствуют заданному ключевому слову, тогда:
select t.*
from teams t
inner join team_keywords tk on tk.team_id = t.team_id
inner join keywords k on k.keyword_id = tk.keyword_id
where k.name = 'foo'