Как бы я спроектировал взаимозависимые внешние ключи в SQL / SQLALCHEMY - PullRequest
0 голосов
/ 13 декабря 2018

Предположим, у меня есть база данных с таблицами User, Country и Language.Кроме того, в стране может быть несколько языков, но на каждом языке говорят только в одной стране.

User
> id
> name
> country (foreign key Country.id)
> language (foreign key Language.id)

Country
> id
> name

Language
> id
> name
> country (foreign key Country.id)

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

Я работаю с sqlalchemy.Я также заинтересован в SQL / Mysql.

Как бы я смоделировал это ограничение?Имеет ли смысл моделировать это ограничение?Какова правильная терминология для такой ситуации?Взаимозависимые внешние ключи?

Спасибо!

1 Ответ

0 голосов
/ 02 апреля 2019

Как было отмечено в комментариях, пример в моем вопросе был упрощен и мог быть легко решен путем удаления country из таблицы User.

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

  User
  > id (PK)
  > name
  > linguistic_combo.id

  Linguistic_Combos
  > country.id (PK)
  > language.id (PK)

  Country
  > id (PK)
  > name

  Language
  > id (PK)
  > name

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

country.id и language.id в Linguistic_Combos сформируйте составной первичный ключ.

По сравнению с моим первоначальным вопросом, на языке можно говорить в разных странах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...