做一个BBS,在进行用户权限设置和表的设计上,想看看各位对于BBS用户表的设计,有什么好的方案。
下午和同学讨论,现有如下方案。
方案1:
1、管理员表:ID, UserName, PassWord
管理员用户进行内置,创建一个后台登陆进行管理(后台管理页面),可以对整个BBS进行调整,对超级版主、版主的任命,拥有其他所有权限
2、普通用户表:ID, UserName, PassWord
注册成功的用户,可以发表帖子、回复帖子、接收和发送短信息
3、版主用户表:ID, UserName, PassWord,Permissions(权限), ManagementPlate(管理版块)
超级版主,能够对版主进行任何,拥有版主所有权限
版主,可以对其所管理的相应版块进行管理,拥有普通用户所有权限
4、对于未进行登陆操作的IP,设置为游客。
考虑问题:1、是否需要建立“新注册用户表”,对表中用户进行审核后再转到“普通用户表”
2、用户登陆进行确认,那么对于管理员、普通用户以及版主用户,不同的用户登陆需要到不同的表中进行查找,假设其查表顺序如下:先在普通用户表进行查找,然后在版主用户表进行查找,最后在管理员表进行查找。使用如此的查找顺序是否最佳
3、新用户注册,在确认用户名是否存在时,需要对所有用户表(包括管理员表)逐一进行查找以确认是否存在该用户,是否会影响效率(是否需要考虑效率问题?)
方案2:
1、管理员表: ID, UserName, PassWord
管理员用户进行内置,创建一个后台登陆进行管理(后台管理页面),可以对整个BBS进行调整,对超级版主、版主的任命,拥有其他所有权限
2、用户表:ID, UserName, PassWord,Permissions(权限), ManagementPlate(管理版块)
将超级版主、版主、普通用户都存于此表中。通过权限进行区分
3、对于未进行登陆操作的IP,设置为游客。
考虑问题:版主用户比较少,普通用户数量多,将2者合到一个表中,容易造成用户数据混杂,管理不方便。但是相对于方案一,对用户登陆以及用户注册,效率提高了一点点,在管理上有所下降。相对于方案3,又方便管理一点点,效率也高了一点点。所以此方案属于折中方案
方案3:
1、用户表:ID, UserName, PassWord, Permissions(权限), ManagementPlate(版块)
将管理员,超级版主,版主,普通用户统一放入一个表中,通过权限进行区分
2、对于未进行登陆操作的IP,设置为游客。
考虑问题:通过权限进行区分是否合适,是否便于管理。
------解决方案--------------------------------------------------------
用户表,角色表,权限表
用户具有某种角色
某种角色具有某些权限
仅供参考
------解决方案--------------------------------------------------------
可以采用基于角色的权限管理系统:
超级管理员是系统默认设定,拥有一切权利。
用户可以有多个角色
每个角色有不同的权限
可以有用户表,角色表,权限表,用户角色表,角色权限表,这样关系明了,查找容易
实现细粒度的划分。
本人刚做完这样一个系统,有兴趣可以讨论下。
------解决方案--------------------------------------------------------
下面这些原来在这个帖子中回复的:
http://topic.csdn.net/u/20090925/23/4de5f85a-8da5-4b98-9952-141bd809e396?r=60099968#r_60099968
- Java code
==================================================================================T_USER 用户----------------------------------------------------------------------------------ID NUMBER(9) NOT NULL 主键(Primary Key)USERNAME VARCHAR2(20) NOT NULL 用户名(Unique Index)PASSWORD VARCHAR2(40) NOT NULL 密码EMAIL VARCHAR2(50) NOT NULL E-mailACTIVE_CODE VARCHAR2(36) NOT NULL 邮箱激活码(使用UUID)(Unique Index)STATUS NUMBER(1) NOT NULL 用户状态(0新注册;1已激活;2封杀;3...)REGISTER_TIME DATE NOT NULL 注册时间ACTIVE_TIME DATE NULL 激活时间NIKENAME VARCHAR2(50) NOT NULL 用户昵称==================================================================================T_BOARD 版块----------------------------------------------------------------------------------ID NUMBER(9) NOT NULL 主键(PK)BOARD_NAME VARCHAR2(100) NOT NULL 版块名称BOARD_DESC VARCHAR2(500) NOT NULL 版块描述==================================================================================T_MODERATOR 版主----------------------------------------------------------------------------------ID NUMBER(9) NOT NULL 主键(PK)BOARD_ID NUMBER(9) NOT NULL 版块IDMODERATOR VARCHAR2(20) NOT NULL 版主用户名CREATE_TIME DATE NOT NULL 上任时间==================================================================================T_POST 帖子----------------------------------------------------------------------------------ID NUMBER(9) NOT NULL 主键(PK)SUBJECT VARCHAR2(200) NOT NULL 帖子标题POST_USERNAME VARCHAR2(20) NOT NULL 发帖用户名POST_TIME DATE NOT NULL 发帖时间BOARD_ID NUMBER(9) NOT NULL 版块IDPOST_CONTENT CLOB NOT NULL 帖子内容REPLY_AMOUNT NUMBER(9) NOT NULL 回复数量 DEFAULT 0LAST_REPLY_USERNAME VARCHAR2(20) NULL 最后回复用户LAST_REPLY_TIME DATE NULL 最后回复时间STATUS NUMBER(2) NOT NULL 帖子状态(0正常;1锁定;2删除)==================================================================================T_POST_PROCESS_HIS 版主帖子处理历史记录----------------------------------------------------------------------------------ID NUMBER(9) NOT NULL 主键(PK)POST_ID NUMBER(9) NOT NULL 帖子IDMODERATOR VARCHAR2(20) NOT NULL 版主用户名STATUS NUMBER(2) NOT NULL 帖子处理状态CAUSE NUMBER(2) NOT NULL 处理原因(0广告帖;1色情帖;2骂人帖;...;99其他)CONTENT VARCHAR2(2000) NOT NULL 处理内容==================================================================================T_REPLY 帖子回复----------------------------------------------------------------------------------ID NUMBER(9) NOT NULL 主键(PK)REPLY_USERNAME VARCHAR2(20) NOT NULL 回复人REPLY_TIME DATE NOT NULL 回复时间REPLY_CONTENT CLOB NOT NULL 回复内容STATUS NUMBER(2) NOT NULL 回复状态(0正常;1锁定;2删除)==================================================================================T_REPLY_PROCESS_HIS 帖子回复版主处理历史记录----------------------------------------------------------------------------------参考 T_POST_PROCESS_HIS