【问题标题】:MySQL Dual Column Primary Key DilemmaMySQL双列主键困境
【发布时间】:2014-11-05 11:50:42
【问题描述】:

情况如下 -> 我在 MySQL 环境中处理两列数据(A 和 B - 均为整数)。 A 和 B 是非唯一的属性,但 A 和 B 的每一行/切片都必须是唯一的。

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

甲乙 --- --- 1 1 1 2 1 3

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

甲乙 --- --- 1 2 1 3 1 2

对我而言,在两列的组合效果创建主键的 MySQL 设置中对这种类型的关系建模的最佳方法是什么?我可以将此逻辑简化为一个主键吗?在这种情况下,我如何确保每个新行都没有违反规则?

【问题讨论】:

  • 你为什么不简单地有一个两列的主键?
  • 感谢您的回复!我是这个东西的新手,你不能有两列主键

标签: mysql sql relational-database


【解决方案1】:

尝试唯一索引:

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

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

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

【讨论】:

  • 感谢您的回复!这种方法与 Dan Bracuk 提到的创建两列主键有何不同?
  • 您不需要 A 和 B 的两个值。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2015-10-23
    • 2015-05-23
    • 2011-03-01
    • 2017-10-08
    • 2010-10-22
    • 1970-01-01
    • 1970-01-01
    • 2017-06-05
    • 1970-01-01
    相关资源
    最近更新 更多