我正在寻找一种解决方案,以最有效的方式为社交网站设计一个表格(使用mySQL)。这里是我当前表设置了:(高达约万成员与9999级的消息给各有关成员即100个军用行)
社交网站的数据库设计。帮帮我!
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...
我知道,第一个由于User_ID列具有重复值,所以规范化规则被破坏。
我宁愿为User_ID设置一个唯一的键索引列,并在新用户注册时使用Auto_Increment,从而生成矩阵格式。即。标题行中的列& Peer_ID中的User_ID。
但是在这种情况下,需要多达10000个列(对于每个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...
我如何能创建一个更有效的表设计任何想法?
在此先感谢...
不,你是对的第一次。只要user_id列和peer_id列是外键到某些“用户”表中,那么你已经明白了,没有*值*重复,只有*引用*重复。 – SingleNegationElimination