bbs数据库设计阶段4

合集下载

数据库设计分为以下设计阶段

数据库设计分为以下设计阶段

数据库设计分为以下设计阶段
数据库设计分为以下设计阶段:
1. 需求分析阶段:确定数据库的功能和目标,收集和分析用户需求,明确数据库要存储和处理的数据内容。

2. 概念设计阶段:根据需求分析的结果,进行数据建模,确定实体、属性、关系和约束。

常用的数据建模方法包括实体-关系模型(ER模型)和层次模型。

3. 逻辑设计阶段:将概念设计转化为数据库管理系统(DBMS)支持的数据模型,如关系型数据库模型(如SQL)或面向对象数据库模型。

设计数据库的表结构、字段、索引和关系。

4. 物理设计阶段:根据逻辑设计的结果,确定数据库在物理存储层面上的组织结构,包括表空间、文件组织和存储策略等。

优化和调整数据表的结构和索引,以提高数据库的性能和效率。

5. 安全性设计阶段:设计数据库的访问控制策略,包括用户权限、角色和安全策略。

确保只有授权的用户可以访问数据库,并且能够保护数据库中的数据免受安全威胁。

6. 应用程序接口(API)设计阶段:确定数据库与外部应用程序之间的接口和交互方式,包括数据输入、输出和查询。

设计数据库的存储过程、触发器和函数等,以支持应用程序的功能需求。

7. 性能优化和调整阶段:在数据库的实际运行过程中,根据性能监控和评估结果,进行优化和调整。

包括索引优化、查询优化和数据库配置调整等,以提高数据库的性能和效率。

8. 数据库备份和恢复设计阶段:制定数据库的备份策略和恢复策略,确保数据
库的数据可以及时备份和恢复,以应对可能的故障和灾难情况。

9. 数据库管理和维护阶段:定期监控和维护数据库,包括性能监控、空间管理、数据清理和备份验证等,以确保数据库的稳定和可靠运行。

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论坛管理系统课程设计一、课程目标知识目标:1. 学生能够理解BBS论坛的基本概念,掌握论坛管理系统的功能模块及其工作原理。

2. 学生能够学会使用数据库管理BBS论坛的用户信息、帖子内容及相关数据。

3. 学生能够掌握论坛安全防范措施,了解常见的网络攻击手段及其应对方法。

技能目标:1. 学生能够运用所学知识,设计并实现一个简单的BBS论坛管理系统。

2. 学生能够熟练使用编程语言和数据库技术,完成论坛系统的功能开发和数据处理。

3. 学生能够通过项目实践,提高团队协作和沟通能力,培养解决问题的能力。

情感态度价值观目标:1. 学生通过学习BBS论坛管理系统,培养对网络技术的兴趣,提高信息素养。

2. 学生在学习过程中,树立正确的网络安全意识,关注网络道德规范,遵守国家相关法律法规。

3. 学生能够通过课程学习,认识到团队协作的重要性,培养积极向上的学习态度。

课程性质:本课程为信息技术课程,结合实际项目案例,培养学生的动手操作能力和实际应用能力。

学生特点:初三学生具备一定的计算机操作基础,对网络技术有较高的兴趣,喜欢探索新知识。

教学要求:结合学生特点,注重理论与实践相结合,提高学生的实际操作能力和创新能力。

在教学过程中,关注学生的个体差异,鼓励学生积极参与,培养其独立思考和解决问题的能力。

通过本课程的学习,使学生能够将所学知识应用于实际生活,提高其信息技术素养。

二、教学内容1. BBS论坛概述- 论坛的发展历程- 论坛的基本功能与作用2. 论坛管理系统功能模块- 用户注册与登录模块- 帖子发布与浏览模块- 数据库设计与实现3. 论坛安全与管理- 常见网络攻击手段- 安全防范措施- 数据备份与恢复4. 编程语言与数据库技术- 使用PHP进行论坛系统开发- MySQL数据库的安装与使用- SQL语句编写与应用5. 项目实践与团队协作- 论坛系统功能设计与实现- 团队分工与协作- 项目进度管理与质量控制教学内容安排与进度:第一周:BBS论坛概述、论坛管理系统功能模块第二周:论坛安全与管理、编程语言与数据库技术第三周:项目实践与团队协作(论坛系统设计与开发)第四周:项目展示与总结本教学内容依据课程目标,结合课本知识,注重理论与实践相结合,旨在培养学生的实际操作能力和团队协作能力。

数据库设计流程及各阶段的主要任务

数据库设计流程及各阶段的主要任务

数据库设计流程及各阶段的主要任务数据库设计是软件开发中非常重要的一环,它决定了系统的数据结构、数据存储和数据操作方式。

数据库设计流程主要包括需求分析、概念设计、逻辑设计和物理设计四个阶段,每个阶段都有其独特的任务和目标。

一、需求分析阶段需求分析是数据库设计的第一步,它的主要任务是明确系统的需求和功能。

在这个阶段,我们需要与客户或系统使用者进行沟通,了解他们的需求和期望。

通过与他们的交流,我们可以了解到系统所需要存储的数据类型、数据量以及数据之间的关系。

此外,还需要考虑系统的性能要求、安全性要求和数据一致性要求等。

通过需求分析,我们可以明确系统的功能和数据需求,为后续的数据库设计提供基础。

二、概念设计阶段概念设计是数据库设计的第二步,它的主要任务是建立系统的概念模型。

在这个阶段,我们需要根据需求分析阶段的结果,设计出一个概念模型,用于描述系统中的实体、属性和关系。

概念模型通常采用实体-属性-关系图(ER图)来表示,通过实体和实体之间的关系来描述系统中的数据结构。

在设计ER图时,需要识别出系统中的主要实体、实体的属性和实体之间的关系,同时还需要考虑到实体和关系的约束条件。

通过概念设计,我们可以对系统的数据结构有一个初步的把握,为后续的逻辑设计提供依据。

三、逻辑设计阶段逻辑设计是数据库设计的第三步,它的主要任务是将概念模型转化为逻辑模型。

在这个阶段,我们需要根据概念模型设计出一个符合数据库管理系统要求的逻辑模型。

逻辑模型通常采用关系模型来表示,通过表和表之间的关系来描述系统中的数据结构。

在设计关系模型时,需要将实体和关系转化为表和表之间的关系,同时还需要考虑到表的属性和关系之间的约束条件。

在逻辑设计中,还需要进行数据规范化,将重复的数据和冗余的数据进行处理,以提高数据库的性能和数据的一致性。

通过逻辑设计,我们可以为后续的物理设计提供一个基础。

四、物理设计阶段物理设计是数据库设计的最后一步,它的主要任务是将逻辑模型转化为物理模型。

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)

BBS论坛系统架构设计

BBS论坛系统架构设计

9、为什么“SSH组合”目前比较流行 (1)企业系统都要符合“三层架构”和“MVC架构”的要 求 (2)常规的系统实现在很大程度上取决于开发人员的水平 (3)术特性 Struts/Struts2的主要优点:经典的MVC框架 Spring的主要优点:IoC和AoP(面向对象、面向切面) Hibernate的主要优点:O/R Mapping及以面向对象编程 代替面向关系的数据库访问。 10、“SSH组合”也满足系统架构设计中的三大原则 (1)纵向分层隔离 (2)依赖倒置原则 (3)接口定义和实现分离原则
4本项目的系统架构为ssh框架1strutsspringdwr前台服务2struts2springhibernate后台管理特别适合项目实训教学也就是我倡导的可教学项目当然在功能实现方面没有实现真实项目中的所有功能重点是放在架构实现方面特别是三大框架的相互整合环境搭建等5前台功能演示将进入分类信息版块页面可以发表回复查看信息等方面的功能但在细节方面没有花太多的精力比较粗糙是我自己在07年写的
3、本次讲座以该论坛为原型项目,为什么要采用该项目?
4、本项目的系统架构为SSH框架 (1)Struts +Spring + Hibernate + DWR 前台服务 (2)Struts2 +Spring + Hibernate 后台管理 特别适合项目实训教学(也就是我倡导的“可教学项目” ) 当然在功能实现方面没有实现真实项目中的所有功能 重点是放在架构实现方面,特别是三大框架的相互整合、
5、前台功能演示
将进入分类信息版块页面,可以发表、回复、查看信 息等方面的功能,但在细节方面没有花太多的“精力”( 比较“粗糙”,是我自己在07年写的)。
6、后台功能演示
将进入系统的 后台管理(树形菜 单),可以对人员 信息进行基本的管 理和数据分页显示

bbs论坛系统课程设计

bbs论坛系统课程设计

滨江学院课程设计报告学年学期2011-2012学年第一学期课程名称数据库系统课程设计院系计算机系专业软件工程2008级学号***********姓名童琛指导教师刘生二O一一年十二月三十日一.需求分析1.功能需求:开发bbs论坛系统是为了提供用户一个交流的平台,为广大用户提供交流经验,探讨问题的社区。

既然是一个以用户主导的系统,首先我们将用户划分为三类,游客,一般用户和管理员。

具体用户功能实现如下:游客:只能浏览板块和别人发布的帖子。

一般用户:可以浏览回复别人的帖子,也可自己发布新帖,修改自己的帖子和自己的评论。

浏览方式可使通过板块浏览也可以搜索自己发布的所有帖子。

管理员:管理员能够实现最多的功能,一般用户的功能他都具有,管理员还能创建,删除板块,删除别人的非法帖子,删除用户,删除评论,设置加精置顶帖等功能。

2.系统需求:我们将本论坛系统根据上面的功能需求划分为几个功能块。

登陆模块:该模块用于用户的注册和登陆认证,通过对登陆用户对象的authority属性来给用户返回相应的节目。

浏览帖子模块:用户通过点击自己感兴趣的论坛板块,在里面可以看到该板块里面用户所发布的帖子主题。

帖子详细内容板块:用户通过点击帖子的标题,进入查看帖子的详细内容,也可以看到其他用户对于该帖子的评论和回复。

如果是普通用户的话,也可以对该帖子直接进行回复。

发布和修改帖子模块:用户通过登陆认证后,可以在该板块中发布新帖。

至于帖子的修改功能也是集成到该模块中的,如果要修改帖子,系统先将要修改的帖子加载进来,然后用户在里面修改,修改完之后再重新发布。

管理员模块:该模块主要实现管理员的功能,实现删除帖子,删除评论,删除用户,创建板块删除板块等日常管理维护管理功能。

二.系统概念结构设计1用户e-r图2.3.评论e-r图4.板块e-r图5.实体e-r图三.系统逻辑结构设计1.登陆模块设计2.浏览帖子模块设计3.发布帖子模块4.管理员模块管理员登陆板块管理用户管理帖子管理创建和删除板块删除用户删除帖子四.界面设计1.登录界面主要代码:<s:form action="Login.action" method="post"><s:textfield name="username" label="用户名"></s:textfield><s:password name="pwd" label="密码"></s:password><s:submit value="登陆"></s:submit><s:hidden name="type" value="addUser"></s:hidden><a href="register.jsp">注册</a></s:form><table border=1><%User user=new User();session.setAttribute("user",user);Cateqoryimpl cq = new Cateqoryimpl();List<Cateqory> cateqorys = cq.queryAllCateqory();List<String> cateqorynames=new ArrayList();Iterator<Cateqory> it = cateqorys.iterator();int counts = 0;int left = 0;int right = 0;while (it.hasNext()) {counts++;Cateqory cat = null;cat = it.next();cateqorynames.add(cat.getCateqoryname());if ((counts % 3) == 1) {left++;out.print("<tr>");}out.print("<td>");%><ahref="CateqoryShow?type=show&cateqoryid=<%=cat.getCateqoryid()%>"><%=cat.getCateqory name()%></a><%out.print("</td>");if ((counts %3) == 0) {right++;out.print("</tr>");}}%><%session.setAttribute("cateqorynames",cateqorynames);%>2.注册界面主要代码:<s:form action="register"><s:textfield name="username" label="用户名"></s:textfield><s:password name="pwd" label="密码"></s:password><s:password name="repwd" label="密码确认"></s:password><s:radio list="#{1:'男',0:'女'}" name="sex" label="性别"></s:radio><s:textfield name="email" label="E-mail"> </s:textfield><s:hidden name="type" value="addUser"></s:hidden><s:submit value="提交"></s:submit></s:form>3.管理员界面主要代码:<%User user=(User)session.getAttribute("user");%>欢迎<%=user.getUsername()%>登陆<a href='register?type=queeryAll'>用户管理</a><a href="CateqoryShow?type=controlinit">板块管理</a><a href="UserArticle?userid=<%=user.getUserid()%>&type="queeryAll"">我的帖子</a> <a href="addArticle.jsp">发新帖</a><table border=1><%Cateqoryimpl cq = new Cateqoryimpl();List<Cateqory> cateqorys = cq.queryAllCateqory();Iterator<Cateqory> it = cateqorys.iterator();int counts = 0;int left = 0;int right = 0;while (it.hasNext()) {counts++;Cateqory cat = null;cat = it.next();if ((counts % 3) == 1) {left++;out.print("<tr>");}out.print("<td>");%><ahref="CateqoryShow.action?type=show&cateqoryid=<%=cat.getCateqoryid()%>"><%=cat.getCa teqoryname()%></a><%out.print("</td>");if ((counts % 3) == 0) {right++;out.print("</tr>");}}if (right < left) {out.print("</tr>");}%></table>4.发布帖子:主要代码:<s:form action="UserArticle"><s:textfield name="articlename" label="主题" cols="50"></s:textfield><s:select list="#session.cateqorynames" name="cateqoryname" label="板块"></s:select> <s:textarea name="article" label="内容" cols="50" rows="15"></s:textarea><s:hidden name="type" value="addArticle"></s:hidden><s:submit value="提交"></s:submit></s:form>5.管理员管理帖子:<%User user = (User) session.getAttribute("user");%><h1><s:property value="cat.cateqoryname"/></h1><table><tr><td>主題</td><td>日期</td><td>作者</td><%if (user.getAuthority() == 1) {%><td>操作</td><%}%></tr><s:iterator value="articles" id="art"><tr><td><s:if test="%{#art.leavel==3}"><font color="red">置顶</font></s:if><s:if test="%{#art.leavel==2}"><font color="yellow">精</font></s:if><a href='contentshow.action?articleid=<s:property value="articleid"/>'><s:property value="articlename"/></a></td><td ><s:property value="publishtime"/></td><td ><s:property value="userid"/></td><%if (user.getAuthority() == 1) {%><td><a href='UserArticle?type=deletebysup&articleid=<s:property value="articleid"/>'>删除</a><s:if test="%{#art.leavel==3}"><a href='UserArticle?type=setleavel&leavel=0&articleid=<s:property value="articleid"/>'>取消置顶</a></s:if><s:if test="%{#art.leavel==2}"><a href='UserArticle?type=setleavel&leavel=0&articleid=<s:property value="articleid"/>'>取消精华</a></s:if><s:if test="%{#art.leavel==0}"><a href='UserArticle?type=setleavel&leavel=2&articleid=<s:property value="articleid"/>'>加精</a><a href='UserArticle?type=setleavel&leavel=3&articleid=<s:property value="articleid"/>'>置顶</a></s:if></td><%}%></tr></s:iterator></table>以上是一些主要的页面,还有一些页面就不一一贴出了,一共有11张界面五.数据库表结构创建的SQL语句代码Comments表:用于存放文章回复的信息CREATE TABLE `comments` (`commentsid` int(8) NOT NULL AUTO_INCREMENT,`articleid` int(8) DEFAULT NULL,`comments` varchar(255) DEFAULT NULL,`publishtime` date DEFAULT NULL,PRIMARY KEY (`commentsid`),KEY `articleid` (`articleid`),CONSTRAINT `comments_ibfk_1` FOREIGN KEY (`articleid`) REFERENCES `article` (`articleid`) ON DELETE CASCADE)User表:用来存放用户信息CREATE TABLE `user` (`userid` int(8) NOT NULL AUTO_INCREMENT,`username` varchar(20) DEFAULT NULL,`pwd` varchar(20) DEFAULT NULL,`authority` int(1) DEFAULT '3',`email` varchar(20) DEFAULT NULL,`sex` int(1) DEFAULT NULL,`registertimer` date DEFAULT NULL,PRIMARY KEY (`userid`))Article表:帖子表主要用来存放帖子信息CREATE TABLE `article` (`userid` int(8) DEFAULT NULL,`articleid` int(8) NOT NULL AUTO_INCREMENT,`article` varchar(255) DEFAULT NULL,`articlename` varchar(20) DEFAULT NULL,`publishtime` date DEFAULT NULL,`cateqoryid` int(8) DEFAULT NULL,PRIMARY KEY (`articleid`),KEY `userid` (`userid`),KEY `cateqoryid` (`cateqoryid`),CONSTRAINT `article_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `user` (`userid`) ON DELETE CASCADE,CONSTRAINT `article_ibfk_2` FOREIGN KEY (`cateqoryid`) REFERENCES `cateqory` (`cateqoryid`))Category表:用来存放板块信息CREATE TABLE `cateqory` (`cateqoryid` int(8) NOT NULL AUTO_INCREMENT,`userid` int(8) DEFAULT NULL,`cateqoryname` varchar(20) DEFAULT NULL,PRIMARY KEY (`cateqoryid`),KEY `userid` (`userid`),CONSTRAINT `cateqory_ibfk_1` FOREIGN KEY (`userid`) REFERENCES `user` (`userid`)六.设计小结通过本系统的设计,是我能够熟练的将数据库知识运用到系统开发中。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BBS数据库设计阶段4
1.上机目标:
利用子查询语句,完成论坛的年度评估。

最后综合T-SQL应用,实现论坛的发贴、回贴及删贴。

使用子查询IN/EXISTS实现论坛的年度评选
T-SQL语句的综合应用实现论坛的发贴、回贴和删贴
2.训练技能点
会使用子查询IN/EXISTS
T-SQL语句的综合应用
3.上机步骤:
(1)使用T-SQL语句实现论坛年度评估:
论坛人气评估:论坛总点击率>1000,为“人气熊旺旺”;否则就为“一般般”
年度品牌版块:主贴量最多的版块。

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

年度回贴人气最旺奖:回贴的点击率排名前2名。

年度业绩最差版主:版块点击率低于500或主贴量等于0 。

参考代码:
USE bbsDB
GO
SET NOCOUNT ON
print'--->>>>>>>>>>>>各位大虾注意了,本论坛即将发布年度无记名评奖<<<<<<<<<<<<<<<<<<<<--'
--评估总体人气:如果论坛总点击率>1000,人气较旺
IF(SELECT SUM(SclickCount)FROM bbsSection)>1000
print'论坛人气年度评估:熊旺旺,大家辛苦了!'
品牌版块
年度倒胃版块
年度回贴人气最旺会员年度业绩最差版主
ELSE
print'论坛人气年度评估:一般般,大家加油啊!'
--评选品牌版块和倒胃版块:根据主帖数量评估
print'年度品牌版块:'
SELECT版块名称=Sname,主帖数量=StopicCount,简介=Sprofile FROM bbsSection WHERE StopicCount=(SELECT MAX(StopicCount)FROM bbsSection)
print'年度倒胃版块:'
SELECT版块名称=Sname,主帖数量=StopicCount,简介=Sprofile FROM bbsSection WHERE StopicCount=(SELECT MIN(StopicCount)FROM bbsSection)
--评选回贴人气最旺的前两名作者
print'年度回贴人气最IN的前两名获奖作者:'
SELECT大名=Uname,星级=Uclass FROM bbsUsers
WHERE UID IN(SELECT TOP2 TuID FROM bbsTopic ORDER BY TclickCount DESC)
--评选最差版主:如果存在发帖量为的板块,列出对应的版块和版主信息
IF EXISTS(SELECT*FROM bbsSection WHERE StopicCount=0 OR
SclickCount<=500)
BEGIN
print'请下列版块的斑竹加加油哦!'
SELECT版块名称=Sname,主帖数量=StopicCount,点击率=SclickCount FROM bbsSection
WHERE StopicCount=0 OR SclickCount<=500
END
GO
(2)假定心酸果冻在“.NET技术”版块发主贴。

怯怯的问:“什么是.NET啊?”贴的内容为“我靠!微软的.NET广告超过半个北京城啊。

”要求使用T-SQL实现以下业务规则。

用户发主贴后,需要更新相应版块(.NET技术版块)的主贴数,主贴数+1
用户发主贴后,酌情加分:如果主贴是新题(别人没提及过),加100分,否则加50分用户积分添加后,更新用户的相应等级
在论坛上发布用户(心酸果冻)的新贴
所有用户的等级重新排名
提示1:
心酸果冻的新贴心酸果冻发贴后新的等级排名
提示2:单击菜单“工具”/”选项”命令,选择查询结果,将显示结果的默认方式选择为“以网格显示结果”,执行后的输出结果如上图所示。

参考代码:
/*--发主贴:
心酸果冻在.Net技术版块发贴:
怯怯的问:什么是.Net啊?
微软的.Net广告超过半个北京城啊。

--*/
DECLARE @userID varchar(10),@sID INT--定义变量存放用户编号和版块编号SELECT @userID=UID FROM bbsUsers WHERE Uname='心酸果冻'--获取心酸果冻的用户编号
SELECT@sID=SID FROM bbsSection WHERE Sname LIKE'%.Net技术%'----获取.Net 版块的编号
--插入主贴表
INSERT INTO bbsTopic (TsID,TuID,Tface,Ttopic,Tcontents)
VALUES(@sID,@userID,3,'什么是.Net啊?','微软的.Net广告超过半个北京城啊。

) --更新版块表:.Net技术版块主贴数+1
UPDATE bbsSection SET StopicCount=StopicCount+1 WHERE SID=@sID
--更新用户的积分:如果是新主题,则积分增加,否则增加
IF NOT EXISTS(SELECT*FROM bbsTopic
WHERE Ttopic LIKE'什么是.Net啊?'AND TuID<>@userID) UPDATE bbsUsers SET Upoint=Upoint+100 WHERE UID=@userID
ELSE
UPDATE bbsUsers SET Upoint=Upoint+50 WHERE UID=@userID
---更新用户的积分后,更新相应的级别
UPDATE bbsUsers
SET Uclass=CASE
WHEN Upoint <500 THEN 1
WHEN Upoint BETWEEN 500 AND 1000 THEN 2
WHEN Upoint BETWEEN 1001 AND 2000 THEN 3
WHEN Upoint BETWEEN 2001 AND 4000 THEN 4
WHEN Upoint BETWEEN 4001 AND 5000 THEN 5
ELSE 6
END
WHERE UID=@userID
--对外公告心酸果冻的发贴
SELECT发贴作者='心酸果冻',发贴时间=convert(varchar(10),Ttime,111),主题=Ttopic,内容=Tcontents FROM bbsTopic WHERE TID=@@IDENTITY
--显示目前的最新排名
SELECT昵称=Uname,星级=CASE
WHEN 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
GO
(3)假定可卡因回复主贴:“什么是.NET啊?”,笑呵呵的回复道:“.NET是微软力推的企业级信息网络共享平台。

”要求使用T-SQL实现以下业务规则。

用户回贴后,需要更新对应主贴的信息:回复数量+ 1,点击率+1。

用户回贴后,还需要更新对应版块的点击率,点击率+1。

用户回贴后,酌情加分:如果是该贴的第一回贴人(即第一个回贴的),加100分;否则加50分。

用户积分添加后,更新用户的相应等级(等级规则参考阶段3)。

在论坛上发布主贴和跟贴。

论坛用户星级重新排名。

相关文档
最新文档