用MySQL做bbs论坛管理系统实训报告_Mysql 项目实战——论坛管理系统数据库开发...

一、了解需求

论坛,又名BBS(Bulletin Board System),它提供了一块公共的电子白板,每个用户都可以在上面书写,发布信息或者看法。

论坛按不同的主题可以分为许多板块,其分类依据是大多数用户的要求和喜好。每个用户可以阅读别人关于某个主题的看法,也可以将自己的看法贴到论坛中。

论坛系统主要分为5个管理部分,包括用户管理,管理员管理,版块管理,主贴管理,回复帖管理,本系统的功能模块如图所示:

二、绘制表的E-R图

1、用户表的E-R图和管理员表的E-R图

2、板块,主贴,回复帖表的E-R表

三、设计表

论坛管理系统的都放在数据库bbs

CREATE DATABASE IF NOT EXISTS bbs;

USE bbs;

该数据库中一共放5张表,分别是user,admin,section,topic,reply。

3.1 用户表user

CREATE TABLE `user`(

uID INT PRIMARY KEY UNIQUE NOT NULL,

userName VARCHAR(20) NOT NULL,

userPassword VARCHAR(20) NOT NULL,

uSex ENUM('male','female') NOT NULL,

userEmail VARCHAR(20) NOT NULL,

userBirthday DATE NOT NULL,

userClass INT NOT NULL,

userStatement VARCHAR(150) NOT NULL,

userRegDate TIMESTAMP NOT NULL,

userPoint INT NOT NULL

);

DESC `user`;

3.2 管理员表admin

CREATE TABLE admin(

adminID INT PRIMARY KEY UNIQUE NOT NULL,

adminName VARCHAR(20) NOT NULL,

adminPassword VARCHAR(20) NOT NULL

);

DESC admin;

3.3 版块表section

CREATE TABLE section(

sID INT PRIMARY KEY UNIQUE NOT NULL,

sName VARCHAR(20) NOT NULL,

sMasterID INT NOT NULL,

sStatement VARCHAR(150) NOT NULL,

sClickCount INT NOT NULL,

sTopicCount INT NOT NULL

);

DESC section;

3.4 主题帖表topic

CREATE TABLE topic(

tID INT PRIMARY KEY UNIQUE NOT NULL,

tSectionID INT NOT NULL,

tUserID INT NOT NULL,

tReplyCount INT NOT NULL,

tEmotion VARCHAR(20) NOT NULL,

tTitle VARCHAR(20) NOT NULL,

tContents TEXT NOT NULL,

tTime TIMESTAMP NOT NULL,

tClickCount INT NOT NULL,

tLastClick TIMESTAMP NOT NULL

);

DESC topic;

3.5 回复帖表reply

CREATE TABLE reply(

reID INT PRIMARY KEY UNIQUE NOT NULL,

reTopicID INT NOT NULL,

reUserID INT NOT NULL,

reEmotion VARCHAR(20) NOT NULL,

reTitle VARCHAR(20) NOT NULL,

reContents TEXT NOT NULL,

reTime TIMESTAMP NOT NULL,

reCickCount INT NOT NULL

);

DESC reply;

四、设计索引

索引是创建在表上,对数据库中的一列或者多列的值进行排序的一种数据结构,利用索引可以提高查询的速度。

4.1 在section表上建立索引

在论坛系统中,需要通过板块的名称查询该板块下的帖子信息,因此在板块名称上面创建索引

CREATE INDEX idx_section_name ON section(sName);

4.2 在topic表上建立索引

需要根据主贴标题,主贴内容和发帖时间查找帖子信息,因此在这三个字段创建索引

CREATE INDEX idx_topic_title ON topic(tTitle);

CREATE INDEX idx_topic_contents ON topic(tContents);

ALTER TABLE topic ADD INDEX idx_topic_time(tTime);

4.3 在reply表上建立索引

需要通过回帖的时间,回帖标题,回帖主贴id查询回复帖子的内容

CREATE INDEX idx_reply_time ON reply(reTime);

CREATE INDEX idx_reply_title ON reply(reTitle);

ALTER TABLE reply ADD INDEX idx_reply_topicID(reTopicID);

五、设计视图

论坛系统中如果直接查询section表,显示的是板块的标号,和板块的名称,不能直观地显示主贴的标题和发布时间,为了以后查询方便,可以建立一个视图topic_view。

这个视图显示板块的编号,板块的名称,同一板块下的主贴的标题,主贴的内容和主贴的发布时间。

CREATE VIEW topic_view

AS

SELECT s.sID, s.sName, t.tTitle,t.tContents, t.tTime

FROM section s

INNER JOIN topic t

ON s.sID = t.tSectionID;

DESC topic_view;

六、设计触发器

如果从user表中删除一个用户的信息,那么这个用户在topic和reply中的信息必须同时删除

DELIMITER $

CREATE TRIGGER delete_user AFTER DELETE ON `user`

FOR EACH ROW

BEGIN

DELETE FROM topic WHERE tUserID = old.uID;

DELETE FROM reply WHERE reUserID = old.uID;

END $

以上即一个完整的数据库的库表设计系统。

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值