У меня более 25 лет опыта работы с различными платформами СУБД, в основном с Oracle, SqlServer и Sybase, но также с MySQL (и другими). Я пытаюсь сделать что-то сейчас с MySQL, что мне никогда не приходилось делать раньше, и я подозреваю, что это невозможно (в любой СУБД), но, возможно, у кого-то есть идея.Сложное требование внешнего ключа MySQL к двум таблицам
Я создаю базу данных из данных CLDR для глобализации/локализации, и у меня есть две таблицы, которые определяют все локали, которые мое приложение будет поддерживать.
TABLE supported_language:
COLUMN language_code VARCHAR(4) (PK)
TABLE supported_territory:
COLUMN language_code VARCHAR(4) (PK, FK to supported_language.language_code)
COLUMN territory VARCHAR(10) (PK)
CLDR локали может быть просто язык или язык-территория комбо, поэтому, чтобы получить полный список всех поддерживаемых локалей я должен либо внешнее соединение двух таблиц или сделать союз. Теперь мне нужно ограничить различные другие таблицы, поэтому они ссылаются только на допустимые поддерживаемые локали, то есть на язык и территорию или только на язык, как определено supported_language
и supported_territory
. Обычно я делал это с помощью простого внешнего ключа, но поскольку нет единой таблицы, в которой перечислены все языки/территории и только языковые локали, я затрудняюсь, как это сделать.
Как я могу обеспечить, чтобы эти другие таблицы ссылались только на допустимые поддерживаемые комбинации языков/территорий?