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

bbs用户表结构设计问题讨论
做一个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.html?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-mail
ACTIVE_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   版块ID
MODERATOR      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   版块ID
POST_CONTENT         CLOB           NOT NULL   帖子内容
REPLY_AMOUNT         NUMBER(9)      NOT NULL   回复数量      DEFAULT 0
LAST_REPLY_USERNAME  VARCHAR2(20)   NULL       最后回复用户
LAST_REPLY_TIME      DATE           NULL       最后回复时间
STATUS               NUMBER(2)      NOT NULL   帖子状态(0正常;1锁定;2删除)

=============