复合主键的最佳做法是什么?

时间:2018-08-24 09:57:51

标签: sql primary-key composite-primary-key

我有一张桌子,其中有两列作为复合PRIMARY KEY。现在我很困惑。

假设我有一张桌子,如下所示:

ColA         ColB

X            NULL
X            NULL

“ X NULL”和“ X NULL”这两个行都组合为主键。

那么,这种插入可能吗?由于NULL值不同,因此两行都应代表新的数据组合。

请澄清。

1 个答案:

答案 0 :(得分:0)

主键具有三个属性:

  • 键(组合)唯一地标识每一行。
  • 键的任何元素都不能为NULL
  • 一个表只有一个主键。

因此,根据此定义,您不能将这两列声明为主键。

通常,我不主张使用复合主键。我建议对表使用自动递增的主键(语法因数据库而异)。

数字标识符的一个不错的功能是它捕获表中值的插入顺序。同样,许多数据库通过主键将数据聚集在一起,从而导致insertupdate上的碎片。