日期:2014-05-17  浏览次数:20490 次

“当前登录用户的好友列表”,这个数据表如何设计

显示当前用户的好友,好比CSND里面的,在个人主页的右侧,显示当前用户的好友。

比如:当前用户的登录ID存储在 [dbo].[CSDN_User]的[UID]字段内,我的好友是放哪个表呢?

下面这个设计可靠吗?
[PrimaryID] [UID] [Password] [MyFirendID]
  1 zooen2011 xxxxxxxxx 3,9,0,2,13

------解决方案--------------------
这个累人的很,还得转换

使用

primaryid myfriendid
1 3
1 9
1 2

这样的,链接使用更方便。

------解决方案--------------------
SQL code

--好友关系表
create table FriendShip
(
    ID int identity(1,1) primary key,--PK
    UID1 uniqueidentifier not null,--FK
    UID2 uniqueidentifier not null,--FK
    Status int not null default(0),--状态,1:用户1关注用户2,2:用户1用户2互相关注,等等...
    CreateTime datetime default(getdate()) not null,
    ModifyTime datetime null
    --其他字段
)

------解决方案--------------------
最少要2各表,1:本用户的信息,包括登录状态。2:好友关系表,一对多。因为你最少要展示出好友的名称吧,给个ID也没用。个人建议的1表:
uid,uname,status(状态),logintime(登录时间),logouttime,password。暂时这些够了,好友的信息到2表里面,uid,fid(好友ID),fname(好友姓名),好友当前状态可加可不加。

对于你的表,priamryid是多余的,因为uid已经,也应该能够唯一标识一个用户了。自增ID其实大部分情况下都没必要成为主键的。
------解决方案--------------------
建议建2个表

个人表user
(id,qq)id 为序列,qq为存放你自己的qq号码,这样你有几个qq号就有几列

好友表friend
(id,friend_qq,userid)id同样为序列,为以后业务扩充做准备,friend_qq 为好友的qq号,userid为个人表 user 的id,
这样2表通过userid连接,

select * from friend b,user a where a.id=b.userid and
a.qq=?????
就可以查出你的某个qq号对应的所有好友