SQL复合主键

时间:2014-04-11 10:06:55

标签: sql-server composite-key

我正在使用Sql Server for Visual Studio。我有两列,1是自动递增而另一列不是,但我希望使两个主键和未增加的键可以用作另一个表中的外键。感谢

1 个答案:

答案 0 :(得分:3)

就像TomTom所说的那样,你想做什么没有任何意义。 如果第二列(您未调用的那一列)已经是唯一的,则可以删除自动增量列,因为它是冗余且无用的。

冗余是由于在一个密钥中聚合的2个唯一列不仅损害了列本身的唯一性,而且它使用2个不同的列来描述相同的值!

  id   |   col   |  some_data
-------------------------------
   1   |    A    |
   2   |    B    |
   3   |    D    |

正如你所看到的,如果我想指向一个特定的行,在这种情况下你正在描述,我可以只使用id或col列,它们都是有效的!

如果相反,未增加的列不是唯一的,主键应该只是自动递增的列,而这个列应该用作其他表中的外键。

如果您真的想拥有2个不同的列,那么您拥有的最后一个选项是不将第一个选项设置为自动增量列。

作为一般规则,自动增量列应始终用作单列键。