首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求个美思路,关于好友表的设计

2012-12-29 
求个好思路,关于好友表的设计首先有个角色表,里面有一个唯一的角色ID字段.现在每一个角色,可以有其他角色

求个好思路,关于好友表的设计
首先有个角色表,  里面有一个唯一的角色ID字段.


现在每一个角色,可以有其他角色作为他的好友.  两个角色之间一定是相互好友,不存在单方面好友.(假设好友上限150)

怎么设计好友表最合理?
[解决办法]
角色表
id name memo
1  1    1
2  2    2
...

关系表
id1 id2
1   2
3   4

至于:假设好友上限150,这个需要使用程序控制.

查询:
select t.id , t1.name , t2.name
from 角色表 t
left join 关系表 t1 on t.id = t1.id1
left join 关系表 t2 on t.id = t2.id2



[解决办法]
好友表,一般就是两个字段
id1  id2

但存储数据往往有两个策略
1、一对好友只存放一条数据,在程序比较两个id大小,小的放id1,大的放id2,查询好友需要联合id1 = @id和id2 = @id的结果。
2、一对好友存放两条数据,查询时之需要查询id1 = @id

优缺点可能你自己分析下就会得出
1数据量小,写入快,查询复杂,修改删除简单
2数据量大,写入慢,查询简单,修改删除复杂



[解决办法]
角色表(FutRole)
名称英文名类型空描述
角色IDRoleIDVarchar(10) 
角色名RoleNameVarchar(10)
操作员IDUserIDVarchar(10)
描述DescriptionVarchar(255)


角色功能表(FutRoleFunction)
名称类型空描述
自增段IDInt主键
角色IDRoleIDVarchar(10) 外键
功能IDFunctionIDVarchar(128) 外键
描述DescriptionVarchar(255)


用户角色对应表 (FutUserRole)
名称英文名类型空描述
自增段IDInt主键
用户IDUserIDInt 外键
角色IDRoleIDint
描述DescriptionVarchar(255)

热点排行
Bad Request.