避免使用复合键

时间:2018-04-03 16:49:49

标签: sql database database-design

我有一个联合数据库表,其中包含3列,如下例所示:

ViewController

C is a joint table between A and B

我只是想知道我是否可以避免在我的实现中使用复合键,通过添加自动增量“ID”或正确的代码作为主键并在外键列上添加唯一约束?这样我只需要在我的业务层中引用该ID,而不必担心任何重复。

编辑:当我说独特时,这意味着这对夫妇(ID_A,ID_B)被宣布为UNIQUE。

1 个答案:

答案 0 :(得分:1)

是的,您可以添加代理键。

添加代理密钥对性能的影响将取决于您使用的DBMS,但总体而言,它应该是最小的(如果有的话)。只要您强制使用唯一密钥,就不应该引入任何长期问题。使用代理键而不是复合键作为相关表中的外键会增加一个间接级别,并且可能需要在没有复合键的情况下加入C表,但这是常见的做法,不应该是一个重大问题。代理键使得外键比两个变量更小,这意味着某些查询可能更有效。