假设我有一个连接表来解析两张表之间的多对多关系。我的联结表也有它自己的'方法'栏来描述关系。通常情况下,我会制作[a],[b]和[method]的组合主键(该方法需要成为使行独一无二的部分),但是我的问题是[method]字段可以是NULL。因此我不能将它添加到主键。没有主键的连接表
所以我所做的就是创建唯一索引:
ALTER TABLE A_B ADD UNIQUE INDEX `Unique` (`a`, `b`, `method`);
表没有主键。这是一件好事吗?还是我需要做一些不同的事情?
在结合表主键可能不是必要的,但事情我会考虑包括:(1)唯一的索引或主键防止数据的复制(冗余); (2)主键在更新/删除行时很有用,因为它消除了目标行的歧义。 FWIW,即使你可以在一个唯一的索引中包含一个可为空的列,当部分关键字为NULL时,MySQL不会强制实现密钥唯一性,即只能有一个'a','b','x'行,但任意数量的'a','b',NULL行。 – Zenilogix