两个表复杂的MySQL外键要求

时间:2016-02-15 17:30:59

标签: mysql foreign-key-relationship multiple-tables

我在各种DBMS平台上拥有超过25年的经验,主要是Oracle,SqlServer和Sybase,还有一些使用MySQL(和其他人)。我正在尝试用MySQL做我以前从未需要做的事情,我怀疑它是不可能的(在任何DBMS中),但也许有人有想法。

我正在从CLDR globalize / localize数据构建数据库,我有两个表定义我的应用程序将支持的所有语言环境。

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_languagesupported_territory定义的语言和区域或语言。通常情况下,我会使用一个简单的外键来执行此操作,但由于没有单个表列出所有语言/区域和语言区域,我不知道如何执行此操作。

如何确保这些其他表仅引用有效的受支持语言/区域组合?

1 个答案:

答案 0 :(得分:1)

如何简单地创建仅包含有效支持的语言环境并对其使用约束的其他表?有时,在DBMS中添加冗余(即计算的)数据并不是一个坏主意。

很抱歉,如果这个答案看起来过于简单,但有时复杂的问题有一个简单的解决方法。