假设我想存储我的应用程序的用户之间的关系,类似于 Facebook,本身。
这意味着如果A是B的朋友(或某种关系),那么B也是A的朋友。为了存储这种关系,我目前计划将它们存储在关系表中,如下所示
UID FriendID
------ --------
user1 user2
user1 user3
user2 user1
但是我在这里面临两个选择:
- 典型情况下,我将同时存储
user1 -> user2
和user2->user1
。这将占用更多空间,但(至少在我的脑海中)只需要一次通过行来显示特定用户的朋友。 - 另一种选择是存储
user1->user2
ORuser2->user1
并且每当我想查找 的所有朋友时user1
,我都会查询表的两列以查找用户的朋友。它将占用一半的空间,但(至少在我的脑海中)两倍的时间。
首先,我的推理是否恰当?如果是,那么我是否忘记了任何瓶颈(在扩展/吞吐量或其他方面)?
基本上,除了这里列出的之外,两者之间是否有任何权衡。另外,在工业中,一个比另一个更受欢迎吗?