网上搜了下,发现基本上都是这样一种方法,一张users表,存放用户信息,字段:UID(主键);username(标识名);其他字段……,一张friends表,ID(主键);UID(外键);friendID(外键);其他字段。
这样的话,也就是说每个用户的每个好友在friends表中都有一条记录,拿QQ来说,每个用户300个好友的话,friends会过于庞大,1:300,有没有更好的设计方法?(据说可以存储为xml?如何实现?)

解决方案 »

  1.   

    <friendid>1</friendid><friendid>2</friendid><friendid>3</friendid><friendid>4</friendid>
      

  2.   

    XML是可以存储,问题是你先要想想尼存储这些数据的目的,我想这些数据是有用的,而使用时需要效率很高,用XML或者字符串,如果需要从好友查找本身(倒过来查),或者需要关联出多层关系,就会很麻烦,而且性能会成为瓶颈。存储结构的选择取决于数据的应用。
      

  3.   


    书上说xml字段性能更好……通过将一个XML Schema集与XML类型的字段相互绑定,还可以对存储在字段中的XML数据执行类型校验、数据插入和修改等操作,从而优化数据库的存储和查询性能。SQL Server 2005为此提供了一些专用于管理服务器中Schema的DDL 语句。除此之外,用户甚至可以使用XQuery语句对XML字段中的数据进行检索(例如,查询哪些元素或属性中具有指定值的XML文档的字段等)。采用这种方式可以有效地提高数据库查询的效率,因为在使用XML数据类型的字段后,查询时就可以省去大量表扫描和字段扫描的操作。by_《SQL Server 2005数据库管理高级教程》
      

  4.   

    在查询的时候XML效率不会太高