【问题标题】:Efficient way to store unordered pair in a mysql table在mysql表中存储无序对的有效方法
【发布时间】:2012-02-22 12:30:00
【问题描述】:

我正在处理 twitter 数据,需要将 uid 和friendId 对存储在 mysql 表中。我的目的是稍后在桌子的帮助下创建一个朋友和追随者网络。

我想避免表中的 (uid,friendId) 和 (friendId, uid) 等重复对。

谢谢

【问题讨论】:

  • 将它们存储为有序 (id2 > id1),并记住它们实际上是无序的。
  • @ypercube:我曾经使用 posgresql 规则系统完成过这项工作。很干净。不适合胆小的人,不要在家里尝试。
  • @s2n:请注意(对于最后的投票,很抱歉,刚刚注意到 mysql 标签)该链接一般是关于 SQL 的。 MySQL 不强制执行CHECK 约束!
  • @ypercube:感谢您分享链接。

标签: mysql database database-design


【解决方案1】:

为避免重复对,请在插入前检查uid < friendId

【讨论】:

  • 简洁优雅。我认为它会完成这项工作。谢谢。
  • 用 MySQL 几乎不可能做到这一点。您必须在插入之前执行触发器并在那里引发错误。
  • 不幸的是,@santiagobasulto 是对的。你不能在 MySQL 中强制执行这个约束。 (更糟糕的是,MySQL 将允许您将其写入CREATE TABLE 代码中,它会解析它,不显示错误然后忽略它!)
  • 我能做的就是在 a
  • 检查不会很慢。无论如何,我想你会有一个唯一索引。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-02
  • 2016-03-11
相关资源
最近更新 更多