求个好思路,关于好友表的设计
首先有个角色表, 里面有一个唯一的角色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)
名称 英文名 类型 空 描述
角色ID RoleID Varchar(10)
角色名 RoleName Varchar(10)
操作员ID UserID Varchar(10)
描述 Description Varchar(255)
角色功能表(FutRoleFunction)
名称 类型 空 描述
自增段 ID Int 主键
角色ID RoleID Varchar(10) 外键
功能ID FunctionID Varchar(128) 外键
描述 Description Varchar(255)
用户角色对应表 (FutUserRole)
名称 英文名 类型 空 描述
自增段 ID Int 主键
用户ID UserID Int 外键
角色ID RoleID int
描述 Description Varchar(255)