mysql - 我将如何在 SQL/SQLALCHEMY 中设计相互依赖的外键

标签 mysql sql sqlalchemy

假设我有一个包含用户、国家和语言表的数据库。此外,一个国家可以有多种语言,但每种语言只在一个国家使用。

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 感兴趣。

我将如何为该约束建模?为该约束建模是否有意义? 这种情况的正确术语是什么?相互依赖的外键?

谢谢!

最佳答案

正如评论中指出的那样,我的问题中的示例过于简单,可以通过删除 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.idlanguage.idLinguistic_Combos形成复合主键。

与我原来的问题相比,一种语言可以在不同的国家/地区使用。

关于mysql - 我将如何在 SQL/SQLALCHEMY 中设计相互依赖的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53757477/

相关文章:

python - PyQt、SQLAlchemy - 哪些 session 适合?

python - 从 sqlalchemy 中的表获取主键列名称(核心)

mysql - phpMyAdmin 和日期参数程序不起作用

Php MySQL - 按限制删除所有行

MySQL 从包含主键的文件更新表

sql - Toad 只在 sql 中给出日期

sql - 使用 PostgreSQL 进行字母数字排序

mysql - 使用变量列名、变量行中的变量值更新 SET PDO

php - 在 1 个 while 循环中获取两个数组(不工作)

python - SQLAlchemy - 简单的选择语句