BBS论坛数据库设计

合集下载

BBS论坛系统数据库设计

BBS论坛系统数据库设计

BBS论坛系统数据库设计0.后台用户管理(TAB_USER)序号字段名称字段英文名数据类型长度PK(Y/N) NULL(Y/N) 备注1 自增ID id int Y N2 用户帐号usercode varchar 20 N 登录用3 姓名username varchar 20 N3 密码pwd varchar 11 N 用MD5加密算法4 性别ssex varchar 105 角色role int6 Email地址email varchar 301.前台用户注册表(TAB_USER_REGISTER)序号字段名称字段英文名数据类型长度PK(Y/N) NULL(Y/N) 备注1 自增ID id int Y N2 用户帐号usercode varchar 50 N 登录用3 姓名username varchar 50 N3 密码userpsw varchar 11 N 用MD5加密算法4 昵称nickname varchar 505 头像image6 Email地址email varchar 807 验证码checkno bigint 102.用户发帖表(TAB_USER_SENDCARD)序号字段名称字段英文名数据类型长度PK(Y/N) NULL(Y/N) 备注1 发帖ID sendcardid int Y N 自增2 发帖区ID sendzoneid int 参照发帖区3 用户帐号usercode varchar 304 主题title varchar 200 N5 发帖内容cardcontent varchar 10006 日期date date7 验证码checkno bigint发帖ID的值来判断级别。

3.用户跟帖表(TAB_USER_FOLLOWCARD)序号字段名称字段英文名数据类型长度PK(Y/N) NULL(Y/N) 备注1 跟帖ID followcardid int Y N 自增2 讨论区ID discussid int 参照推荐讨论区ID和技术讨论区ID3 用户帐号usercode varchar 304 发帖ID sendcardid int 参照发帖表sendcardID(1:n)5 跟帖内容followcardcontent varchar 10006 日期date date7 验证码checkno4.公告管理表(TAB_NOTICEMANAGE )序号字段名称字段英文名数据类型长度PK(Y/N) NULL(Y/N) 备注1 公告ID noticeid int Y N 自增2 公告时间noticetime date3 公告内容content varchar 200 N4 作者author varchar 505 备注remark varchar 1005.推荐讨论区表(TAB_RECOMMANDMANAGE)长度PK(Y/N) NULL(Y/N) 备注序号字段名称字段英文名数据类型1 自增ID id int Y N 自增2 推荐讨论区号ID recommandid int Y N3 推荐主题号recomcontentid int4 推荐主题content varch100 Nardate5 推荐主题时间recommandInftime506 作者author varchar7 备注remark varch100ar6.技术交流区表(TAB_TECHENIQUEMANAGE )序号字段名称字段英文名数据类型长度PK(Y/N) NULL(Y/N) 备注1 自增ID id int Y N 自增techeniqueid int Y N2 技术讨论区号ID2 发稿时间techeniqueInftime datecontent varchar 100 N3 技术交流主题4 作者author varchar 505 备注remark varchar 1007.文章阅读区表(TAB_ARTICLEMANAGE)序号字段名称字段英文名数据类型长度PK(Y/N) NULL(Y/N) 备注1 文章ID articleid int Y N 自增2 文章主题articletitle varchar 2003 文章内容articlecontent varchar 1000 N4 作者author varchar 505 备注remark varchar 1008.发帖主题审核表(TAB_SENDAUDITING)序号字段名称字段英文名数据类型长度PK(Y/N) NULL(Y/N) 备注1 自增ID articleid int Y N 自增2 发帖ID sendcardid int 203 审批状态auditingstatus varchar 20 N 通过审批/取消4 排序状态compositor varchar 10 置顶/一般通过审批用1表示,取消用0表示。

BBS论坛数据库设计代码

BBS论坛数据库设计代码

BBS论坛数据库设计代码use mastergo----------------------------------------新建数据bbsDB的库---------------------------------------------------------判断数据库是否存在使用exists关键字,在用sysdatabases关键字查询--if exists(select * from sysdatabases where name = 'bbsDB')--如果数据库存在就删除此数据库用drop(删除)database(数据库对象)bbsDB (数据库名)--drop database bbsDB--删除后在添加一个数据库create(添加)database(数据库对象)bbsDB(数据库名)on--create database bbsDBon(name = 'bbsDB_MDF', --数据库主文件名--filename = 'F:\SQL\第四阶段\bbsDB_MDF.mdf', --数据库存储的路径--size = 10mb, --数据库初使大小--filegrowth = 10% --增长变化--)--设置日志文件--log on(name = 'bbsDB_LDF', --日志文件名--filename = 'F:\SQL\第四阶段\bbsDB_LDF.ldf', --日志文件存储路径--size = 1mb, --日志文件初使大小--maxsize = 20mb, --日志文件最大的可储存--filegrowth = 10% --增长变化--)go---------------------------------------以上信息为新建的数据库-------------------------------------------------use bbsDBgo---------------------------------------新建bbsUsers表(用户表)---------------------------------------------------判断bbsDB库是否有表bbsUser的存在exists关键字+sysobjects判断当前数据库表--if exists(select * from sysobjects where name='bbsUsers')--如果表存在就删除此表--drop table bbsUser--新建bbsUser表--create table bbsUsers(UID int identity(1,1) not null, --用户编号,自动增长列,不允许空--Uname varchar(50) not null, --用户名,不允许空--Upassword varchar(50) not null, --密码,不允许空--Uemail varchar(50), --邮箱--Usex char(2) not null, --性别,不允许空--Uclass int, --用户等级--Uremark varchar(50), --备注信息--UregDate datetime not null, --注册日期,不允许空--Ustate int, --状态,是否在线等--Upoint int, --用户的积分--)go--------------------------------------为用户表添加各种约束----------------------------------------------------------为bbsUser表添加约束,add constraint关键字PK_UID约束名,primary key (主键)设置UID字段为主键--alter table bbsUsersadd constraint PK_UID primary key(UID)--为Upassword添加约束,check(Upassword length>=6)字段长度大于等于6位,default设置默认值为888888--alter table bbsUsersadd constraint CK_Upassword check(len(Upassword) >= 6)alter table bbsUsersadd constraint DF_Upassword default('888888') for Upassword--为Uemail字段添加约束,必须包含@号--alter table bbsUsersadd constraint CK_Uemail check(Uemail like '%@%')--为User字段添加约束,设置默认值为男,并且值只能是男或女--alter table bbsUsersadd constraint DF_Usex default('男') for Usexalter table bbsUsersadd constraint CK_Usex check(Usex='男' or Usex='女')--为Uclass字段添加约束,默认值为1--alter table bbsUsersadd constraint DF_Uclass default(1) for Uclass--为UregDate字段添加约束,默认值为当前日期--alter table bbsUsersadd constraint DF_UregDate default(getDate()) for UregDate--为Ustate添加约束,默认值为0--alter table bbsUsersadd constraint DF_Ustate default(0) for Ustate--为Upoint字段添加约束,默认值为20--alter table bbsUsersadd constraint DF_Upoint default(20) for Upoint-----------------------------------以上信息为以建立的bbsUser(用户表)及各种约束-----------------------------------go-----------------------------------新建bbsSection表(版块表)-------------------------------------------------------判断数据库内是否有表bbsSection的存在--if exists(select * from sysobjects where name = 'bbsSection')--如果有此表执行删除--drop table bbsSection--新建bbsSection表,及个字段--create table bbsSection(SID int identity(1,1) not null, --版块编号,自动增长列--Sname varchar(50) not null, --版块名称,不允许空--SmasterID int not null, --版主ID--Sprofile varchar(50), --版面简介--SclickCount int, --点击率--StopicCount int --发贴数--)-----------------------------------为表bbsSection(版块表)添加约束-----------------------------------------------go--将SID字段设置为主键--alter table bbsSectionadd constraint PK_SID primary key(SID)--为SmasterID设置外键,他的主键是bbsUsers表的UID字段foreign key(外键) references 主键表(主键表字段)--alter table bbsSectionadd constraint FK_SmasterID foreign key(SmasterID) references bbsUsers (UID)--为SclickCount字段添加默认值为0--alter table bbsSectionadd constraint DF_SclickCount default(0) for SclickCount--为字段StopicCount设置默认值为0--alter table bbsSectionadd constraint DF_StopicCount default(0) for StopicCount---------------------------------以上为表bbsSection(版块表)建立及添加相应约束-----------------------------------------------------------------------------新建bbsTopic表(主贴表)---------------------------------------------------go--判断数据库中是否有bbsTopic表的存在--if exists(select * from sysobjects where name = 'bbsTopic')--删除此表--drop table bbsTopic--新建bbaTopic表及个字段--create table bbsTopic(TID int identity(1,1) not null, --帖子编号--TsID int not null, --版块编号--TuID int not null, --发贴人ID--TreplyCount int, --回复数量--Tface int, --发贴表情--Ttopic varchar(50) not null, --标题--Tcontents varchar(50) not null, --正文--Ttime datetime, --发贴时间--TclickCount int, --点击数--Tstate int not null, --状态--TlastReply datetime --最后回复时间--)----------------------------------------为bbsTopic(主贴表)表个字段添加约束-----------------------------------------go--将TID字段设置为主键--alter table bbsTopicadd constraint PK_TID primary key(TID)--将TsID设置为外键,引用bbsSection表的主键SID字段--alter table bbsTopicadd constraint FK_TsID foreign key(TsID) references bbsSection (SID) --将TuID字段设置为外键盘,引用bbsUsers表的主键UID字段-- alter table bbsTopicadd constraint FK_TuID foreign key(TuID) references bbsUsers (UID) --设置TreplyCount字段的默认值为0--alter table bbsTopicadd constraint DF_TreplyCount default(0) for TreplyCount--为Tcontents字段添加约束,他的值必须大于等于6位--alter table bbsTopicadd constraint CK_Tcontents check(len(Tcontents) >= 6)--为Ttime字段添加默认值,为当前日期--alter table bbsTopicadd constraint DF_Ttime default(getDate()) for Ttime--设置TclickCount字段默认值为0--alter table bbsTopicadd constraint DF_TclickCount default(0) for TclickCount--设置Tstate字段默认值为1--alter table bbsTopicadd constraint DF_Tstate default(1) for Tstate--为TlastReply字段添加约束,最后回复时间必须要晚于发贴时间--alter table bbsTopicadd constraint CK_TlastReply check(TlastReply > Ttime)-----------------------------------------以上为bbsTopic(主贴表)表建立及建立个字段------------------------------------------------------------------------------新建表bbsReply(回帖表)及个字段--------------------------------------go--判断数据库中是否有bbsReply(回帖表)的存在--if exists(select * from sysobjects where name = 'bbsReply')--删除bbsReply表--drop table bbsReply--创建bbsReply(回帖)表及个字段--create table bbsReply(RID int identity(1,1) not null, --帖子编号--RtID int not null, --主贴ID--RsID int not null, --版块ID--RuID int not null, --回帖人ID--Rface int, --回帖表情--Rcontents varchar(50) not null, --正文--Rtime datetime, --回帖时间--RclickCount int --点击数--)-----------------------------------------为bbsReply(回帖)表个字段添加约束----------------------------------------go--设置RID字段为主键--alter table bbsReplyadd constraint PK_RID primary key(RID)--设置RtID字段为外键引用bbsTopic表的主键TID字段--alter table bbsReplyadd constraint FK_RtID foreign key(RtID) references bbsTopic(TID)--设置RsID为外键引用bbsSection表的主键SID--alter table bbsReplyadd constraint FK_RsID foreign key(RsID) references bbsSection(SID)--设置RuID为外键引用bbsUsers表的主键UID字段--alter table bbsReplyadd constraint FK_RuID foreign key(RuID) references bbsUsers(UID)--设置Rcontents字段必须大于6位--alter table bbsReplyadd constraint DF_Rcontents check(len(Rcontents) >= 6)--设置Rtime字段默认值为当前日期--alter table bbsReplyadd constraint DF_Rtime default(getDate()) for Rtime------------------------------------------------以上为创建bbsReply(回帖)表的内容---------------------------------------------------------------------------------------向表格中插入数据-----------------------------------------go--向bbsUsers(用户表插入数据)--insert intobbsUsers(Uname,Upassword,Uemail,Usex,Uclass,Uremark,Ustate,Upoint) values('天天','123456','zhong@','女',2,'我们的家乡在希望的田野上',3,100)insert intobbsUsers(Uname,Upassword,Uemail,Usex,Uclass,Uremark,Ustate,Upoint) values('可卡因','HYXS007','ss@','女',1,'我要去公安局自首',1,200) insert intobbsUsers(Uname,Upassword,Uemail,Usex,Uclass,Uremark,Ustate,Upoint) values('心酸果冻','888888','yy@','男',2,'牵匹瘦马闯天涯',2,600)insert intobbsUsers(Uname,Upassword,Uemail,Usex,Uclass,Uremark,Ustate,Upoint) values('冬篱儿','fangdong','bb@','女',3,'爱迷失在天堂',4,1200) insert intobbsUsers(Uname,Upassword,Uemail,Usex,Uclass,Uremark,Ustate,Upoint) values('Supper','master','dd@','女',5,'BBS大斑竹',1,500)--向bbsSection(版块表插入数据)--insert into bbsSection(Sname,SmasterID,Sprofile,SclickCount,StopicCount) values('Java技术核心',3,'包含框架,开源',500,1)insert into bbsSection(Sname,SmasterID,Sprofile,SclickCount,StopicCount) values('.Net技术',5,'包含C#,ASP',800,1)insert into bbsSection(Sname,SmasterID,Sprofile,SclickCount,StopicCount) values('Linux/Unix社区',5,'包含系统维护运行',0,0)--向bbsTopic(主贴表)插入数据--insert intobbsTopic(TsID,TuID,TreplyCount,Tface,Ttopic,Tcontents,TclickCount,Tstate,T lastReply)values(1,3,3,1,'还是JAVA','JAVA文件如何读取',200,1,'2008-8-1')insert intobbsTopic(TsID,TuID,TreplyCount,Tface,Ttopic,Tcontents,TclickCount,Tstate,T lastReply)values(2,2,1,2,'.NET文件部署','项目包含、WINFROM',0,1,'2007-8-5')--向bbsReply(跟贴表)插入数据--insert into bbsReply(RtID,RsID,RuID,Rface,Rcontents,RclickCount)values(1,1,5,2,'JAVA中乱码问题怎么解决好?',100)insert into bbsReply(RtID,RsID,RuID,Rface,Rcontents,RclickCount)values(1,1,4,4,'你好你好我们我们',200)insert into bbsReply(RtID,RsID,RuID,Rface,Rcontents,RclickCount)values(1,1,4,4,'呵呵哈哈嘿嘿西西',200)insert into bbsReply(RtID,RsID,RuID,Rface,Rcontents,RclickCount)values(2,1,4,4,'JSP文件转换',200)insert into bbsReply(RtID,RsID,RuID,Rface,Rcontents,RclickCount)values(2,1,4,4,'啊大安定大安定',200)---------------------------------------------------以上为各表格插入测试数据------------------------------------------------------------------------------------------------查询数据库情况-------------------------------------------print 'SQL Server的版本是:'+@@versionprint 'SQL Server的服务器名称是:'+@@servername--------------------------------------------------------------------------------------------------------------------------------------------------------------------系统变量查询上一条语句错误--------------------------------------update bbsUsers set Upassword = '1234' where Uname = '天天'print '执行上条语句产生错误: '+convert(varchar(5),@@error) --输出上一条语句的错误信息----------------------------------------------------------------------------------------------------------------------------------------------------------------------查询用户天天的信息---------------------------------------------set nocount on --不打印影响的信息----查询个人信息--print '天天个人信息如下'select Uname,Uremark,Upoint from bbsUsers where Uname = '天天'--用变量存储ID查询信息--declare @id int --声明变量--select @id = UID from bbsUsers where Uname = '天天' --将bbsUsers表中的UID字段赋值给id变量--print '发贴情况如下'selectconvert(varchar(10),Ttime,111),TclickCount,Ttopic,Tcontents,TclickCount,Tco ntents from bbsTopic where TuID = @idprint '回贴情况如下'select convert(varchar(10),Rtime,111),RclickCount,Rcontents from bbsReplywhere RuID = @idif(@id > 30) --if判断--print '有权发贴' --条件为真输出--else --否则--print '无权发贴' --输出-----------------------------------------------------------------------------------------------------------------------------------------------------------查询心酸果冻用户发贴回帖显示级别---------------------------------------------声明变量用于存储用户ID--declare @uNameID int--声明变量用于存储用户发贴数量--declare @count int--声明变量用于存储用户回帖数量--declare @count1 int--将心酸果冻用户的ID号存到变量@uNameID中--select @uNameID = UID from bbsUsers where Uname = '心酸果冻'--用count统计函数将用户的发贴数量存到变量@count中--select @count = count(*) from bbsTopic where TuID = @uNameID--输出--print '心酸果冻发贴数量为:' + convert(varchar(10),@count)print ''print '具体内容如下:'--显示信息,判断用户发贴数量大于0时显示帖子的信息--if(@count > 0)select Ttime as 发贴时间,TclickCount as 点击率,Ttopic as 主题,Tcontents as 内容from bbsTopic where TuID = @uNameID--用count统计函数将用户的回贴数量存到变量@count1中--select @count1 = count(*) from bbsReply where RuID = @uNameID--输出--print '心酸果冻的回帖数量为: '+convert(varchar(10),@count1)--显示信息,用户回帖数量大于0时显示帖子信息--if(@count1 > 0)select Rtime as 回帖时间,RclickCount as 点击数量,Rcontents as 回帖内容from bbsReply where RuID = @uNameID--判断用户的等级--if((@count + @count1) < 10)print '心酸果冻贴数总计为: '+convert(varchar(10),@count + @count1)+' 功臣级别为: 新手上路'if(((@count + @count1) >= 10) and ((@count + @count1) < 20))print '心酸果冻贴数总计为: '+convert(varchar(10),@count + @count1)+' 功臣级别为: 侠客'if(((@count + @count1) >= 20) and ((@count + @count1) < 30))print '心酸果冻贴数总计为: '+convert(varchar(10),@count + @count1)+' 功臣级别为: 骑士'if(((@count + @count1) >= 30) and ((@count + @count1) < 40))print '心酸果冻贴数总计为: '+convert(varchar(10),@count + @count1)+' 功臣级别为: 精灵王'if(((@count + @count1) >= 40) and ((@count + @count1) < 50))print '心酸果冻贴数总计为: '+convert(varchar(10),@count + @count1)+' 功臣级别为: 光明使者'if((@count + @count1) >= 50)print '心酸果冻贴数总计为: '+convert(varchar(10),@count + @count1)+' 功臣级别为: 法老'----------------------------------------------------------------------------------------------------------------------------------------------------------回帖最多的为精华贴-----------------------------------------------------------声明整形变量用于存储主贴编号,和作者编号--declare @tidid intdeclare @zhuzheid intdeclare @huifu int--将主贴标号存到@tidid变量中--select top 1 @tidid = TID from bbsTopic order by TreplyCount desc--将用户编号存到@zhuzheid变量中--select @zhuzheid = TuID from bbsTopic where TID = @tidid--输出--print '第一精华贴的信息如下:'--查出回贴最多的主贴,(用户表与主贴表两表连查)--select Ttime as 发贴时间,TclickCount as 点击率,Uname as 作者,Ttopic as 主题,Tcontents as 内容from bbsTopicinner join bbsUserson bbsUsers.UID = bbsTopic.TuIDwhere bbsUsers.UID = @zhuzheid and bbsTopic.TID = @tidid--为了美观输出空行--print ''--利用@tidid(主贴编号)变量查出回复数量存到@huifu变量中--select @huifu = TreplyCount from bbsTopic where TID = @tidid--输出--print '回帖数量'+convert(varchar(10),@huifu)+',如下所示:'--查询回帖信息--select Rtime as 回帖时间,RclickCount as 点击率,回帖表情= case--case多分之语句判断回帖表情--when Rface = 1 then '~(00)~猪头'when Rface = 2 then '*:0)小丑'when Rface = 3 then '[:|]机器人'when Rface = 4 then '{~0~0~}老人家'when Rface = 5 then '(:<)吹水大王'end,Rcontents as 回帖内容from bbsReply where RtID = @tidid-----------------------------------------------------------------------------------------------------------------/*实现:1、论坛人气,点击率>1000为“人气熊旺旺”,否则为“一般般”2、年度品牌版块:主贴量最多的版块3、年度倒胃版块:主贴量最少的版块4、年度回帖人气最旺奖:回帖的点击率排名前2名5、年度最差斑竹:版块点击率低于500或主贴等于0-------------------------------------------------*/--1、论坛人气,点击率>1000为“人气熊旺旺”,否则为“一般般”--print '---->>>>各位大虾注意了,本论坛即将发布年度奖项<<<<----'if(select sum(SclickCount) from bbsSection) > 1000print '论坛人气评估: 人气熊旺旺大家辛苦了'elseprint '论坛人气评估: 一般般,大家加油了'--2、年度品牌版块:主贴量最多的版块--print '年度最佳版块'select Sname as 版块名称,StopicCount as 主贴数量,Sprofile as 简介from bbsSectionwhere StopicCount = (select max(StopicCount) from bbsSection)--3、年度倒胃版块:主贴量最少的版块--print '年度倒胃版块'select Sname as 版块名称,StopicCount as 主贴数量,Sprofile as 简介from bbsSectionwhere StopicCount = (select min(StopicCount) from bbsSection)--4、年度回帖人气最旺奖:回帖的点击率排名前2名--print '年度回帖人气最旺的前两位'select Uname as 大名,Uclass as 星级from bbsUsers where uid in(select top 2 TuID from bbsTopic order by TclickCount desc)--5、年度最差斑竹:版块点击率低于500或主贴等于0--if exists(select * from bbsSection where StopicCount = 0 or SclickCount <= 500)beginprint '请以下斑竹加油哦'select Sname as 版块名称,StopicCount as 主贴数量,SclickCount as 点击率from bbsSectionwhere StopicCount = 0 or SclickCount <= 500end-----------------------------------------------------------------------------------------------------------------*-------------------------------------------用户发主贴---------------------------------------------------------*/--声明变量存放用户ID和版块ID--declare @id intdeclare @bankuai int--将发贴人心酸果冻的ID存到变量@id中--select @id = UID from bbsUsers where Uname = '心酸果冻'--将版块编号放入@bankuai变量中--select @bankuai = SID from bbsSection where Sname like '%.Net%'--将发贴内容插入到主贴表--insert into bbsTopic(TsID,TuID,Tface,Ttopic,Tcontents)values(@bankuai,@id,3,'什么是.Net啊?','我靠!微软的.Net广告超过半个北京城啊....')--更新主贴表,.Net技术版块主贴数加1--update bbsSection set StopicCount = StopicCount + 1 where SID = @bankuai --更新用户积分,如果是新主题则积分加100否则加50分--if not exists(select * from bbsTopic where Ttopic like '什么是.Net啊?' and TuID <> @id)update bbsUsers set Upoint = Upoint + 100 where UID = @idelseupdate bbsUsers set Upoint = Upoint + 50 where UID = @id--更新积分后更新级别--update bbsUsers set Uclass = casewhen Upoint < 500 then 1when Upoint between 500 and 1000 then 2when Upoint between 1001 and 2000 then 3when Upoint between 2001 and 4000 then 4when Upoint between 4001 and 5000 then 5else 6end--所有用户等级从新排名--select 妮称= Uname,星级= casewhen Uclass = 0 then ' 'when Uclass = 1 then '★'when Uclass = 2 then '★★'when Uclass = 3 then '★★★'when Uclass = 4 then '★★★★'when Uclass = 5 then '★★★★★'else '★★★★★★'end,积分= Upoint from bbsUsers------------------------------------------------------------------------------------------------------------------/*----------------------跟贴----------------------------------------------------------------*/--声明变量用于存放回帖人编号及主贴ID--declare @GTid intdeclare @ZTid intdeclare @BKid int--获得可卡因的编号--select @GTid = UID from bbsUsers where Uname = '可卡因'--获得主贴的编号--select @ZTid = TID from bbsTopic where Ttopic like '%什么是.Net%'--获得版块编号--select @BKid = SID from bbsSection where Sname like '%.Net%'--插入回帖内容--insert into bbsReply(RtID,RsID,RuID,Rface,Rcontents)values(@ZTid,@BKid,@GTid,2,'.NET是微软极力推崇的企业级信息网络共享平台.')--回帖后主贴回复数量加1,点击率加1--update bbsTopic set TreplyCount = TreplyCount + 1,TclickCount = TclickCount + 1 where TID = @ZTid--回帖后相应的版块点击率加1--update bbsSection set SclickCount = SclickCount + 1 where SID = @BKid--回帖后给用户加分,如果是第一个回帖加100分,否则加50分--if ((select top 1 RuID from bbsReply where RtID = @ZTid order by Rtime) = @GTid)update bbsUsers set Upoint = Upoint + 100 where UID = @GTidelseupdate bbsUsers set Upoint = Upoint + 50 where UID = @GTid--更新用户相应的信息--update bbsUsers set Uclass = casewhen Upoint < 500 then 1when Upoint between 500 and 1000 then 2when Upoint between 1001 and 2000 then 3when Upoint between 2001 and 4000 then 4when Upoint between 4001 and 5000 then 5else 6end--发布主贴和跟贴--select 主贴作者= '心酸果冻',主贴发布时间= convert(varchar(10),Ttime,111),主题= Ttopic,内容= Tcontentsfrom bbsTopic where TID = @@identityselect 回帖作者= '可卡因',回帖时间= convert(varchar(10),Rtime,111),回帖内容= Rcontentsfrom bbsReply where RID = @@identity--星级从新排名--select 妮称= Uname,星级= casewhen Uclass = 0 then ' 'when Uclass = 1 then '★'when Uclass = 2 then '★★'when Uclass = 3 then '★★★'when Uclass = 4 then '★★★★'when Uclass = 5 then '★★★★★'else '★★★★★★'end,积分= Upoint from bbsUsers-----------------------------------------------------------------------------------------------------------------/*------------------------------------------删除帖子-----------------------------------------------------------*/--声明变量用于存放回帖人编号及主贴ID--declare @GTid intdeclare @BZid intdeclare @ZTid intdeclare @BKid int--获得斑竹心酸果冻的编号--select @BZid = UID from bbsUsers where Uname = '心酸果冻'--获得主贴的编号--select @ZTid = TID from bbsTopic where Ttopic like '%什么是.Net%'--获得所有回帖人的编号--select @GTid = RuID from bbsReply where RtID = @ZTid--获得版块编号--select @BKid = SID from bbsSection where Sname like '%.Net%'--被删帖的斑竹心酸果冻减去积分100分--update bbsUsers set Upoint = Upoint - 100 where UID = @BZid--回贴的帖主均减积分50分--update bbsUsers set Upoint = Upoint - 50 where UID = @GTid--帖子所在版块的主贴量减1--update bbsSection set StopicCount = StopicCount - 1 where SID = @BKid --如果回帖数量大于10给予严重警告,否则给予警告--if((select TreplyCount from bbsTopic where TID = @ZTid) > 10)print '影响很坏,给予严重警告一次'elseprint '给予警告一次'--开始删除,先删除跟贴在删除主贴--delete from bbsReply where RtID = @ZTiddelete from bbsTopic where TID = @ZTid--重新排名--update bbsUsers set Uclass = casewhen Upoint < 500 then 1when Upoint between 500 and 1000 then 2when Upoint between 1001 and 2000 then 3when Upoint between 2001 and 4000 then 4when Upoint between 4001 and 5000 then 5else 6end--重新星级排名--select 妮称= Uname,星级= casewhen Uclass = 0 then ' 'when Uclass = 1 then '★'when Uclass = 2 then '★★'when Uclass = 3 then '★★★'when Uclass = 4 then '★★★★'when Uclass = 5 then '★★★★★'else '★★★★★★'end,积分= Upoint from bbsUsers-----------------------------------------------------------------------------------------------------------------select * from bbsUsersselect * from bbsSectionselect * from bbsTopicselect * from bbsReply。

BBS数据库系统的设计与实现——数据库系统的设计与实现

BBS数据库系统的设计与实现——数据库系统的设计与实现

网络教育学院《数据库课程设计》题目:BBS数据库系统的设计与实现学习中心:辽宁省奥鹏学习中心专业:网络工程年级: 2014年春季学号: ************学生:孙雨指导教师:摘要在网络信息时代到来之前,主要的主流媒体是报刊,杂志,电视,广播等,人民通过这些信息交流平台了解各方面的资讯。

可是更多的是接受,真正使得百姓们可以参与进来发表自己意见和看法的时代就是21世纪网络的广泛应用,在结合JAVA和SSH技术之下开发了这样一个快捷、界面友好的论坛交流系统,实现了一个功能相对齐全的论坛系统,在这里可以自由地发表自己的观点和对论坛的主题发表意见,我们还可以对网友的问题及时地解决,获取对自己有用的只是。

本网站严格按照软件项目开发的流程进行开发,对于网站开发的可行性分析、需求分析、概要设计、详细设计以及对网站的测试与维护都又详细的论述和实现过程。

随着计算机技术的不断发展,计算机作为知识经济时代的产物,已被广泛应用于社会各个行业和领域。

随着我国改革的深入和社会主义市场经济的日趋繁荣,导致竞争日益激烈,迫使我们采取先进的计算机硬件设备以及高质量的辅助软件来管理运行,以提高效率。

动态网页也是一样,人们在其上面发表个人的观点的平台,它是一个交互式的互动平台,它是用户相互交流的重要途径,用户提出的要求、意见、看法,可以得到及时的回复和解决,可以有效的解决用户的需要,目前计算机网络这么发达,我们就很有必要去开发一个这样的软件——动态留言系统,只要有一台与外界相连的计算机,你可以不用出家门,只要系统留言就可以和广大的用户进行交流,沟通。

一、系统概述1.1 总体概述随着Internet技术的不断发展,以及用户群爆炸性的增长,网络不再仅仅是信息的被动获取来源,更成为人们探讨问题,交换观点的场所,其中,网络上论坛扮演了极其重要的角色。

论坛又名BBS,全称为Bulletin Board System或者Bulletin Board Service。

BBS论坛数据库设计文档

BBS论坛数据库设计文档

第1章绪论随着互联网日益深入社会生活,BBS开发技术发展至今,从CGI,ASP,到PHP已经日趋成熟,功能也更加丰富,但携着Sun公司的Java技术所实现的“一次编写,到处运行”的优势,继承这一衣钵的JSP技术越来越受到人们的注视。

BBS作为一种对外的展示窗口,进行内外信息交流,已成为大众的广泛需要。

为了进行更好的交流,用户想就自己的专业和爱好能和其他的用户进行及时专业的交流,这就有了论坛,这样以来我们就可以在网络这个虚拟的空间中方便地实现交流,BBS论坛是我们在这个地球村中生活的重要交流工具。

所以我选择使用JSP开发BBS论坛这一课题作为毕业设计。

Java是未来的主流开发技术,具有很多优势。

JSP则是Java在Internet/Intranet Web上的重要应用技术,得到了广泛的支持和承认,它可以和各种Java技术完好地结合在一起,从而实现非常复杂的应用。

本网站使用JSP + Mysql在MyEclipse系统开发的,从而创建一个更为稳定,高效,安全的运行环境。

本文主要实现了基于B/S模式的一种JSP论坛的设计与实现,主要功能是实现客户端和服务器端的动态交互。

BBS论坛系统最基本的功能首先是发表主题,其次是其他人员根据主题发表自己的看法。

此外,为了记录主题的发表者和主题的加复者信息民,系统还需要提供用户注册和登录的功能。

只有注册的用户登录后才能够发表和回复主题,浏览者(游客)只能浏览主题信息。

根据用户的需求及以上的分析,BBS论坛需要具备以下功能:显示各论坛类别及版面、查看自己发表的帖子、搜索帖子、查看根帖内容、用户注册、用户登录、用户留言、发表帖子、回复帖子、进入后台、论坛类别管理、版面管理、用户管理和用户注册。

设计BBS论坛系统所要考虑的问题主要有如何通过资源文件显示文字和使用静态代码块。

设计中力求界面友好、简洁,易于操作。

代码部分尽量避免逻辑错误,算法设计简单合理,尽量使程序具有较好的可读性,有利于其他的设计者对程序的阅读;力求对数据库操作的安全与稳定,尽量避免数据库操作异常,并要保证查询的快速无误。

BBS论坛数据库设计

BBS论坛数据库设计
《JSP应用开发》课程
任务五 使用Servlet实现BBS论坛
数据库设计汪燕本节ຫໍສະໝຸດ 标完成BBS论坛数据库设计
6.1.3 BBS论坛数据库设计
论坛数据库中主要包括四张表,分别是:
用户信息表(Userinfo): 表中记录注册用户名与登录口令 论坛版块表(Board): 表中存储着论坛中版块的标题名称与版块的ID 论坛主帖表(Topic): 表中记录了某个版块中的所有主题帖相关信息,其中通过BoardID与版块 建立了主从关系 论坛回帖表(Reply): 表中记录了针对某个主题帖发表的评论意见,通过TopicID与主题帖建立 了主从关系
6.1.3 BBS论坛数据库设计

BBS结构设计

BBS结构设计
字段名 MenuBig_ID MenuBig_Name MenuBig_Description MenuBig_ImgUrl MenuBig_Admin MenuBig_Gradation MenuBig_Adddate
永远在一起论坛2.0版(数据库结构设计) Bbs_MenuBig(论坛大类菜单表) 数据类型 长度 默认值 Int 4 主键,自动编号 Varchar 50 text 16 Varchar 200 Varchar 100 Int 4 0 DateTime 8 getdate() Bbs_MenuSmall(论坛小类菜单表) 数据类型 长度 默认值 Int 4 主键,自动编号 Varchar 50 Varchar 200 Varchar 500 Varchar 100 Int 4 0 DateTime 8 getdate() int 4 0 int 4 0 int 4 0 int 4 0 int 4 0 int 4 0 Bbs_Post(论坛帖子表) 长度 默认值 4 主键,自动编号 200 16 4 0 8 getdate() 4 0 50 4 0 4 0 4 0 4 0 8 getdate() 4 0 4 0
字段名称 User_Id User_Name User_Pwd User_Ask User_Answer User_Email User_Adddate User_Qx User_Online User_Ip User_LoginDate User_LoginCount
数据类型 int varchar varchar varchar varchar varchar datetime int int varchar datetime int
字段名称 UserState_Id UserState_PostCount UserState_BackCount UserState_ClassicCount UserState_Exp

BBS论坛数据库设计 及ER图

BBS论坛数据库设计 及ER图
2.2 实体 E-R 图
2.2.1 用户 E-R 图
UID
Uname
UEmail
UBirtheday
Usex
BBSUsers
Uclass 2.2.2 主贴 E-R 图
UStatement
URegDate
UPoint UState
TID
TSID
TUID
TReplyCount
TEmotion
BBSTopic
说明 主帖编号 主帖版块编号 主帖用户编号 主帖回复次数 主帖表情 主帖标题 主帖内容 发帖时间 主帖点击次数 主帖最后点击时间
表 1-3-3
BBSSection 板块信息
表中列名
数据类型
sid
Int
SName
char
SMasterID
Int
SStatement
Varchar
SClickCount
Int
说明 版块编号
Sname SMasterID SStatement SClickCount STopicCount
Char Int varchar Int int
Not null Not null Not null Not null Not null
版块名称 版块编号 板块说明 版块点击次数 板块主题数
第二章 概要设计
2.1 基本概念介绍
⑴实体:现实世界中的各种事物的抽象。实体可以是具体的各种事物,如学生、教师、仓 库、图书馆等;也可以是抽象的概念,如课程、部门、学校等。
⑵联系:两个实体集之间的联系。可以分为三类: ①一对一联系(1:1) 如果对于实体集 A 中的每一个实体,实体集 B 中最多有一个实体与之联系,反之亦然,则 称实体集 A 和实体集 B 具有一对一联系,记作 1:1。 ②一对多联系(1:n) 如果对于实体集 A 中的每一个实体,实体集 B 中最多有 n(n≧1)个实体与之联系,对于实 体集 B 中的每一个实体,实体集 A 中最多有一个实体与之联系,则称实体集 A 和实体集 B 具有 一对多联系,记作 1:n。 ③多对多联系(m:n) 如果对于实体集 A 中的每一个实体,实体集 B 中最多有 n(n≧1)个实体与之联系,对于实 体集 B 中的每一个实体,实体 A 中最多有 m(m≧1)个实体与之联系,则称实体集 A 和实体集 B 具有多对多联系,记作 m:n。 ⑶属性:描述实体特征或性质。如学生实体的属性有:学号、姓名、性别、年龄等。课程 实体的属性有:课程号、课程名、学分等。

BBS论坛管理数据库数据库的设计与实现(ppt文档)

BBS论坛管理数据库数据库的设计与实现(ppt文档)

--插入数据
insert into
bbsSection(Sname,SmasterID,Sprofile,SclickCount,StopicCount) values('Java技术',3,'包含框架,开源,非技术区,J2SE',500,1)
insert into
bbsSection(Sname,SmasterID,Sprofile,SclickCount,StopicCount) values('.Net技术',5,'包含C#,ASP,.NET Framework,Web
BBSTopic发主贴表
BBSReply回贴表
表间关系图
提出任务
BBS论坛管理数据库的设计 BBS论坛管理数据库的实现
阶段一、插入测试数据

--插入测试数据 insert into bbsReply (RTID,RSID,RUID,RFace,RContents,RTime,RClickCount) values (1,1,5,2,'jsp乱码问题该怎么解决最好,因为我发现这 个问题好象在好多地方都看见了',getdate(),100) insert into bbsReply (RTID,RSID,RUID,RFace,RContents,RTime,RClickCount) values (1,1,4,4,'转换jsp..',getdate(),200) insert into bbsReply (RTID,RSID,RUID,RFace,RContents,RTime,RClickCount) values (2,2,2,3,'.net很精彩,就像ppmm啊!',getdate(),200)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BBS论坛数据库设计
论坛(BBS)是互联网最常见的一个功能,下面我们就来分析下一个论坛的数据库是如何设计的。

6.5.1 了解BBS的功能
用户注册和登录,后台数据库需要存放用户的注册信息和在线状态信息;用户发贴,后台数据库需要存放贴子相关信息,如贴子内容、标题等;论坛版块管理:后台数据库需要存放各个版块信息,如版主、版块名称、贴子数等。

6.5.2 标识每个实体的属性
(1)论坛用户:用户昵称,密码,电子邮件,生日,性别,用户头像,用户等级,用户备注,注册日期,用户状态,用户积分,是否版主。

(4)版块:版块ID,版块名称,版主,版块主题,本版格言,点击率,发贴数。

(2)发贴:所属版块,发贴人,发贴表情,回复数量,标题,正文,发贴时间,点击数,状态,最后回复的用户,最后回复时间。

(3)回贴:回复主贴ID,所在版块ID,回贴人ID,回贴表情,回复内容,回贴时间。

6.5.3 标识对象之间的关系
(1)跟贴和主贴有主从关系:我们需要在跟贴对象中表明它是谁的跟贴。

(2)版块和用户有关系:从用户对象中可以根据版块对象查出对应的版主用户的情况。

(3)主贴和版块有主从关系:需要表明发贴是属于哪个版块的。

(4)跟贴和版块有主从关系:需要表明跟贴是属于哪个版块的。

6.5.4 绘制E-R图
6.5.5 将E-R图转换为表
(1)将各实体转换为对应的表,将各属性转换为各表对应的列。

(2)标识每个表的主键列,需要注意的是:没有主键的表添加ID编号列,它没有实际含义,用于做主键或外键,例如用户表中的“UID”列,版块表中添加“SID”列,发贴表和跟贴表中的“TID”列。

(3)在表之间建立主外键,体现实体之间的映射关系。

字段名中文名类型能否为空备注
UID 用户ID int 否主键、自定增长
UName 用户昵称varchar 否唯一值
UPassword 密码varchar 否
UEmail 电子邮件varchar 否
UBirthady 生日varchar
USex 性别int 否
UHead 用户头像varchar
USatement 用户备注varchar
URegDate 注册日期datetime 否
UState 用户状态int
UPoint 用户积分int
UIsSectioner 是否版主int 设定默认值,默认不是版主
方便查询,比如,要查询某个版块有多少个回贴,就可以直接在BBSReply表中直接查询,否则就要用到多表查询,那样查询效率低,所以在这个表里我们加冗余字段是为了方便查询功能。

相关文档
最新文档