摘 要
Java论坛管理系统主要是实现在网上进行交流和学习Java语言,本论坛提供用户注册、发帖和回帖等论坛的基本功能,划分J2SE、J2EE、J2ME和开发工具的使用等版块,使用合理的管理方法管理论坛,严格保证帖子质量,为Java爱好者提供一个学习Java的好地方。本系统采用SQL2000作为后台数据库,使用MVC框架,由Servlet负责处理最初的请求转发到jsp页面显示最后的结果,JSP页面使用bean,系统具有很好的移植性和跨平台性。
关键字:Java论坛;管理;MVC;
目录
1 引言
随着互联网的发展,网上学习和交流已成为现代人的一种时尚,论坛是提供这种环境中的重要的部分。但是多数论坛十分繁杂,管理不规范,帖子混杂,很难满足用户的需要。 本次课程设计的题目为Java论坛管理系统,实现了论坛的基本功能即用户的注册、用户发帖回帖、管理员管理论坛等,主要任务是完成详细的数据库的设计,为以后完整系统的设计打下坚实的基础,其它论坛扩展功能以后在实现。本次数据库设计重视数据库理论知识的学习和数据库系统的设计,对数据库的学习有中要的意义。
2 数据库设计
2.1.1需求设计
1、引言
目前Java语言比较流行,学习Java的人群也特别的多。Java语言需要学习的内容非常多,而且Java语言也是一个不断变化的语言和完善的语言,要比较系统的学习Java,传统的一个人学习方式很难学好Java,上网学习和交流能比较好的解决此问题。目前的论坛比较多,但比较的繁杂,大多论坛没有规范的帖子管理,对学习Java没有多大的帮助。开发一个Java论坛管理系统就是要改变传统的学习方法和解决许多论坛管理不规范的问题。本论坛只讨论Java技术,严格保证帖子的质量和安全问题,提供Java爱好者一个良好和舒适的交流平台。本论坛具有很好的教育价值,同时具有很好的可重用性,稍加改变就能作为其它的论坛。如今论坛是Internet中比较受欢迎的技术,是大多数网站不可缺少的一部分,所以论坛对网站的开发也非常有价值。
2、目标与任务
目标:
通过需求分析,充分了解用户需求,明确系统的业务流程和系统的功能,完成数据流图和数据字典等内容,为以后整个系统设计提供依据。
任务:
■处理对象:
用户信息:(用户名,密码,邮箱,用户等级,发帖数,回帖数,是否删除)
帖子信息:(帖子id,版面id号,主题,内容,帖子等级,帖子被访问次数,所属版面,发帖时间,发帖用户)
版面信息(版面id号,版面名称,版主名称,版面主题数)
版主信息(版主名称,密码,邮箱)
管理员信息(管理员名,密码,邮箱)
■处理功能要求:
- 用户注册登录功能模块(用户注册以及修改注册信息)
- 浏览功能模块(用户浏览版块、主题列表、查看帖子)
- 帖子管理功能模块(管理员编辑、删除、置顶和指定精华帖)
- 管理版块功能模块(管理员创建、修改和删除版块)
- 用户管理模块(管理员添加、删除和设置用户权限)
■安全性和完整性要求:
安全性:
论坛管理系统是提供一个交流平台,安全问题主要是防止黑客的攻击,数据库需要运行在防火墙后面。要防止非法用户访问数据库,对数据库进行修改,管理员需要进行合理的用户权限设置。
- 论坛的用户分4个级别:匿名用户、普通用户、版主和系统管理员
- 用户在未登录前只能浏览论坛中的帖子,已登录的用户可以在已有的版块发布新主题和回复帖子。
- 论坛为每个注册的用户建立个人资料,用户本人可以修改个人资料。
- 版主除有普通用户的权限外,还可以对版面进行管理:删除、推荐、锁定帖子、解除推荐、解除锁定。
- 论坛管理员除有版主的权限外,还可以添加、删除版块,对论坛中所有版块的属性进行编辑,对用户的所有资料进行修改和删除用户。
论坛权限如下表1:
对象实体 | 功能方法 | 用户类型 |
版块 | 浏览列表 | 注册用户 |
版块 | 创建版块 | 管理员 |
版块 | 修改版块 | 管理员 |
版块 | 删除版块 | 管理员 |
帖子 | 浏览列表 | 注册用户 |
帖子 | 发帖 | 注册用户 |
帖子 | 回帖 | 注册用户 |
帖子 | 搜集 | 注册用户 |
帖子 | 编辑(自己所有) | 注册用户 |
帖子 | 编辑(全部) | 管理员 |
帖子 | 删除 | 管理员 |
帖子 | 置顶 | 管理员 |
帖子 | 指定精华 | 管理员 |
用户 | 注册 | 注册用户 |
用户 | 注册用户登录 | 注册用户 |
用户 | 管理员登录 | 管理员 |
用户 | 删除 | 管理员 |
用户 | 指定权限 | 管理员 |
实体完整性:
用户信息:用户必须唯一步能为空,密码不能为空,邮箱可以为空,用户等级、发帖和回帖由系统设置,是否删除由管理员设置。
帖子信息:帖子的id号不能为空,帖子主题不能为空,帖子内容不能为空,帖子等级、帖子被访问的次数和发帖时间由系统设置,所属版面不能为空,发帖用户由日志提供。
版面信息:版面id号唯一步能为空,版面名称唯一步能为空,版主不能为空
版主信息:(版主名称不能为空,密码不能为空,邮箱可以为空)
参考完整性:
版面信息中:版面参考版主信息表中的版主名,版主要么为空,要么和版主信息中的版主名相同。
自定义完整性:
帖子的主题长度不能超过400个字节,帖子的内容长度不能超过1000个字节。
3、阶段结果
(1)调查方式:
1、通过询问同学征询同学的意见
2、图书管查阅资料
3、上网了解一些论坛提供的功能
体会:需求分析需要耐心的多了解用户的要求,然后要学会分析和提取有用的材料
收获:听取了许多好的建议,对系统的整体构架有了清晰的认识。
(2)业务流程图
(3)数据图(DFD图)
(4)数据字典。(见附录)
2.1.2概念设计
2.1.2.1目标与任务
目标:将需求分析得到的用户需求抽象为信息结构,设计并生成E_R图。
任务:设计各个分E-R图,并消除局部E-R图存在的冲突,合并成基本E-R图
特点:
- 能真实的反映现实世界,包括事物和事物之间的联系,能满足用户对数据的处理要求。是对现实世界的一个真实模型。
- 易于理解,从而可以用它和不熟悉计算机的用户交换意见,用户的积极参与是数据库的设计成功的关键。
- 易于更改,当应用环境和应用要求改变是,容易对概念模型修改和扩充。
- 易于向关系、网状、层次等各种数据模型转换。
2.1.2.2概念模型设计
(1)设计分E-R图,即各子模块的E-R图;
用户(用户名,密码,邮箱,等级,发帖数,回帖数)
帖子(帖子id,主题,内容,帖子等级,帖子被访问次数)
发帖(发帖时间)
回帖(回帖id,帖子i d,内容,用户名,回帖时间)
用户(用户名,密码,邮箱,等级,发帖数,回帖数)
版面(版面id号,版面名称,版主名称,版面主题数)
浏览(浏览时间)
管理员信息(管理员名,密码,邮箱)
用户(用户名,密码,邮箱,等级,发帖数,回帖数)
管理(管理行为)
帖子信息:(帖子id,主题,内容,帖子等级,帖子被访问次数)
版面(版面id号,版面名称,版主名称,版面主题数)
从属(所属版面)
版主信息(版主名称,密码,邮箱)
帖子信息:(帖子id,主题,内容,帖子等级,帖子被访问次数)
管理(管理行为)
版面(版面id号,版面名称,版主名称,版面主题数)
管理员信息(管理员名,密码,邮箱)
管理(管理行为)
(2)生成全局E-R图,通过消除冲突等方面
2.1.3逻辑设计
2.1.3.1目标与任务
目标:完成E-R图到数据库模式的转换,优化各个关系模式
任务:把概念结构设计阶段好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。
2.1.3.2数据组织
(1)将E-R模型转换为关系模型 (描述转换的原则、转换的结果)。
如图1.7所示:
一、用户和帖子具有两个关系:
(1)用户回帖,因为用户和帖子的关系是m对n的关系,所以将联系类型也转换关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。
用户(用户名,密码,邮箱,用户等级,发帖数,回帖数,精华帖数,是否删除)
帖子(帖子id,主题,内容,帖子等级,帖子被访问次数)
回帖(回帖id,用户名,帖子i d,内容,回帖时间)
(2)用户发帖,用户和帖子的关系是1对多的关系。所以可以联系可以转换为一个独立的模式,也可以与n端对应的模式合并。这里把联系属性合并到n端实体。
用户(用户名,密码,邮箱,用户等级,发帖数,回帖数,精华帖数,是否删除)
帖子(帖子id,主题,内容,帖子等级,帖子被访问次数,发帖时间)
二、 管理员和用户的关系为m对n,所以将联系类型也转换关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。
用户(用户名,密码,邮箱,用户等级,发帖数,回帖数,精华帖数,是否删除)
管理员(管理员名,密码,邮箱)
管理(用户名,管理员名,管理)
三、版主和帖子为m对n的关系,所以将联系类型也转换关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。
版主(版主名称,密码,邮箱)
帖子(帖子id,版主名称,主题,内容,帖子等级,帖子被访问次数)
管理帖子(版主名称,帖子id ,管理行为)
四、管理员和版面是m对n的关系,所以可以转换为一个独立的模式
管理员(管理员名,密码,邮箱)
版面(版面id号,版面名称,版主名称,版面主题数)
管理(管理员名,版面id号,管理行为)
五、版面和用户是多对多的关系。所以将联系类型也转换关系模式,其属性为两端实体类型的键加上联系类型的属性,而键为两端实体键的组合。
版面(版面id号,版面名称,版主名称,版面主题数)
用户(用户名,密码,邮箱,用户等级,发帖数,回帖数,精华帖数,是否删除)
浏览(用户名,版面id号,浏览时间 )
六、版面和帖子是1对多的关系,所以把联系属性合并到n端实体
版面(版面id号,版面名称,版主名称,版面主题数)
帖子(帖子id,版面id号,主题,内容,帖子等级,帖子被访问次数,所属版面)
七、由E_R图转化后得到的关系模式
用户(用户名,密码,邮箱,用户等级,发帖数,回帖数,精华帖数,是否删除)
帖子(帖子id,主题,内容,帖子等级,帖子被访问次数)
帖子(帖子id,主题,内容,帖子等级,帖子被访问次数,发帖时间)
帖子(帖子id,版面id号,主题,内容,帖子等级,帖子被访问次数,所属版面)
回帖(用户名,帖子i d,内容,回帖时间)
管理员(管理员名称,密码,邮箱)
浏览(用户名,版面id号,浏览时间)
管理用户(用户名,管理员名,管理)
管理版面(管理员名称,版面id号,管理行为)
管理帖子(版主名称,帖子id ,管理行为)
版主(版主名称,密码,邮箱)
版面(版面id号,版面名称,版主名称,版面主题数)
八、消除不一致后得:
用户(用户名,密码,邮箱,用户等级,发帖数,回帖数,精华帖数,是否删除)
帖子(帖子id,版面id号,主题,内容,帖子等级,帖子被访问次数,发帖时间,发帖用户)
回帖(回帖id,帖子i d,用户名,内容,回帖时间,帖子等级)
管理员(管理员名称,密码,邮箱)
版主(版主名称,密码,邮箱,版主状态)
浏览(浏览id,用户名,版面id号,浏览时间)
管理用户(管理id,用户名,管理员名,管理行为)
管理版面(管理id,管理员名称,版面id号,管理行为)
管理帖子(管理id,版主名称,帖子id ,管理行为)
版面(版面id号,版面名称,版主名称,版面主题数,版面状态)
(2)模型优化
以上关系都达到了3NF,不需要在分解
(3)完成数据库模式定义,包括各模式的逻辑结构定义、关系的完整性和安全性等内容。
member(u_name,u_password,u_email,u_step,u_post,u_return,jinghucount,u_stat)
u_name为主键,不能为空,而且是唯一的,u_password也不能为空,其它由系统管理员设置。
topic(t_id ,bm_id ,t_theme,t_content,t_step t_count ,t_posttime, l_name )
t_id为主键,bm_id和,l_name为参考外键,都不能为空,t_theme,t_content都不能为空,t_step,t_count,t_posttime由系统设置
reply( r_id, t_id, l_name, r_conten, r_time, r_step)
r_id 为主键,t_id和l_name为参考外键,都不能为空,r_conten也不能为空,r_time, r_step由管理员和系统设置。
minister( m_name,_m_password ,m_email)
m_name为主键,m_name, m_password不能为空
banzhu( bzh_name ,bzh_password, bzh_state)
bzh_name为主键,bzh_password不能为空,bzh_state由管理员设置
browsing(l_id, bm_id ,u_name,l_time);
l_id为主键,bm_id和u_name为外键参考,都不能为空
mini_user( m_id ,m_name, u_name, dowhat);
m_id为主键,m_name和u_name为外键参考,都不能为空,dowhat由管理员设置
mini_topic( mt_id, bzh_name ,t_id, dowhat);
mt_id为主键,bzh_name和t_id为外键参考,都不能为空,dowhat由管理员设置
mini_banmian( mb_id , m_name, bm_id, dowhat );
mb_id为主键,m_name和bm_id为外键参考,都不能为空,dowhat由管理员设置
banmian(bm_id, bm_name, bzh_name, bm_themecount );
bm_id为主键,bm_name和bzh_name为外键参考,都不能为空
rizhi(l_name, l_time)
l_name为主键,不能为空,l_time由系统设置。
(4)设计用户子模式――视图设计,完成适合不同用户的子模式设计。
编号 | 模式 | 子模式 | 用户 | 作用 |
1 | 版面 | 版面视图 | 所有用户 | 查看包含的版块 |
2 | 帖子 | 主题列表视图1 | 所有用户 | 不同的用户选择不同的版块查看最新主题 |
主题列表视图2 | ||||
主题列表视图n | ||||
不合格帖子视图 | 版主 | 删除不合格的帖子 | ||
3 | 用户 | 用户视图 | 各自用户 | 查看各自资料,并进行修改 |
在线用户视图 | 注册用户 | 查看所有在线用户 | ||
黑名单视图 | 管理员 | 删除被列出的用户 | ||
4 | 版主 | 版主视图 | 管理员 | 查看版主信息 |
5 | 管理员 | 管理员视图 | 管理员 | 查看管理员信息 |
2.1.3.3数据处理方面
系统的功能模块图如下:
2.1.4物理设计
2.1.4目标与任务
目标:提供存储中数据的合适结构,而且要以合适的方式对性能提供保证。
任务:
一.确定数据库的物理结构
1.确定数据的存储结构
确定数据库存储结构时要综合考虑存取时间、存储空间利用率和维护代价三方面的因素。这三个方面常常是相互矛盾的,例如消除一切冗余数据虽然能够节约存储空间,但往往会导致检索代价的增加,因此必须进行权衡,选择一个折中方案。
2.设计数据的存取路径
在关系数据库中,选择存取路径主要是指确定如何建立索引。例如,应把哪些域作为次码建立次索引,建立单码索引还是组合索引,建立多少个为合适,是否建立聚集索引等。
3.确定数据的存放位置
为了提高系统性能,数据应该根据应用情况将易变部分与稳定部分、经常存取部分和存取频率较低部分分开存放。
4.确定系统配置
DBMS产品一般都提供了一些存储分配参数,供设计人员和DBA对数据库进行物理优化。初始情况下,系统都为这些变量赋予了合理的缺省值。但是这些值不一定适合每一种应用环境,在进行物理设计时,需要重新对这些变量赋值以改善系统的性能。
通常情况下,这些配置变量包括:同时使用数据库的用户数,同时打开的数据库对象数,使用的缓冲区长度、个数,时间片大小、数据库的大小,装填因子,锁的数目等等,这些参数值影响存取时间和存储空间的分配,在物理设计时就要根据应用环境确定这些参数值,以使系统性能最优。
在物理设计时对系统配置变量的调整只是初步的,在系统运行时还要根据系统实际运行情况做进一步的调整,以期切实改进系统性能。
二.评价物理结构
数据库物理设计过程中需要对时间效率、空间效率、维护代价和各种用户要求进行权衡,其结果可以产生多种方案,数据库设计人员必须对这些方案进行细致的评价,从中选择一个较优的方案作为数据库的物理结构。
评价物理数据库的方法完全依赖于所选用的DBMS,主要是从定量估算各种方案的存储空间、存取时间和维护代价入手,对估算结果进行权衡、比较,选择出一个较优的合理的物理结构。如果该结构不符合用户需求,则需要修改设计。
2.1.4.2数据存取方面
用户表以用户名建立唯一性索引,因为用户名是独一无二的。
帖子表以帖子id号建立唯一性索引
回帖表以帖子id号建聚簇索引,用于检索某个帖子用户的所有回复。
2.1.4.3功能模块
用户注册模块:
input message
check member table
if(u_name in member table)
out user is in the member ,change for other name
else
successful message put into membertable
用户登录模块:
input name and password
check member talbe
if(name=u_name&password!=u_password)
fault;
else
successful
管理帖子:
check topic table
if(topic is not normal) set topic t_step=-1or1or0
updateTopic
管理用户帖子、管理版面帖子类似管理帖子,这里省略
发送帖子:
input username check rizhi
if( usrname in rizhi)
input topic message and send out to topic table
else fault
回帖类似发帖(省略)
其它模块(省略)
2.1.5数据库实施
目标:完成数据库系统的建立,并使用存储过程完成数据库功能
任务:
(1)建立数据库、数据表、视图、索引等存储过程等DDL定义,并完成完整性、安全性等要求定义;可用DDL语言或SQL脚本任意一种形式表现。(见附录)
(2)数据入库
(3)完成处理过程、系统主要功能(查询、更新、简单统计等),均需要使用存储过程完成。
存储过程
编号 | 名称 | 作用 |
1 | ChangeMyInformateion | 可以用来更改用户的注册资料 |
2 | Denglu | 登录用户信息检测,并把用户名记录在日志里 |
3 | Jinghuatie | 用来检索精华帖 |
4 | LookBM | 列出所有的版面信息 |
5 | LookBZH | 查看版主信息 |
6 | MinisterBanzhu | 管理版主 |
7 | MinsterReply | 管理回复的帖子 |
8 | Ministerbanmian | 管理版面 |
9 | MinisterTopic | 管理帖子 |
10 | MinsterUser | 管理用户 |
11 | MyInformation | 查看用户自己的信息 |
12 | Myteme | 查看所有我发的主题 |
13 | OnlineUser | 查看在线用户 |
14 | Postreply | 回复帖子 |
15 | PostTopic | 发送帖子 |
16 | Peply_Content | 查看回复的信息 |
17 | Theme | 查看所有的主题 |
18 | Theme_Content | 查看主题的内容 |
19 | Updatetopic | 更新帖子 |
20 | Updateusers | 更新用户 |
21 | Updatereply | 更新回复的帖子 |
22 | userInformation | 所有用户的信息 |
23 | Zhuce | 注册用户 |
(存储过程见附录)
2.1.6数据库调试与试运行
(1)说明系统测试方法
本次测试主要使用黑盒测试的方法,即功能测试,输入测试数据,看输出的结果以意想的对不对
(2)测试内容,主要从功能测试和性能测试两个方面
存储过程的测试:
ChangeMyInformation 'jaclieren','565689','jacshan','565689','jaclieren@163.com'
DengLu 'dede','3232'
execute Reply_Content
execute Theme
declare @string varchar(1000)
execute Theme_Content @string output
select 'the Theme_Content is:',@string
execute MyInformation 'iiley'
postReply 15,2,'我觉得Servlet and jsp 核心编程还可以','jacshan'
postTopic '过年了,散分了,祝大家新年快乐',
'ha,ha!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!',
'jacshan',2
Zhuce 'jaclieren','565689','jacshan.163.com'
这是部分存储过程的测试,全部都正常完成,其它不在此一一列出,视图的测试也都正常运行,这里省略
3 收获与体会
本次实习主要是完成数据库的设计,对数据库的各阶段写出详细的说明文档。对我来说是一个挑战,因为我很少写过文档,以前写的任何一个程序都是单刀直入,从不写文档,也不画任何程序流程图。本次实习体会最深刻的就是需求分析,通过写需求分析文档,我深刻的体会到了需求分析在整个系统设计中的重要性即:要全面的进行需求分析,了解用户的需求,这样可以减少以后设计的困难,完成需求分析对整个系统的功能和构架就非常的清晰,需求不完善将影响以后的所以设计。也体会到了交流的重要性,通过交流可以发现自己在系统设计方面存在很多缺陷,交流不仅可以找出系统设计的不合理性,还可以减少需求分析的不确定性。在其它阶段的设计中对数据库中的模式有了新的认识,理解了三模式两映像的重要性。整个系统设计使我对数据库和软件工程有了新的认识,特别是对数据流图的概念的理解,对数据库的一些基本概念有了进一步的理解,也对数据库一些容易混淆的概念有了清晰的认识。特别是对SQL语句的使用更加熟练,对SQL2000的操作更加的熟悉。
除了对知识的学习外,也磨练了自己的意志,发现自己的许多不足,写文档是自己的一个弱点,以后会多练习加以提高。
4 存在问题与建议
问题
本次数据库设计基本完成,虽然在设计上可能有一些缺陷,但整个系统全部由自己设计,感觉很有成就感。在实习中也存在许多问题,对需求分析不明确,特别是对数据流图的含义没有理解,给设计带来了很多困难,可能现在的数据流图还存在问题。在系统的功能方面,由于有许多是由系统完成的,但对触发器的使用还不是很熟,有很多功能没有实现,还需要修改和改进。
建议
建议以后实习上机的时间少一点,先在纸上写好需求分析文档,并在课堂上多一点的讨论时间,再进机房实习,我想这样可能好一点。
附录
1.数据字典
回帖表:1.1
字段名称 | 类型 | 含义 |
H_id | smallInt | 回帖的id号,用于唯一标识回帖的信息 |
F_id | Smallint | 所回帖父帖子的id号 |
H_content | varChar | 回帖内容 |
H_name | VarChar | 回帖人的名称 |
H_time | Datetime | 回帖时间 |
H-_step | Int | 回帖等级,-1表示管理员可以删除此帖 |
用户表:1.2
字段名称 | 类型 | 含义 |
Name | Varchar | 用户登录的名字,不能有相同的用户名 |
Password | Varchar | 用户密码,登录进行身份验证 |
| varcharChar | 用户的联系方式 |
Step | smallint | 用户的等级,-1表示管理员可以删除此用户,其它用于标识用户的等级 |
S_count | smallInt | 发帖次数,用于计算用户的等级 |
R_count | smallint | 回帖次数,用于计算用户的等级 |
J_count | smallint | 发精华帖的数量,用于计算用户的等级 |
版面表:1.3
字段名称 | 类型 | 含义 |
Bm_id | varChar | 版面id号,用于和其他版面区别 |
Bm_name | varChar | 版面的名称 |
Bz_name | varChar | 版主 |
Bm_thcount | samllInt | 版面主题数 |
版主表:1.4
字段名称 | 类型 | 含义 |
Bz_name | varChar | 版主名称 |
Bz_parssword | varChar | 版主密码 |
Bz_email | varChar | 版主的邮箱 |
帖子表:1.5
字段名称 | 类型 | 含义 |
Id | smallInt | 发帖的id号 |
Theme | varChar | 发帖的主题 |
Content | varChar | 发帖的内容 |
Name | varChar | 发帖的用户 |
Step | smallInt | 帖子等级,当为-1时可删除,为1时为 精华帖,为0时需要置顶,其它为正常 |
Count | smallInt | 帖子被访问的次数 |
管理员表:1.6
字段名称 | 类型 | 含义 |
Ad_name | varChar | 管理员名称 |
Ad_parssword | varChar | 管理员密码 |
Ad_email | varChar | 管理员的邮箱 |
日志 表:1.7
字段名称 | 类型 | 含义 |
L_name | Varchar | 当日在线用户注册后都记录到日志里,用于跟踪用户 |
L_time | Char | 记录登录时间 |
2.存储过程:
create procedure ChangeMyInformation
@name varchar(20),
@password varchar(20),
@newname varchar(20),
@newpassword varchar(20),
@newemail varchar(20)
as
update member
set u_name=@newname,u_password=@newpassword,u_email=@newemail
where u_name=@name and u_password=@password
create procedure DengLu
@username varchar(20),
@userpassword varchar(20)
as
insert into Rizhi(l_name)
select u_name
from member
where u_name=@username and u_password=@userpassword
create procedure LookBanzhu
as
select * from banzhu
create procedure LookBmian
as
select * from banmian
create procedure MinsterReply
@name varchar(20),
@step smallint
as
update reply
set r_step=@step
where l_name=@name
create procedure MinsterTopic
@name varchar(20),
@step smallint
as
update topic
set t_step=@step
where l_name=@name
create procedure MinsterUser
@username varchar(20),
@state char(4)
as
update member
set u_state=@state
where u_name=@username
create procedure Minsterbanmian
@name varchar(20),
@state varchar(6)
as
update banmian
set bm_state=@state
where bm_name=@name
create procedure Minsterbanzhu
@name varchar(20),
@state varchar(6)
as
update banzhu
set bzh_state=@state
where bzh_name=@name
create procedure MyInformation
@Myname char(20)
as
select * from member
where u_name=@Myname
create procedure Mytheme
@Myname varchar(20)
as
select t_theme from topic
where l_name=@Myname
create procedure OnlineUser
@nowtime datetime
as
select l_name from rizhi
where l_time=@nowtime
create procedure Reply_Content
as
select *
from reply
create procedure Theme
as
select t_theme from topic
create procedure Theme_Content
@content varchar(1000) output
as
select t_content from topic
create procedure Zhuce
@username varchar(20),
@userpassword varchar(20),
@useremail varchar(20)
as
insert into member
values (@username,@userpassword,@useremail,3,0,0,'ture')
create procedure jinghuatie
as
select t_theme
from topic
where t_step=1
create procedure postReply
@r_id smallint,
@t_id smallint,
@content varchar(1000),
@name varchar(20)
as
insert into reply
values(@r_id,@t_id,@name,@content,'xitongshji',0)
create procedure postTopic
@Theme varchar(400),
@content varchar(1000),
@name varchar(20),
@banmian smallint
as
insert into topic
values(20,@banmian,@Theme,@content,0,0,'jacshan','2005-12-25',@name)
create procedure updatareply
as
delete
from reply
where r_step=-1
create procedure updatatopic
as
delete
from topic
where t_step=-1
create procedure updateusers
as
delete from member
where u_state='false'
create procedure userInformation
as
select * from member
3.基本表:
2.1日志表
CREATE TABLE [dbo].[Rizhi] (
[l_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[l_time] [datetime] NULL
) ON [PRIMARY]
GO
2.2版面表
CREATE TABLE [dbo].[banmian] (
[bm_id] [smallint] NOT NULL ,
[bm_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[bzh_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[bm_themecount] [smallint] NULL ,
[bm_state] [varchar] (6) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
2.3版主表
CREATE TABLE [dbo].[banzhu] (
[bzh_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[bzh_password] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[bzh_email] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[bzh_state] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2.4浏览表
CREATE TABLE [dbo].[browsing] (
[l_id] [smallint] NOT NULL ,
[bm_id] [smallint] NOT NULL ,
[u_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[bm_count] [smallint] NULL
) ON [PRIMARY]
GO
2.5用户表
CREATE TABLE [dbo].[member] (
[u_name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[u_password] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[u_email] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[u_step] [smallint] NULL ,
[u_post] [smallint] NULL ,
[u_return] [smallint] NULL ,
[u_state] [char] (4) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2.6版面表
CREATE TABLE [dbo].[mini_banmian] (
[mb_id] [smallint] NOT NULL ,
[m_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[bm_id] [smallint] NOT NULL ,
[dowhat] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2.7管理帖子表
CREATE TABLE [dbo].[mini_topic] (
[mt_id] [smallint] NOT NULL ,
[bzh_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[t_id] [smallint] NOT NULL ,
[dowhat] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2.8管理用户表
CREATE TABLE [dbo].[mini_user] (
[mu_id] [smallint] NOT NULL ,
[m_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[u_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[dowhat] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2.9管理员表
CREATE TABLE [dbo].[minister] (
[m_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[m_password] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[m_email] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO
2.10回复表
CREATE TABLE [dbo].[reply] (
[r_id] [smallint] NOT NULL ,
[t_id] [smallint] NOT NULL ,
[l_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[r_content] [varchar] (1000) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[r_time] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[r_step] [smallint] NULL
) ON [PRIMARY]
GO
2.11帖子表
CREATE TABLE [dbo].[topic] (
[t_id] [smallint] NOT NULL ,
[bm_id] [smallint] NOT NULL ,
[t_theme] [varchar] (400) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[t_content] [varchar] (1000) COLLATE Chinese_PRC_CI_AS NOT NULL ,
[t_step] [smallint] NULL ,
[t_count] [smallint] NULL ,
[t_bmname] [varchar] (20) COLLATE Chinese_PRC_CI_AS NULL ,
[t_posttime] [char] (10) COLLATE Chinese_PRC_CI_AS NULL ,
[l_name] [varchar] (20) COLLATE Chinese_PRC_CI_AS NOT NULL
) ON [PRIMARY]
GO
4.视图
create view HuiMingDan(username)
as select u_name
from member
where u_state='false'
create view J2EETheme(theme,f_time)
as select t_theme,t_posttime
from topic
where bm_id=1
create view J2MeTheme(theme,f_time)
as select t_theme,t_posttime
from topic
where bm_id=3
create view J2SETheme(theme,f_time)
as select t_theme,t_posttime
from topic
where bm_id=2
create view TomcatTheme(theme,f_time)
as select t_theme,t_posttime
from topic
where bm_id=4
5.参考资料
《数据库系统概论》 (第三版) 萨师煊 王珊 高等教育出版社