SQL多个主键 - 本地化

时间:2010-05-24 23:04:35

标签: sql-server localization primary-key

我正在尝试在我的数据库中实现一些本地化。

它看起来像这样(前缀只是为了澄清)

TBL-分类
ID
语言
名称


TBL-文章
ID
类别ID

现在,在我的tbl-Categories中,我希望主键包含ID和语言,因此ID和语言的每个组合都是唯一的。在tbl-Articles中我想要一个外键来引用类别中的ID,而不是语言,因为我不想将文章绑定到某种语言,只有类别。

当然,我无法在部分主键上添加外键。我也不能只在类别的ID上拥有主键,因为那时只能有一种语言。没有主键完全禁用外键,这也不是一个很好的解决方案。

您是否有任何想法如何以优雅的方式解决这个问题?

感谢。

1 个答案:

答案 0 :(得分:1)

鉴于这种情况,您需要在类别和语言之间建立一对多的关系。创建3个表:

  1. 具有CategoryID且名称为列的类别
  2. 语言ID和名称为列的语言
  3. CategoryLanguage with CategoryLanguageId,CategoryID和LanguageID(在CategoryId和LanguageId上创建一个复合主键,用于建立唯一性)
  4. 您不必在文章表上执行任何操作,因为ID和CategoryId确定文章可以属于某个类别但不依赖于语言。

    HTH