某交友网站,约有会员1000W,每个会员都可能是另一个会员的好友,请您设计一个数据库,用来表示这种好友关系。数据库使用Mysql。

解决方案 »

  1.   

    可以设计两个表,一个是基本信息表 另一个是好友关系表基本信息表字段 id,name,age......
    好友关系表字段 myId friendId
    其中myID是自己的id,friendId是好友的id,两个表通过id和myid关联
    可以每一个好友生成一条记录,也可以多个好友id拼成字符串存到friendId里,以后只通过分析friendId来变更好友
      

  2.   

    也可以把两个表合并
    表结构为 id friendId name age......
    friendId同上
      

  3.   

    最近流行的sns网站中,可以查看最近好友的动态,这块是怎么做的啊?
    譬如:
        1.用户aaa发表了一篇日记【日志标题】
        2.用户bbb修改了自己的资料
        3.....
    这些是怎么设计的数据库?不太具有共性啊?
      

  4.   

    怎么实现我对某个用户的动态删除呢
    __________________
    trigger
      

  5.   

    我11月28日到文思创新面试(笔试)的时候,有这个题。但当时没有说是mysql。在我的印象中mysql是小型的数据库,支持1000w是不是很困难?
    每个会员都可能是另一个会员的好友,  平均一个人有多少个好友?  拥有1、2、3、....n个好友的分别是多少?
    若平均每个人有10个好友,则在第二个表中有1亿条记录,查找、插入、删除的效率怎么样?loveme1204 的方案是否真的可行啊?有没有权威的人士来说明一下?
      

  6.   

    第二个表中使用myid 建立索引,在查找、插入、删除的效率会得到一定的优化!实际应用这么大的数据量,
    应当考虑数据库集群,地域分割会员等方法,减少会员数据量的等级
      

  7.   


    好友表id
    name
    ....关系表
    aid
    bid关系表中aid对应好友表id,bid也对好友表的id。它们之间是多对多的关系。
      

  8.   


    mysql 中象那样建立关系表,1000万的数据量并不大,而且查询的速度可观。这个有我们已有的项目做为参观。我们的网站是web2.0的网站,文章和tag的关系表超过3000万。mysql表分区后,速度还可以被用户接受。