有趣的是我从来没有遇到过这个!
我从来没有想过一个人可以在一张桌子上建立“多对多”的关系——直到我开始研究一个用户可以互相“加好友”的系统(社交网络)。
至少在我习惯使用它的方式上,标准查找表在这里不合适。让我们保持简单:
用户表有“id”和“name”列。
User_relationship 表有“uid1”和“uid2”,表示用户是“朋友”或“芽”或“朋友”或“其他”。
很明显这里的问题是什么 - uid1 和 uid2 是来自同一个表的同一列的相同数据类型,这意味着唯一键变得有缺陷。
例如:uid1 = 1 uid2 = 2
是相同的:
uid1 = 2 uid2 = 1
因此可能返回 2 条记录,如果查询执行错误则返回 0 条记录。
本着良好设计表格的精神,我不想扫描整个表格两次以检查现有值。
有什么技巧可以解决这个问题吗?这是一个我从未想过的设计问题,这让我很恼火,因为我知道有一些简单的技巧可以让它发挥作用。
在你问之前,我还没有尝试过任何东西,因为我已经看到我最喜欢的关联事物的方式(查找表)不足以满足我的需求,我需要一些帮助——我在 SO 或 Google 上找不到任何东西:(
提前致谢。