角色表(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)
建立一个好用表 CREATE TABLE #temp ( id int IDENTITY(1,1), aid int, bid int ) id为标识种子 aid为邀请人id bid为被邀请人id 楼主在查找时. select * from #temp where aid=1 or bid=1 这样就可以确认好友人数或是信息了. 自己的一点想法.希望对你有帮助
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数据量大,写入慢,查询简单,修改删除复杂
名称 英文名 类型 空 描述
角色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)
CREATE TABLE #temp
(
id int IDENTITY(1,1),
aid int,
bid int
)
id为标识种子
aid为邀请人id
bid为被邀请人id
楼主在查找时.
select * from #temp where aid=1 or bid=1
这样就可以确认好友人数或是信息了.
自己的一点想法.希望对你有帮助