MySQL:在具有主键的表和没有唯一列的表之间创建外键

时间:2018-10-21 19:17:26

标签: mysql foreign-keys

我很难弄清楚这一点。

我有两个表,一个表很大,在“ column1”列中有唯一值。我想将其连接到一个较小的表,该表只有两列,一列连接到“ column1”,另一列-具有空值和重复值的“ column2”。

问题是,在第二个较小的表的“ column1”中,将多次出现相同的值,因此我无法使较小表中的任一列成为主键或唯一键来与之连接通过外键更大的表。

对于此问题的任何帮助,我们将不胜感激。

1 个答案:

答案 0 :(得分:0)

您有两种可能的解决方案:

  • 您可以同时使用column1column2创建主键。您可以复制两个值之一,只要这对夫妇在表格内不重复;
  • 您可以在第二个表(传说中的id字段)中添加第三列,一个自动递增的数值,并将其设置为PK。这样一来,您可以复制任意数量的内容,因为id总是不同的。

缺点:

  • 第一种情况在理论上更“正确”,这是教科书建议您执行的操作,但是组合的PK可能需要大量计算,具体取决于两列的类型(比较字符串不同于比较整数)
  • 第二种情况更易于计算(只有一个值和数字),但是允许重复的对,而这可能不是您想要的。

您的选择。

编辑

null值可能会给您带来一些问题,因此我可能会使用自动递增的数字id列。我将同时给出两个选项的答案,以供将来参考。