Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server SQL多主键-本地化_Sql Server_Localization_Primary Key - Fatal编程技术网

Sql server SQL多主键-本地化

Sql server SQL多主键-本地化,sql-server,localization,primary-key,Sql Server,Localization,Primary Key,我试图在我的数据库中实现一些本地化 它看起来像这样(前缀仅用于澄清) tbl类别 ID 语言 名字 tbl文章 ID 类别 现在,在我的tbl类别中,我希望有跨越ID和语言的主键,以便ID和语言的每个组合都是唯一的。在tbl文章中,我想要一个外键来引用类别中的ID,而不是语言,因为我不想将文章绑定到特定的语言,而只是类别 当然,我不能将外键添加到主键的一部分。我也不能只在类别的ID上有主键,因为那时只能有一种语言。没有主键会完全禁用外键,这也不是一个很好的解决方案 你有什么办法让我优雅地解决这

我试图在我的数据库中实现一些本地化

它看起来像这样(前缀仅用于澄清)

tbl类别
ID
语言
名字


tbl文章
ID
类别

现在,在我的tbl类别中,我希望有跨越ID和语言的主键,以便ID和语言的每个组合都是唯一的。在tbl文章中,我想要一个外键来引用类别中的ID,而不是语言,因为我不想将文章绑定到特定的语言,而只是类别

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

你有什么办法让我优雅地解决这个问题吗


谢谢。

鉴于场景,您需要在类别和语言之间建立一对多关系。创建3个表:

  • 以CategoryID和Name作为列的类别
  • 以LanguageID和Name作为列的语言
  • CategoryLanguageId、CategoryID和LanguageID的CategoryLanguage(在CategoryID和LanguageID上创建一个复合主键,以建立唯一性)
  • 您不必在Articles表上执行任何操作,因为ID和CategoryId确定一篇文章可以属于其中一个类别,但不依赖于语言


    HTH

    谢谢,这就是我要找的。用两张表而不是三张表,找到了类似的东西。这是更一般的。非常感谢。不过有一个问题——分类表上的名字是故意的还是打字错误?不客气,我是故意给你起名字的……我是说CategoryName