bbs论坛数据库设计_第1页
bbs论坛数据库设计_第2页
bbs论坛数据库设计_第3页
bbs论坛数据库设计_第4页
bbs论坛数据库设计_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——bbs论坛数据库设计

简单的BBS数据库设计!

网易新闻

微博

邮箱

闪电邮

相册

有道

手机邮

印像派

梦幻人生

更多博客博客首页

博客话题

热点专题

博客油菜地

找朋友

博客圈子

博客风格

手机博客

邮件写博

博客复制探寻搜博文搜博客随便看看注册登录爱的天与地Loveofheavenandearth

导航

首页日志相册音乐珍藏博友关于我日志爱的天与热心、热心、还是热心.我的生活充满热心,充满绚烂,微笑面对每一天.

加博友关注他

最新日志

Sql脚本使用技巧(selectint房产管理系统数据库设计.NET平台C#+WinForms编程项.NET平台实现C#编程http://.77平台实现C#编程http://.77平台实现C#编程WinForms博主推荐

相关日志

随机阅读

营养缺乏身体会发出信号双向看人看自己生气,对身体有内在的惊人伤害写博客是一种最好的修炼造心老年斑只是不好看而已吗?首页推荐

90后少女彪悍的可以当我老师爆笑《木兰做月饼》肖传国该判几年?警方破获方舟子被打案10%住房空置率很正常李冰冰色诱华仔就能色诱观众?更多

SQLServer数据库应用开发(1)SQLServer数据库事物处理过程

一个不完整的BBS论坛数据库设计程序人生2023-08-2021:35:19阅读539评论2字号:大中小订阅

usemaster

新建数据bbsDB的库

go

--判断数据库是否存在使用exists关键字,在用sysdatabases关键字查询--

ifexists(select*fromsysdatabaseswherename='bbsDB')

--假使数据库存在就删除此数据库用drop(删除)database(数据库对象)bbsDB(数据库名)--

dropdatabasebbsDB

--删除后在添加一个数据库create(添加)database(数据库对象)bbsDB(数据库名)on--

createdatabasebbsDB

on

(

name='bbsDB_MDF',--数据库主文件名--

filename='F:\SQL\第四阶段\bbsDB_MDF.mdf',--数据库存储的路径--

size=10mb,--数据库初使大小--

filegrowth=10%--增长变化--

)

--设置日志文件--

logon

(

name='bbsDB_LDF',--日志文件名--

filename='F:\SQL\第四阶段\bbsDB_LDF.ldf',--日志文件存储路径--

size=1mb,--日志文件初使大小--

maxsize=20mb,--日志文件最大的可储存--

filegrowth=10%--增长变化--

)

go

以上信息为新建的数据库

usebbsDB

go

新建bbsUsers表(用户表)

--判断bbsDB库是否有表bbsUser的存在exists关键字+sysobjects判

断当前数据库表--

ifexists(select*fromsysobjectswherename='bbsUsers')

--假使表存在就删除此表--

droptablebbsUser

--新建bbsUser表--

createtablebbsUsers

简单的BBS数据库设计!

(

UIDintidentity(1,1)notnull,--用户编号,自动增长列,不允许空--

Unamevarchar(50)notnull,--用户名,不允许空--

Upasswordvarchar(50)notnull,--密码,不允许空--

Uemailvarchar(50),--邮箱--

Usexchar(2)notnull,--性别,不允许空--

Uclassint,--用户等级--

Uremarkvarchar(50),--备注信息--

UregDatedatetimenotnull,--注册日期,不允许空--

Ustateint,--状态,是否在线等--

Upointint,--用户的积分--

)

go

为用户表添加各种约束

--为bbsUser表添加约束,addconstraint关键字PK_UID约束名,primarykey(主键)设置UID字段为主键--

altertablebbsUsers

addconstraintPK_UIDprimarykey(UID)

--为Upassword添加约束,check(Upasswordlength=6)字段长度大于等于6位,default设置默认值为888888--

altertablebbsUsers

addconstraintCK_Upasswordcheck(len(Upassword)=6)

altertablebbsUsers

addconstraintDF_Upassworddefault('888888')forUpassword

--为Uemail字段添加约束,必需包含@号--

altertablebbsUsers

addconstraintCK_Uemailcheck(Uemaillike'%@%')

--为User字段添加约束,设置默认值为男,并且值只能是男或女--

altertablebbsUsers

addconstraintDF_Usexdefault('男')forUsex

altertablebbsUsers

addconstraintCK_Usexcheck(Usex='男'orUsex='女')

--为Uclass字段添加约束,默认值为1--

altertablebbsUsers

addconstraintDF_Uclassdefault(1)forUclass

--为UregDate字段添加约束,默认值为当前日期--

altertablebbsUsers

addconstraintDF_UregDatedefault(getDate())forUregDate

--为Ustate添加约束,默认值为0--

altertablebbsUsers

addconstraintDF_Ustatedefault(0)forUstate

--为Upoint字段添加约束,默认值为20--

altertablebbsUsers

addconstraintDF_Upointdefault(20)forUpoint

以上信息为以建立的bbsUser(用户表)及各种约束

go

新建bbsSection表(版块表)

--判断数据库内是否有表bbsSection的存在--

ifexists(select*fromsysobjectswherename='bbsSection')

--假使有此表执行删除--

droptablebbsSection

--新建bbsSection表,及个字段--

createtablebbsSection

(

SIDintidentity(1,1)notnull,--版块编号,自动增长列--

Snamevarchar(50)notnull,--版块名称,不允许空--

SmasterIDintnotnull,--版主ID--

Sprofilevarchar(50),--版面简介--

SclickCountint,--点击率--

StopicCountint--发贴数--

)

为表bbsSection(版块表)添加约束-

go

--将SID字段设置为主键--

altertablebbsSection

addconstraintPK_SIDprimarykey(SID)

--为SmasterI

简单的BBS数据库设计!

D设置外键,他的主键是bbsUsers表的UID字段foreignkey(外键)references主键表(主键表字段)--

altertablebbsSection

addconstraintFK_SmasterIDforeignkey(SmasterID)referencesbbsUsers(UID)

--为SclickCount字段添加默认值为0--

altertablebbsSection

addconstraintDF_SclickCountdefault(0)forSclickCount

--为字段StopicCount设置默认值为0--

altertablebbsSection

addconstraintDF_StopicCountdefault(0)forStopicCount

以上为表bbsSection(版块表)建立及添加相应约束

新建bbsTopic表(主贴表)

go

--判断数据库中是否有bbsTopic表的存在--

ifexists(select*fromsysobjectswherename='bbsTopic')

--删除此表--

droptablebbsTopic

--新建bbaTopic表及个字段--

createtablebbsTopic

(

TIDintidentity(1,1)notnull,--帖子编号--

TsIDintnotnull,--版块编号--

TuIDintnotnull,--发贴人ID--

TreplyCountint,--回复数量--

Tfaceint,--发贴表情--

Ttopicvarchar(50)notnull,--标题--

Tcontentsvarchar(50)notnull,--正文--

Ttimedatetime,--发贴时间--

TclickCountint,--点击数--

Tstateintnotnull,--状态--

TlastReplydatetime--最终回复时间--

)

为bbsTopic(主贴表)表个字段添加约束

go

--将TID字段设置为主键--

altertablebbsTopic

addconstraintPK_TIDprimarykey(TID)

--将TsID设置为外键,引用bbsSection表的主键SID字段--

altertablebbsTopic

addconstraintFK_TsIDforeignkey(TsID)referencesbbsSection(SID)

--将TuID字段设置为外键盘,引用bbsUsers表的主键UID字段--

altertablebbsTopic

addconstraintFK_TuIDforeignkey(TuID)referencesbbsUsers(UID)

--设置TreplyCount字段的默认值为0--

altertablebbsTopic

addconstraintDF_TreplyCountdefault(0)forTreplyCount

--为Tcontents字段添加约束,他的值必需大于等于6位--

altertablebbsTopic

addconstraintCK_Tcontentscheck(len(Tcontents)=6)

--为Ttime字段添加默认值,为当前日期--

altertablebbsTopic

addconstraintDF_Ttimedefault(getDate())forTtime

--设置TclickCount字段默认值为0--

altertablebbsTopic

addconstraintDF_TclickCountdefault(0)forTclickCount

--设置Tstate字段默认值为1--

altertablebbsTopic

addconstraintDF_Tstatedefault(1)forTstate

--为TlastReply字段添加约束,最终回复时间必需要晚于发贴时间--

altertablebbsTopic

addconstraintCK_TlastReplycheck(TlastReplyTtime)

以上为bbsT

opic(主贴表)表建立及建立个字段

新建表bbsReply(回帖表)及个字段

简单的BBS数据库设计!

心酸果冻用户发贴回帖显示级别

--声明变量用于存储用户ID--

declare@uNameIDint

--声明变量用于存储用户发贴数量--

declare@countint

--声明变量用于存储用户回帖数量--

declare@count1int

--将心酸果冻用户的ID号存到变量@uNameID中--

select@uNameID=UIDfrombbsUserswhereUname='心酸果冻'

--用count统计函数将用户的发贴数量存到变量@count中--

select@count=count(*)frombbsTopicwhereTuID=@uNameID

--输出--

print'心酸果冻发贴数量为:'+convert(varchar(10),@count)

print''

print'具体内容如下:'

--显示信息,判断用户发贴数量大于0时显示帖子的信息--

if(@count0)

selectTtimeas发贴时间,TclickCountas点击率,Ttopicas主题,Tcontentsas内容frombbsTopicwhereTuID=@uNameID

--用count统计函数将用户的回贴数量存到变量@count1中--

select@count1=count(*)frombbsReplywhereRuID=@uNameID

--输出--

print'心酸果冻的回帖数量为:'+convert(varchar(10),@count1)

--显示信息,用户回帖数量大于0时显示帖子信息--

if(@count10)

selectRtimeas回帖时间,RclickCountas点击数量,Rcontentsas回帖内容frombbsReplywhereRuID=@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@tididint

declare@zhuzheidint

declare@huifuint

--将主贴标号存到@tidid变量中--

selecttop1@tidid=TIDfrombbsTopicorderbyTrep

lyCountdesc

--将用户编号存到@zhuzheid变量中--

select@zhuzheid=TuIDfrombbsTopicwhereTID=@tidid

--输出--

print'第一精华贴的信息如下:'

--查出回贴最多的主贴,(用户表与主

简单的BBS数据库设计!

贴表两表连查)--

selectTtimeas发贴时间,TclickCountas点击率,Unameas,Ttopicas主题,Tcontentsas内容frombbsTopic

innerjoinbbsUsers

onbbsUsers.UID=bbsTopic.TuID

wherebbsUsers.UID=@zhuzheidandbbsTopic.TID=@tidid

--为了美观输出空行--

print''

--利用@tidid(主贴编号)变量查出回复数量存到@huifu变量中--

select@huifu=TreplyCountfrombbsTopicwhereTID=@tidid

--输出--

print'回帖数量'+convert(varchar(10),@huifu)+',如下所示:'

--查询回帖信息--

selectRtimeas回帖时间,RclickCountas点击率,回帖表情=case

--case多分之语句判断回帖表情--

whenRface=1then'~(00)~猪头'

whenRface=2then'*:0)小丑'

whenRface=3then'[:|]机器人'

whenRface=4then'{~0~0~}老人家'

whenRface=5then'(:)吹水大王'

end

,Rcontentsas回帖内容frombbsReplywhereRtID=@tidid

/*实现:1、论坛人气,点击率1000为“人气熊旺旺〞,否则为“一般般〞

2、年度品牌版块:主贴量最多的版块

3、年度倒胃版块:主贴量最少的版块

4、年度回帖人气最旺奖:回帖的点击率排名前2名

5、年度最差斑竹:版块点击率低于500或主贴等于0*/

--1、论坛人气,点击率1000为“人气熊旺旺〞,否则为“一般般〞--

print'各位大虾注意了,本论坛即将发布年度奖项'

if(selectsum(SclickCount)frombbsSection)1000

print'论坛人气评估:人气熊旺旺大家辛苦了'

else

print'论坛人气评估:一般般,大家加油了'

--2、年度品牌版块:主贴量最多的版块--

print'年度最正确版块'

selectSnameas版块名称,StopicCountas主贴数量,Sprofileas简介frombbsSection

whereStopicCount=(selectmax(StopicCount)frombbsSection)

--3、年度倒胃版块:主贴量最少的版块--

print'年度倒胃版块'

selectSnameas版块名称,StopicCountas主贴数量,Sprofileas简介frombbsSection

whereStopicCount=(selectmin(StopicCount)frombbsSection)

--4、年度回帖人气最旺奖:回帖的点击率排名前2名--

print'年度回帖人气最旺的前两位'

selectUnameas大名,Uclassas星级frombbsUserswhereuidin(

selecttop2TuIDfrombbsTopicorderbyTclickCountdesc)

--5、年度最差斑竹:版块点击率低于500或主贴等于0--

ifexists(select*frombbsSectionwhereStopicCount=0orSclickCount=500)

begin

print'请以下斑竹加油哦'

selectSnameas版块名称,StopicCountas主贴数量,SclickCountas点击率frombbsSection

whereStopicCount=

0orSclickCount=500

end

简单的BBS数据库设计!

datebbsUserssetUpoint=Upoint+50whereUID=@GTid

--更新用户相应的信息--

updatebbsUserssetUclass=case

whenUpoint500then1

whenUpointbetween500and1000then2

whenUpointbetween1001and2000then3

whenUpointbetween2023and4000then4

whenUpointbetween4001and5000then5

else6

end

--发布主贴和跟贴--

select主贴='心酸果冻',主贴发布时间=convert(varchar(10),Ttime,111),主题=Ttopic,内容=Tcontents

frombbsTopicwhereTID=@@identity

select回帖='可卡因',回帖时间=convert(varchar(10),Rtime,111),回帖内容=Rcontents

frombbsReplywhereRID=@@identity

--星级从新排名--

select妮称=Uname,星级=case

whenUclass=0then''

whenUclass=1then'★'

whenUclass=2then'★★'

whenUclass=3then'★★★'

whenUclass=4then'★★★★'

whenUclass=5then'★★★★★'

else'★★★★★★'

end

,积分=UpointfrombbsUsers

/*删除帖子*/

--声明变量用于存放回帖人编号及主贴ID--

declare@GTidint

declare@BZidint

declare@ZTidint

declare@BKidint

--获得斑竹心酸果冻的编号--

select@BZid=UIDfrombbsUserswhereUname='心酸果冻'

--获得主贴的编号--

select@ZTid=TIDfrombbsTopicwhereTtopiclike'%什么是.Net%'

--获得所有回帖人的编号--

select@GTid=RuIDfrombbsReplywhereRtID=@ZTid

--获得版块编号--

select@BKid=SIDfrombbsSectionwhereSnamelike'%.Net%'

--被删帖的斑竹心酸果冻减去积分100分--

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论