有趣的是我之前从未遇到过这个问题!
在我开始处理一个用户可以"关注"(社交网络)其他用户的系统时,我从未想过可以在一张表上拥有“多对多”的关系。
一个标准的查找表,在我使用它的方式中至少不适用于这里。 让我们保持简单:
用户表具有"id"和"name"列。
User_relationship 表具有 "uid1" 和 "uid2",分别表示“朋友”或“同伴”或“伙伴”或“其他什么”。
很快就会发现这里的问题- uid1 和 uid2 是来自同一张表的相同数据类型的相同列,这意味着唯一键变得不完善。
例如: uid1 = 1 uid2 = 2
与下面这个相同: uid1 = 2 uid2 = 1
因此,查询可能会返回2个或0条记录,如果查询执行错误,则可能会发生这种情况。
为了设计好一个表,在扫描整个表两次以检查现有值之前,我不想要这样。
是否有一些处理这个问题的技巧? 这是一个设计问题,我从未遇到过,它让我感到烦恼,因为我知道有一些简单的技巧可以使它起作用。
在你问之前,我还没有尝试任何方法,因为我已经看到我最喜欢的关联方式(查找表)不适合我的需求,我需要一些帮助-我在SO或Google上找不到任何东西 :(
提前感谢。
在我开始处理一个用户可以"关注"(社交网络)其他用户的系统时,我从未想过可以在一张表上拥有“多对多”的关系。
一个标准的查找表,在我使用它的方式中至少不适用于这里。 让我们保持简单:
用户表具有"id"和"name"列。
User_relationship 表具有 "uid1" 和 "uid2",分别表示“朋友”或“同伴”或“伙伴”或“其他什么”。
很快就会发现这里的问题- uid1 和 uid2 是来自同一张表的相同数据类型的相同列,这意味着唯一键变得不完善。
例如: uid1 = 1 uid2 = 2
与下面这个相同: uid1 = 2 uid2 = 1
因此,查询可能会返回2个或0条记录,如果查询执行错误,则可能会发生这种情况。
为了设计好一个表,在扫描整个表两次以检查现有值之前,我不想要这样。
是否有一些处理这个问题的技巧? 这是一个设计问题,我从未遇到过,它让我感到烦恼,因为我知道有一些简单的技巧可以使它起作用。
在你问之前,我还没有尝试任何方法,因为我已经看到我最喜欢的关联方式(查找表)不适合我的需求,我需要一些帮助-我在SO或Google上找不到任何东西 :(
提前感谢。