假设我想在我的应用程序的用户之间存储关系,类似于Facebook本身.
这意味着如果A是B的朋友(或某种关系),那么B也是A的朋友.为了存储这种关系,我目前正计划将它们存储在关系表中,如下所示
UID FriendID
------ --------
user1 user2
user1 user3
user2 user1
Run Code Online (Sandbox Code Playgroud)
但是我在这里面临两个选择:
user1 -> user2和user2->user1.这将占用更多空间,但(至少在我的脑海中)只需要一次遍历行以显示特定用户的朋友.user1->user2OR user2->user1,每当我想找到所有的朋友时user1,我会查询表的两列以查找用户的朋友.它将花费一半的空间,但(至少在我的脑海中)是两倍的时间.首先,我的推理是否恰当?如果是,那么我是否会忘记任何瓶颈(在扩展/吞吐量或其他方面)?
基本上,两者之间是否有任何权衡,除了这里列出的那些.另外,在工业中是一个优先于另一个?
嗨我打算设计一个社交网站(如orkut)asp.net mvc.我陷入了数据库设计.任何人都为我提供了资源.
所以我的项目有一个“朋友列表”,并且在 MySQL 数据库中我创建了一个表:
姓名A
姓名B
主键(名称A,名称B)
这将导致大量条目,但为了确保我的数据库标准化,我不确定还有什么方法可以实现这一点?
我的项目也使用Redis..我可以将它们存储在那里。
当一个人加入服务器时,我必须搜索所有条目,看看他们的名字是nameA还是nameB,然后将这两个名字放在一起作为好友,这也可能效率低下。
干杯。