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

时间:2018-12-13 08:09:51

标签: mysql sql sqlalchemy

让我们假设我有一个包含表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 :(得分:1)

正如评论中指出的那样,我的问题中的示例过于简化,可以通过从ImplementationFromString表中删除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.id构成一个复合主键。

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