- 系统功能设计
1.1 引言
随着网络的越来越普及,人们越来越关于这样一种交流平台――网站客户服务。很多商业网站都开设自己网站客户服务来提供交流和服务,也有很多的个人网站和个人网站客户服务的出现,网站客户服务已经不光是一种交流平台,甚至是成为了实现自我价值的一个舞台。正因为网站客户服务越来越重要,所以网站客户服务的维护也变成了一种职业,而更好的维护则需要从设计这个层面来了解和进行。
在网站客户服务里大家最熟悉的就是用户浏览网站客户服务中已有的内容,针对别人的主题展开讨论,也可以发表自己的观点供大家品评。同时为了防止用户发布一些不健康不合法的内容,需要有管理人员来对这些内容进行删除、修改。而且用户想在网站客户服务发布信息则要求他注册,这样来控制用户发布信息和方便管理者操作用户的信息。网站客户服务也要有多个版面和分区,用来区分各种帖子的内容范畴,方便整理和管理。所以网站客户服务的基本功能就是要实现用户的数据库管理和帖子的数据库管理,以及怎么样让这些数据库和网页的操作联系起来。
1.2 需求分析
要设计一个一个网站客户服务,首先要分析网站客户服务里需要那些内容,以及各种内容之间的关系。
首先列出网站客户服务常用的名词:用户、版面、公共信息、帖子、主题、积分、称号、版主、注册信息、管理员、系统参数。
对于以上名词可以精简。主题是帖子的一个特例、积分和称号是用户的一个属性、版主是增加了权限的用户,注册信息是用户的具体属性。
所以具体的对象有:用户、版面、公共信息、帖子、管理员、系统参数。
具体的操作包括:管理员对用户、帖子、版块的管理;客人和用户的对版块、帖子的浏览;客人的注册;用户的发帖、回帖、搜索等操作。
把具体的对象和具体的操作相联系,我们可以归结出网站客户服务基本操作的流程图,如图1-1。
图1-1 网站客户服务基本功能流程图
图1-1中个将具体的对象和操作直观的表达了出来,为了更具体的细化对象和操作的关联,用来划分开发的模块,我们将对象与对象之间的关联可以建立出一张表,对象如表1-1。
表1-1 各对象间的关联表
|
用 户 |
版 面 |
公共信息 |
帖 子 |
管理人员 |
系统参数 |
用 户 |
注 册 修 改 浏 览 联 系 |
浏 览 |
浏 览 发 布 |
浏 览 发 布 修 改 删 除 特殊操作 |
√ |
× |
版 面 |
√ |
× |
× |
× |
√ |
× |
公共信息 |
√ |
× |
× |
× |
√ |
× |
帖 子 |
√ |
× |
× |
× |
√ |
× |
管理人员 |
删 除 授 权 |
添 加 删 除 修 改 |
添 加 删 除 修 改 |
添 加 删 除 修 改 |
× |
设 置 |
系统参数 |
× |
× |
× |
× |
√ |
× |
表1-1中的对象是单向关联,是指左侧对象对上方对象的活动。×表示没有关联,√表示存在单向关联。通过以上设计,网站客户服务需要些什么以及所需要的对象之间存在着怎么的关系就有了基本的概念。
1.3 功能设计
表1-1中用户关联的对象是自身、版面、公共信息、帖子。分别根据用户与这些对象的联系给出一个明确的菜单,如表1-2。
表1-2 用户功能列表
功能名称 |
说明 |
用户注册 |
用户在网站客户服务填写必要信息后就可以注册为注册用户,并能在登陆后对注册信息进行更改 |
用户登陆 |
注册后的用户可利用用户名和密码在网站客户服务登陆 |
浏览其他用户信息 |
用户注册后可以查看其他用户的公开信息 |
与其他用户联系 |
可以在网站客户服务内给其他用户私下留言,或直接发送邮件等 |
浏览版面 |
用户可以看到以列表形式展现的版面信息和版面说明 |
浏览发布公共信息 |
未登陆的用户可以浏览公共信息,登陆后可以发布允许范围内的公共信息 |
浏览帖子 |
用户可以以列表形式浏览帖子主题及其全部内容 |
发布修改删除帖子 |
用户在登陆后可以发布帖子、修改自己的帖子,被给予版主权限后还可以编辑、修改、删除权限范围内的其他用户帖子 |
对帖子特殊操作 |
主要针对版主权限用户,对帖子进行置顶、加精华等特殊操作,是帖子主题不同于其他主题 |
版面、公共信息、帖子都没有和其他对象的关联,都属于被动的对象,是被其他对象所操作的,因此针对它们的功能主要是有其他对象产生。版面和帖子是有一定关系的,可以看作是对帖子内容的归类,类似文件夹与文件的关系,有时候可以认为版面是帖子的一个属性。
对于管理员的功能,应该认为管理员是网站客户服务的特殊群体,工作是设置网站客户服务参数规则和维护网站客户服务的正常运转。管理员可以和所有对象产生关联,所以其功能设定也很丰富,如表1-3。
表1-3 管理员功能列表
功能名称 |
说明 |
用户删除 |
对于一些蓄意破坏的用户,删除其身份,不允许其存在 |
用户权限 |
对于一个具有管理能力的用户给予一些特殊的权限,让他们在权限范围内帮助管理和维护网站客户服务 |
版面管理 |
版面是网站客户服务的枝干,要设定网站客户服务需要的合适版面,让网站客户服务的功能更明细,分类更规范,方便大家的浏览 |
公共信息管理 |
公共信息是向用户展现网站客户服务状态的部分,由于信息的普遍性,其删除和修改权限需要由管理人员来完成 |
帖子管理 |
帖子是网站客户服务的叶子,是基本数据库,反映了网站客户服务使用者和管理者的水平,所以需要管理人员的全权管理来规范其内容 |
设置系统参数 |
系统参数包含的内容很多,直接关系到网站客户服务的正常运行,包括网址在内的各种参数全部要由管理人员统一设置和变更 |
对于管理员和用户功能关系可以细化成以下几个相关用例图。
网站客户服务设置参数,可以把设置一组参数作为一个方法,也可以把设置一个参数作为一个方法,如图1-2。
图1-2 网站客户服务对象的相关用例图
各个版块有浏览列表和管理两个操作,管理方法又包括了创建、修改和删除这3个子方法,如图1-3。
图1-3 版块对象的相关用例图
帖子有浏览、发帖、回帖、搜索和管理5种方法,浏览方法又可以分列表和查看2个子方法,管理方法又可分编辑、删除、置顶、转移、加精华5个子方法,如图1-4。
图1-4 帖子对象的相关用例图
用户类有注册、登陆和管理3个方法,管理方法又分为添加、删除、设置权限3个子方法,如图1-5。
图1-5 用户对象的相关用例图
这样,表1-2和1-3就分别有了各自的归属对象。
网站客户服务一般存在两种用户:注册用户和管理员。用户的权限是向下覆盖的,即上级权限包含下级权限。这样网站客户服务的基本功能就可以从各种需求中筛选出来了,即发帖、浏览帖子、回帖。基本功能就是构成网站客户服务系统的必要功能,具备这些功能的Web系统即是网站客户服务。
1.4 扩展功能设计
具备了发帖、浏览帖子、回帖的Web系统就构成网站客户服务了,但是这样的网站客户服务很简单,没有吸引力,用户使用起来也不会很舒服,无论是作为商业还是个人网站客户服务都是没有竞争力的。所以需要为其添加一些更人性化的功能使内容更丰富。
用表格形式列出可能的扩展功能,如表1-4。
表1-4 扩展功能列表
功能名称 |
说明 |
用户控制自己的信息 |
用户可控制自己的信息是否公开 |
用户登陆添加验证码 |
登陆时需输入验证码,如登陆信息错误则重新生成验证码。这样可以防止一些软件偷取用户名和密码 |
站内短信 |
让两个用户能在网站客户服务内更方便的交流 |
帖子评价 |
给予用户对一个帖子评价好坏的功能 |
帖子发布添加多媒体 |
如可在帖子内使用表情图片、插入flash、音乐等功能 |
帖子类别多样化 |
让用户可以发起投票、买卖等功能的帖子 |
帖子收藏 |
在网站客户服务中加入搜索但效率却不一定很高,对于好的帖子为了方便用户以后更方便找到这个帖子,可以让用户收藏帖子 |
用户等级 |
建立一个荣誉体系,对于对网站客户服务贡献大的用户给予一定的荣誉称号或者高的网站客户服务等级 |
网站客户服务情况显示 |
让用户直接看到一些网站客户服务统计数据,如主题总数、在线人员等 |
数据备份 |
网站客户服务最重要的就是数据库,但数据库系统的安全并不是100%的,所以为了网站客户服务能持续发展,需要定期对网站客户服务数据库进行备份 |
非法言论过滤 |
对于一些非法言论或不良词汇可以在网站客户服务进行过滤设置,一旦有人使用也会被过滤掉而不至于造成不良影响 |
非法IP限制 |
对于一个蓄意捣蛋的用户,限制他的IP不能访问网站客户服务,但这个有很大的局限性,一般情况下用处不会很大 |
添加了以上功能,网站客户服务就显得更具有亲和力了,而且也更具有实用性。
第二章 系统架构与数据库设计
2.1 功能模块的划分
模块的划分主要是按每一个对象的操作来归类。网站客户服务操作的对象在第一章里归纳为用户、版面、公共信息、帖子、管理员、系统参数这6个对象,所以就要针对这6个对象划分功能模块。
(1) 用户:有两个模块,一个是用户注册、登陆、修改信息等功能组合,是用户对自身的操作;另一个是管理人员对用户进行删除、授权的操作;如表2-1。
表2-1 用户功能模块列表
模块 |
模块包含的功能 |
用户模块 |
用户注册 |
用户登陆 |
|
浏览其他用户信息 |
|
与其他用户联系 |
|
用户控制自己的信息 |
|
用户登陆添加验证码 |
|
用户等级 |
|
管理人员模块 |
用户删除 |
用户授权 |
(2) 版面:有两个模块,一个是浏览模块,一个是管理模块。如表2-2。
表2-2 版块功能模块列表
模块 |
模块包含的功能 |
版面浏览模块 |
浏览版面 |
版面管理模块 |
版面管理 |
(3) 公共信息:将用户发布和浏览公共信息的功能划分为一个模块,对象是用户对公共信息的操作;管理员对公共信息的操作划分为另一个模块。如表2-3。
表2-3 公共信息功能模块列表
模块 |
模块包含的功能 |
公共信息显示模块 |
浏览、发布公共信息 |
公共信息管理模块 |
公共信息管理 |
(4) 帖子:帖子是网站客户服务的基本,其功能是最多最复杂的,但仍然可以分为两个模块,根据操作对象来区分。如表2-4。
表2-4 帖子功能模块列表
模块 |
模块包含的功能 |
帖子模块 |
浏览帖子 |
发布、修改、删除帖子 |
|
对帖子特殊操作 |
|
帖子评价 |
|
帖子发布增加多媒体 |
|
帖子类别多样化 |
|
帖子移动(单个) |
|
帖子收藏 |
|
帖子搜索 |
|
帖子管理模块 |
帖子管理 |
帖子移动(批量) |
(5) 管理员:管理员主要是对其他对象进行操作,是对其他模块的操作人员,同时系统参数设置模块的功能也可以划分进来。如表2-5。
表2-5 管理员管理功能模块列表
模块 |
模块包含的功能 |
管理员管理模块 |
设置系统参数 |
数据备份 |
|
非法言论过滤 |
|
非法IP限制 |
通过以上分析,网站客户服务的模块划分也就完成了。但如果要把整个网站客户服务系统完整的架构出来,还要分析模块与模块之间的关系,把零散的功能模块用一条主线串联起来。对于网站客户服务系统来说,联系各个模块的主线是使用者的权限,用户能使用网站客户服务的哪些功能是由用户的权限决定的,网站客户服务的每个功能都与相应的权限对应。同一类用户使用的功能模块。是以使用者为中心连接起来的。另外,操作同一类事物的功能模块,也是相互关系的。
浏览模块与发帖回帖模块、管理帖子模块关联,是由网站客户服务的系统流程决定的;管理版块模块与浏览模块关联,是有帖子与版块的父子关系决定的,帖子依附与版块,先有版块后有帖子,帖子必须发表在某个版块中;管理用户模块与注册登陆模块关联,是由同一类对象用户决定的,注册后获得网站客户服务的身份,成为用户,所有的用户需要接受管理员的管理,用户登陆证明自己在网站客户服务中的身份。分析了这些关系,我们可以得到网站客户服务系统的整体架构,如图2-1。
图2-1 网站客户服务整体架构图
对于用户使用的模块成为前台模块,管理员使用的模块称为后台模块。其划分如图2-2。
图2-2 功能模块划分
2.2 数据库设计
网站客户服务系统信息的储存一般是在文件或者数据库中,相比之下数据库要简单高效,能对网站客户服务进行更好的控制,也能对资料提供一些严正和保护。所以目前流行的网站客户服务都是使用的数据库系统。使用数据库的首先就是要设计数据库的表结构,一个设计良好的数据库结构可以提高效率、方便维护,而且对于可能的扩充也会留有余地。
- 需要建立的数据表
为了更方便操作和维护,建立的数据表名都使用相关含义的因为单词,为了区别于数据库中可能出现的其他非表内容,在给每个表名加上一个标识。根据对网站客户服务功能的分析,可以建立16个数据表,如表2-6。
表2-6 网站客户服务数据表
序号 |
表名 |
说明 |
1 |
Admin_T |
管理员信息表 |
2 |
Bbs1_1 |
帖子信息表 |
3 |
BbsNews_1 |
公共信息表 |
4 |
Board_T |
版面信息表 |
5 |
BookMark_T |
收藏夹信息表 |
6 |
Friend_T |
用户好友列表 |
7 |
Help_T |
帮助信息表 |
8 |
Log_T |
网站客户服务日志表 |
9 |
Message_T |
短消息信息表 |
10 |
Online_T |
在线用户表 |
11 |
Setup_T |
系统信息表 |
12 |
Topic_T |
网站客户服务主题信息表 |
13 |
Upfile_T |
文件上传表 |
14 |
User_T |
用户信息表 |
15 |
Vote_T |
投票信息表 |
16 |
VoteUser_T |
投票用户表 |
有些表是可以独立的,但大多数表都是存在关联的。其关联一般都是通过主线用户相关联,或者是用户ID,或者是用户的其他信息。所以也可以看到主线用户的列表是相关数据项目最多的。
- 数据库表结构的详细设计
首先是用户信息表,用户信息是相关信息最多的表。如表2-7。
表2-7 用户信息表(User_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
UserID |
COUNTER |
用户编号 |
Key |
2 |
UserName |
VARCHAR(50) |
用户名 |
Not null |
3 |
UserPassword |
VARCHAR(20) |
密码 |
Not null |
4 |
UserEmail |
VARCHAR(255) |
电子邮件 |
Not null |
5 |
UserPost |
INTEGER |
发帖数 |
|
6 |
UserTopic |
INTEGER |
发布主题数 |
|
7 |
UserSign |
VARCHAR(255) |
用户签名 |
|
8 |
UserSex |
BYTE |
性别 |
|
9 |
UserFace |
VARCHAR(255) |
头像 |
|
10 |
UserWidth |
INTEGER |
头像宽 |
|
11 |
UserHeight |
INTEGER |
头像高 |
|
12 |
JoinDate |
DATETIME |
注册时间 |
Not null |
13 |
LastLogin |
DATETIME |
最后登陆时间 |
|
14 |
UserLogins |
INTEGER |
登陆次数 |
Not null |
15 |
UserViews |
INTEGER |
信息被浏览次数 |
|
16 |
UserClass |
VARCHAR(20) |
用户级别 |
|
17 |
UserWealth |
INTEGER |
现金货币 |
|
18 |
UserEP |
INTEGER |
经验值 |
|
19 |
UserCP |
INTEGER |
魅力值 |
|
20 |
UserPower |
INTEGER |
威望值 |
|
21 |
UserDel |
INTEGER |
被删主题数 |
|
22 |
UserIsBest |
INTEGER |
精华帖子 |
|
23 |
UserTitle |
VARCHAR(50) |
头衔 |
|
24 |
UserBirthday |
VARCHAR(50) |
生日 |
|
续表2-7
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
25 |
UserQuestion |
VARCHAR(50) |
密码问题 |
Not null |
26 |
UserAnswer |
VARCHAR(50) |
密码答案 |
Not null |
27 |
UserLastIP |
VARCHAR(30) |
最后登陆IP |
|
28 |
UserPhoto |
VARCHAR(255) |
用户照片 |
|
29 |
UserFav |
VARCHAR(255) |
用户好友分组 |
|
30 |
UserInfo |
LONGCHAR |
用户其他信息 |
|
31 |
UserSetting |
VARCHAR(255) |
用户设置 |
|
32 |
TitlePic |
VARCHAR(50) |
标题图片 |
|
33 |
UserHidden |
BYTE |
是否隐身 |
Not null |
34 |
UserMsg |
VARCHAR(30) |
用户消息 |
|
35 |
UserTaday |
VARCHAR(250) |
今日信息 |
|
在用户信息表里保存的是所有在网站客户服务注册的用户的信息,用户编号是用户在网站客户服务中的唯一标识。其实用户名也是不可重复的,但是使用编号作为主键可以让查找起来更加方便,提高效率,而且编号也是与其他表关联的主要字段。密码和密码答案是在用户忘记密码时验证身份的保证,所以设置为不能为空。用户名和密码是登陆的唯一识别,邮件是为了方便联系和某些可能的服务需要,所以也设置为非空。
表2-8是网站客户服务中的版面信息表。
表2-8 版面信息表(Board_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
BoardID |
INTEGER |
版面编号 |
Key |
2 |
BoardType |
VARCHAR(50) |
版面名称 |
|
3 |
ParentID |
INTEGER |
上级版面编号 |
Default 0 |
4 |
ParentStr |
VARCHAR(250) |
上级版面名称 |
|
5 |
Depth |
SMALLINT |
版面层数 |
|
6 |
RootID |
INTEGER |
主版面编号 |
|
7 |
Child |
INTEGER |
子版面编号 |
|
8 |
Orders |
INTEGER |
显示顺序 |
|
续表2-8
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
9 |
Readme |
VARCHAR(255) |
介绍 |
|
10 |
BoardMaster |
VARCHAR(100) |
版主 |
|
11 |
PostNum |
INTEGER |
发帖数量 |
|
12 |
TopicNum |
INTEGER |
主题数量 |
|
13 |
IndexIMG |
VARCHAR(255) |
网站客户服务图象 |
|
14 |
TadayNum |
INTEGER |
今日发帖数 |
|
15 |
BoardUser |
VARCHAR(255) |
状态 |
|
16 |
LastPost |
LONGCHAR |
最后一帖 |
|
17 |
Sid |
INTEGER |
签名标识 |
|
18 |
Board_Setting |
LONGCHAR |
版面设置 |
|
19 |
Board_User |
VARCHAR(250) |
版面用户 |
|
20 |
BoardTopStr |
VARCHAR(255) |
置顶主题信息 |
|
版面信息表中依然是使用了版面编号做主键,一般都会用编号作为主键,这样效率要更高些。上级版面编号是为了方便分层次找到各级版面。发帖数量、主题数量是指本版面的所有发帖数量和主题数量,而上级版面的数量是包括下级版面的所有发帖数量和主题数量的,今日发帖数和最后一帖的规则也相同。版面置顶主题信息所包含的是该版面置顶的主题的编号。与版面相关最密切的是帖子和主题,表2-9是网站客户服务的主题信息表。
表2-9 网站客户服务主题信息表(Topic_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
TopicID |
COUNTER |
主题编号 |
Key |
2 |
Title |
VARCHAR(250) |
标题 |
Not null |
3 |
BoardID |
INTEGER |
版面编号 |
|
4 |
PollID |
INTEGER |
投票表编号 |
|
5 |
LockTopic |
INTEGER |
是否锁定 |
|
6 |
Child |
INTEGER |
回复数量 |
|
7 |
PostUserName |
VARCHAR(50) |
发帖用户名 |
|
8 |
PostUserID |
INTEGER |
发帖用户编号 |
|
续表2-9
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
9 |
DateAndTime |
DATETIME |
发帖时间 |
|
10 |
Hits |
INTEGER |
点击数 |
|
11 |
Expression |
VARCHAR(20) |
状态 |
|
12 |
VoteTotal |
INTEGER |
投票总数 |
|
13 |
LastPost |
VARCHAR(250) |
最后一帖 |
|
14 |
PostTable |
VARCHAR(8) |
发帖内容表 |
|
15 |
Istop |
BYTE |
是否置顶 |
|
16 |
LastPostTime |
DATETIME |
最后发帖时间 |
|
17 |
Isbest |
BYTE |
是否精华 |
|
18 |
Isvote |
BYTE |
是否投票 |
|
19 |
TopicMode |
BYTE |
主题模式 |
|
20 |
Mode |
INTEGER |
模式 |
|
表2-10是帖子信息表。
表2-10 帖子信息表(Bbs1_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
AnnounceID |
COUNTER |
帖子编号 |
Key |
2 |
ParentID |
INTEGER |
上级帖子编号 |
Not null |
3 |
BoardID |
INTEGER |
版面编号 |
Not null |
4 |
UserName |
VARCHAR(50) |
发帖用户名 |
Not null |
5 |
PostUserID |
INTEGER |
用户ID |
Not null |
6 |
Topic |
VARCHAR(255) |
标题 |
|
7 |
Body |
LONGCHAR |
帖子内容 |
|
8 |
DateAndTime |
DATETIME |
发帖时间 |
|
9 |
Lengh |
INTEGER |
内容长度 |
|
10 |
RootID |
INTEGER |
主题编号 |
|
11 |
Layer |
INTEGER |
层数 |
|
12 |
Order |
INTEGER |
排序号 |
|
续表2-10
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
13 |
Isbest |
BYTE |
是否精华 |
|
14 |
IP |
VARCHAR(40) |
发帖用户IP |
|
15 |
Expression |
VARCHAR(255) |
状态 |
|
16 |
LockTopic |
INTEGER |
主题锁定状态 |
|
17 |
Signflag |
BYTE |
签名标识 |
|
18 |
Emailflag |
BYTE |
电子邮件标识 |
|
19 |
Isagree |
VARCHAR(250) |
评价 |
|
20 |
Isuoload |
BYTE |
是否有附件 |
|
21 |
Isaudit |
BYTE |
是否有音频 |
|
22 |
PostBuyUser |
LONGCHAR |
购买此帖的人 |
|
23 |
Ubblist |
VARCHAR(250) |
UBB标识使用编号 |
|
表2-11是投票信息表。
表2-11 投票信息表(Vote_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
VoteID |
COUNTER |
投票编号 |
Key |
2 |
Vote |
LONGCHAR |
投票内容 |
|
3 |
VoteNum |
LONGCHAR |
每项投票的数量 |
|
4 |
VoteType |
INTEGER |
投票类型 |
|
5 |
LockVote |
INTEGER |
锁定投票 |
|
6 |
Votes |
INTEGER |
投票人数 |
|
7 |
TimeOut |
DATETIME |
截止时间 |
|
8 |
UArticle |
INTEGER |
用户文章 |
|
9 |
UWealth |
INTEGER |
现金货币 |
|
10 |
UEP |
INTEGER |
经验值 |
|
11 |
UCP |
INTEGER |
魅力值 |
|
12 |
UPower |
INTEGER |
威望值 |
|
表2-12是投票用户表。
表2-12 投票用户表(VoteUser_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
ID |
COUNTER |
编号 |
Key |
2 |
VoteID |
INTEGER |
投票编号 |
|
3 |
UserID |
INTEGER |
用户编号 |
|
4 |
VoteDate |
DATETIME |
投票日期 |
|
5 |
VoteOption |
VARCHAR(50) |
投票选项 |
|
以上4个表是紧密关联的。为什么单独建立主题信息表而不把主题当成帖子的特例来筛选,是因为主题会有很多回复,而在网站客户服务帖子搜索时如果搜索要过滤一次帖子将会速度很慢,而且用户浏览主题时也不必要看到帖子的全部内容。表2-9里用到了4个外键,如果在其他表中该字段没有的数据,在主题信息表中也是不能有的。发帖用户名和发帖用户编号来源于用户信息表,可以算是数据冗余,是在查询用户发帖时具有更高的效率。
表2-10也包含了4个外键,其中主题编号是用来关联主题信息表的。层数记录的是该帖子是主帖还是从帖,排序数是对同一层次的帖子进行排序的。签名标识和电子邮件标识是记录用户是否在此帖中开放自己的签名和电子邮件。
表2-11记录了投票类帖子的投票部分的内容。由于投票内容和帖子信息不一样,所以单独建立一张表。后面几个U开头的字段是限制字段,可以对于投票的用户做一些资格上的限制,防止新用户反复注册投票。
表2-12记载了没个投票用户的投票情况。投票编号和用户编号都是外键。投票选项字段和表2-11中的投票内容字段想关联。
接着设计管理员信息表,如表2-13,记载了管理员的信息。
表2-13 管理员信息表(Admin_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
ID |
COUNTER |
管理员编号 |
Key |
2 |
Username |
VARCHAR(50) |
用户名 |
|
3 |
Password |
VARCHAR(50) |
用户密码 |
|
4 |
Flag |
Memo |
权限字段 |
|
5 |
LastLogin |
DATETIME |
投最后登陆时间 |
|
续表2-13
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
6 |
LastLoginIP |
VARCHAR(50) |
最后登陆IP地址 |
Key |
7 |
Adduser |
VARCHAR(50) |
用户信息表中的用户名 |
|
管理员信息表和用户信息表是有关联的,外键是用户信息表里的用户名,所以网站客户服务的管理人员也是网站客户服务的注册用户。这样可以让管理人员在修改网站客户服务参数后可以很直观的看到修改后的状态。
公共信息表记载的是网站客户服务中发布的公共信息,与版面等信息是关联的。如表2-14。
表2-14 公共信息表(BbsNews_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
ID |
COUNTER |
编号 |
Key |
2 |
BoardID |
INTEGER |
版面编号 |
|
3 |
Title |
VARCHAR(50) |
标题 |
|
4 |
Content |
LONGCHAR |
内容 |
|
5 |
Username |
VARCHAR(50) |
发布用户名 |
|
6 |
Addtime |
DATETIME |
发布时间 |
|
7 |
Bgs |
VARCHAR(100) |
背景音乐 |
|
表2-14中版面编号和发布用户名是外键,但版面编号可以为0,表示是在网站客户服务首页发布的信息。背景音乐是让大家读枯燥的公告时有亲切感,不至于觉得无聊。
收藏夹信息表是针对用户的一个信息表,如表2-15。
表2-15 收藏夹信息表(BookMark_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
ID |
COUNTER |
编号 |
Key |
2 |
Username |
VARCHAR(50) |
用户名 |
|
3 |
url |
VARCHAR(100) |
收藏的网页地址 |
|
4 |
Topic |
VARCHAR(100) |
帖子的主题 |
|
5 |
Addtime |
DATETIME |
添加时间 |
|
收藏夹是为了给用户带来方便的,这里收藏的是网页的地址,其实也可以做成收藏主题的编号,但因为可能收藏版面等容易编号混乱。
短消息信息表记录用户之间的短消息,见表2-16。
表2-16 短消息信息表(Message_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
ID |
COUNTER |
编号 |
Key |
2 |
Sender |
VARCHAR(50) |
发送者 |
|
3 |
Incept |
VARCHAR(50) |
接受者 |
|
4 |
Title |
VARCHAR(100) |
标题 |
|
5 |
Content |
LONGCHAR |
内容 |
|
6 |
Flag |
INTEGER |
阅读标记 |
|
7 |
SendTime |
DATETIME |
发送时间 |
|
8 |
DelR |
INTEGER |
接受者删除标识 |
|
9 |
DelS |
INTEGER |
发送者删除标识 |
|
10 |
IsSend |
INTEGER |
已发送标识 |
|
短消息是用户之间私下交流的内容,所以必须保留两者之间的信息。发送和接收者都是用户信息表关联的外键。删除标识设置两个是防止一方删除操作后另一方看不到的情况。
用户的好友信息表见表2-17。
表2-17 用户好友列表(Friend_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
F_ID |
COUNTER |
好友编号 |
Key |
2 |
F_username |
VARCHAR(50) |
用户名 |
|
3 |
F_friend |
VARCHAR(50) |
好友用户名 |
|
4 |
F_Addtime |
DATETIME |
添加时间 |
|
5 |
F_mod |
BYTE |
好友类型 |
|
6 |
F_userID |
INTEGER |
用户编号 |
|
用户好友列表是用户用来相互交流的,是网站客户服务感觉更人性化。记录好友用户名是因为用户往往记得这个好友名字却不记得编号,所以这里用用户名做记录而不是编号。
在线用户表是显示即时在先的用户,可以方便用户见看到在线情况而更及时的交流。如表2-18。
表2-18 在线用户表(Online_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
ID |
DOUBLE |
编号 |
Key |
2 |
Username |
VARCHAR(50) |
用户名 |
|
3 |
Userclass |
VARCHAR(20) |
用户类型 |
|
4 |
Stats |
VARCHAR(250) |
用户状态 |
|
5 |
IP |
VARCHAR(40) |
当前IP |
|
6 |
Actforip |
VARCHAR(40) |
IP来源 |
|
7 |
Startime |
DATETIME |
开始时间 |
|
8 |
Lastimebk |
DATETIME |
最后操作时间 |
|
9 |
BoardID |
INTEGER |
版面编号 |
|
10 |
Browser |
VARCHAR(250) |
浏览器类型 |
|
11 |
ActCome |
VARCHAR(50) |
来源 |
|
12 |
UserID |
INTEGER |
用户编号 |
|
13 |
Userhidden |
INTEGER |
是否隐身 |
|
这里的主键是DOUBLE类型,是因为用户的活动很多,数据量存在溢出的可能。用户名、编号和类型都是来自用户信息表的外键。浏览器类型记录了浏览器和操作系统的类型。
文件上传表是帖子表的一个附表,它记录了在帖子中的附件等信息,见表2-19。
表2-19 用户信息表(User_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
F_ID |
COUNTER |
编号 |
Key |
2 |
F_AnnounceID |
VARCHAR(50) |
帖子编号 |
|
3 |
F_BoardID |
INTEGER |
版面编号 |
|
4 |
F_UserID |
INTEGER |
用户编号 |
|
5 |
F_Username |
VARCHAR(50) |
用户名 |
|
6 |
F_Filename |
VARCHAR(250) |
文件名 |
|
7 |
F_FileType |
VARCHAR(10) |
文件类型 |
|
8 |
F_Type |
SMALLINT |
文件类型编号 |
|
续表2-19
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
9 |
F_FileSize |
INTEGER |
文件大小 |
|
10 |
F_Readme |
VARCHAR(250) |
文件说明 |
|
11 |
F_Download |
INTEGER |
下载次数 |
|
12 |
F_ViewNum |
INTEGER |
浏览次数 |
|
13 |
F_DownUser |
LONGCHAR |
下载用户 |
|
14 |
F_Flag |
SMALLINT |
文件标识 |
|
15 |
F_AddTime |
DATETIME |
添加日期 |
|
16 |
F_Viewname |
VARCHAR(255) |
显示名称 |
|
文件上传表记录了用户上传附件的内容。用户名、用户编号、版面编号等都是外键。文件名字段由于用户上传的文件可能同名,所以采取系统自动命名的方式,缺点是如果同一个文件分包上传,则下载后需要重新命名后才能恢复原文件。文件类型是文件真正的类型,而类型编号是网站客户服务文件类型,表示下载与显示。
帮助信息表是很重要的表,是用来介绍整个网站客户服务的使用的,见表2-20。
表2-20 帮助信息表(Help_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
H_ID |
COUNTER |
帮助编号 |
Key |
2 |
H_ParentID |
INTEGER |
上级编号 |
|
3 |
H_Title |
VARCHAR(250) |
标题 |
|
4 |
H_Content |
LONGCHAR |
内容 |
|
5 |
H_Type |
BYTE |
类型 |
|
6 |
H_Stype |
INTEGER |
后台类型 |
|
7 |
H_begimg |
VARCHAR(100) |
背景图片 |
|
8 |
H_Addtime |
DATETIME |
添加时间 |
|
帮助信息表是个独立的表,帮助信息对于网站客户服务是很重要的,帮助文件写得好,用户就会上手快,网站客户服务就会更有亲切感。虽然现在的网络用户对网站客户服务都并不陌生,但良好的帮助文件依然可以体现出网站客户服务在设置上的到位。因为帮助文件分用户和管理员的,所有添加一个后台类型来区别帮助文件的显示位置。
网站客户服务日志表是用来记录网站客户服务行为的,一旦网站客户服务出现了问题,可以通过这个表来跟踪一些活动,分析出问题的所在。见表2-21。
表2-21 网站客户服务日志表(Log_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
L_ID |
COUNTER |
日志编号 |
Key |
2 |
L_AnnounceID |
INTEGER |
帖子编号 |
|
3 |
L_BoardID |
INTEGER |
版面编号 |
|
4 |
L_Touser |
VARCHAR(50) |
访问页面 |
|
5 |
L_Username |
VARCHAR(50) |
访问用户名 |
|
6 |
L_Content |
VARCHAR(255) |
日志内容 |
|
7 |
L_AddTime |
DATETIME |
添加时间 |
|
8 |
L_IP |
VARCHAR(50) |
用户IP |
|
9 |
L_Type |
BYTE |
日志类型 |
|
为了保证日志记录信息的详实,因此日志表需要设计得很全面。帖子编号和版面编号是外键,记录了网站客户服务中对帖子信息进行操作的信息,当非帖子操作时,这两个字段不是必须的。
系统信息表关系到整个网站客户服务是否可以正常运行,是核心表,见表2-22。
表2-22 系统信息表(Setup_T)
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
1 |
ID |
COUNTER |
编号 |
Key |
2 |
Forum_Setting |
LONGCHAR |
网站客户服务设置 |
|
3 |
Forum_Ads |
LONGCHAR |
网站客户服务广告 |
|
4 |
Forum_Badwords |
LONGCHAR |
过滤词 |
|
5 |
Forum_rBadword |
LONGCHAR |
注册过滤词 |
|
6 |
Forum_Maxonline |
INTEGER |
最多在线人数 |
|
7 |
Forum_MaxonlineDate |
DATETIME |
最多在线日期 |
|
8 |
Forum_TopicNum |
INTEGER |
单页主题数 |
|
9 |
Forum_PostNum |
INTEGER |
单页帖子数 |
|
10 |
Forum_TodayNum |
INTEGER |
今日发帖数 |
|
续表2-22
序 号 |
字 段 名 |
字段类型 |
说 明 |
备 注 |
11 |
Forum_UserNum |
INTEGER |
网站客户服务用户数 |
|
12 |
Forum_YesterdayNum |
INTEGER |
昨日发帖数 |
|
13 |
Forum_MaxPostNum |
INTEGER |
最大发帖数 |
|