MySQL双列主键困境

时间:2014-11-05 03:37:44

标签: mysql sql relational-database

这是情况 - >我在MySQL环境中使用两列数据(A和B - 两个整数)。 A和B是非唯一属性,但是A& A的每一行/切片都是B必须是独一无二的。

例如,这些是有效的条目:

A      B
---    ---
1      1
1      2
1      3

在这种情况下,第三行无效导致它违反了A和B的每个组合必须是唯一的规则:

A      B
---    ---
1      2
1      3
1      2

对于我在MySQL设置中建模此类关系的最佳方式是什么,其中两列的组合效果会创建主键?我可以将此逻辑减少到一个主键吗?在这种情况下,如何确保每个新行都不违反规则?

2 个答案:

答案 0 :(得分:1)

您可以创建新的任意键值(通常是连续的整数),也可以从两列创建复合键。

答案 1 :(得分:1)

尝试一个独特的索引:

 ALTER TABLE `table` ADD UNIQUE INDEX (`A`, `B`);

在此查询起作用之前,您必须对表进行重复数据删除,但一旦完成,您就可以保证表中有唯一的A + B行。查询可以同时使用,但不必:

 SELECT * from `table` WHERE `A`=1 and `B`=2;