我正在寻找一种解决方案,以最有效的方式为社交网站设计一个表(使用mySQL)。这是我目前的表格:
User_ID Peer_ID Message 001 002 msg from 001 to 002 001 003 msg from 001 to 003 001 004 msg from 001 to 004 001 005 msg from 001 to 005 002 001 msg from 002 to 001 002 003 msg from 002 to 003 002 004 msg from 002 to 004 002 005 msg from 002 to 005 003 001 msg from 003 to 001 003 002 msg from 003 to 002 003 004 msg from 003 to 003 003 005 msg from 003 to 005 and so on...
(最多约10,000名成员,每个成员有9,999条消息。即100 Mil行)
我知道规范化的第一个规则之一被破坏,因为User_ID列具有重复值
我宁愿为User_ID提供唯一的键索引列,并在新用户注册时使用Auto_Increment,从而产生矩阵格式。即。列中的User_ID&标题行中的Peer_ID。
但是,在这种情况下,将需要多达10,000列(对于每个Peer_ID),并且无法在新用户注册时自动生成新列。见下文:
User_ID 001 002 003 004 005 001 NA msg:001 to 002 msg:001 to 003 msg:001 to 004 msg:001 to 005 002 msg:002 to 001 NA msg:002 to 003 msg:002 to 004 msg:002 to 005 003 msg:003 to 001 msg:003 to 002 NA msg:003 to 004 msg:003 to 005 004 msg:004 to 001 msg:004 to 002 msg:004 to 003 NA msg:004 to 005 005 msg:005 to 001 msg:005 to 002 msg:005 to 003 msg:005 to 004 NA and so on...
关于如何创建更高效的桌面设计的任何想法?
提前感谢...
答案 0 :(得分:2)
你第一次表设计没问题,从行到行重复值没有错。我认为你误解了重复组的概念,这是指列到列的重复。 (这是你的第二个设计所使用的。)
答案 1 :(得分:1)
我做过一个邮件系统。如果你想让它像Gmail和Facebook中的对话那么有趣。
您是否计划在一次对话中显示消息?如果没有,那就非常简单。
你只需要更多的文件。读/未读标志和日期/时间。