让我们假设我有一个包含表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也感兴趣。
我将如何建模该约束?对约束进行建模甚至有意义吗? 这种情况的正确用语是什么?相互依赖的外键?
谢谢!
答案 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.id
和language.id
构成一个复合主键。
与我的原始问题相比,可以在不同国家/地区使用一种语言。