资源描述
BBS论坛数据库设计
一、需求分析
BBS论坛是一个WEB系统,可以为大家提供一个交流、互动的平台。经过分析,BBS论坛需要实现以下功能:
(1)用户注册和登录,后台数据库需要存放用户的注册信息和在线状态信息;
(2)用户发贴,后台数据库需要存放贴子相关信息,如贴子内容、标题等;
(3)浏览、查找帖子,数据库需要实现查看和查找的功能。
(4)论坛版块管理,后台数据库需要存放各个版块信息,如版主、版块名称、贴子数等。
二、系统设计
根据BBS论坛的功能,设计的基本实体有BBSUser(用户)、BBSTopic(主贴)、BBSReply(回贴)、BBSSection(版块)、。
1、每个实体具有的属性
(1)用户:用户昵称,密码,电子邮件,生日,性别,用户头像,用户等级,用户备注,注册日期,用户状态,用户积分,是否版主。
(2)主贴:所属版块,发贴人,发贴表情,回复数量,标题,正文,发贴时间,点击数,状态,最后回复的用户,最后回复时间。
(3)回贴:回复主贴ID,所在版块ID,回贴人ID,回贴表情,回复内容,回贴时间。
(4)版块:版块ID,版块名称,版主,版块主题,本版格言,点击率,发贴数。
2、各对象间的关系
(1)跟贴和主贴有主从关系:我们需要在跟贴对象中表明它是谁的跟贴。
(2)版块和用户有关系:从用户对象中可以根据版块对象查出对应的版主用户的情况。
(3)主贴和版块有主从关系:需要表明发贴是属于哪个版块的。
(4)跟贴和版块有主从关系:需要表明跟贴是属于哪个版块的。
3、E-R图
BBSUsers
UID
Uname
UEmail
UBirtheday
Usex
UStatement
Uclass
URegDate
UPoint
UState
论坛用户
(BBSUser)
发表
回帖
(BBSReply)
板块
(BBSSection)
主帖
(BBSTopic)
属于
管理
属于
发表
属于
4、将E-R图转换为表
(1)将各实体转换为对应的表,将各属性转换为各表对应的列。
(2)标识每个表的主键列。
(3)在表之间建立主外键,体现实体之间的映射关系。
BBSUser(用户)表
字段名
中文名
类型
能否为空
备注
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
设定默认值,默认不是版主
BBSSession(版块表)
字段名
中文名
类型
能否为空
备注
SID
版块ID
int
否
主键,自定增长
SName
版块名称
varchar
否
唯一值
SMasterID
版主ID
int
否
外键(引用用户表的UID)
SProfile
版块主题
varchar
SStatement
本版留言
varchar
STopicCount
发贴数
int
SClickCoount
点击率
int
BBSTopic(主贴表)
字段名
中文名
类型
能否为空
备注
TID
发贴表ID
int
否
主键自定增长
TSID
所在版块
int
否
外键(引用版块表的SID)
TUID
发贴人
int
否
外键(引用用户表的UID)
TReplyCount
回复数
int
TEmotion
发贴表情
varchar
TTopic
标题
varchar
否
TContents
正文
varchar
否
TTime
发贴时间
datetime
否
TClickCoount
点击率
int
TFlag
状态
int
TLastReplyUseID
最后回复用户ID
外键(引用用户表的UID)
TLastReplayTime
最后回复时间
datetime
BBSReply(跟贴表)
字段名
中文名
类型
能否为空
备注
RID
跟贴表ID
int
否
自定增长
RTID
回复主贴ID
int
否
外键(引用发贴表的TID)
RSID
所在版块ID
int
否
外键(引用版块表的SID)
RUID
发贴人ID
varchar
否
外键(引用用户表的UID)
TEmotion
发贴表情
varchar
RContent
回贴内容
varchar
否
RTime
回贴时间
datetime
否
三、数据库实施
1、创建表
(1)BBSUser(用户)表
CREATE TABLE BBSUser(
UID INT NOT NULL PRIMARY KEY,
UName VARCHAR(10) NOT NULL UNIQUE,
UPassword VARCHAR(20) NOT NULL,
UEmail VARCHAR(20) NOT NULL,
UBirthday VARCHAR(20),
USex INT NOT NULL ,
UHead VARCHAR(20) ,
UStatement VARCHAR(20) ,
URegDate DATEMENT NOT NULL,
UState INT ,
UPoint INT,
UIsSectioner INT
)
(2)BBSSession(版块表)
CREATE TABLE BBSSession(
SID INT NOT NULL PRIMARY KEY,
SName VARCHAR(10) NOT NULL UNIQUE,
SMasterID INT NOT NULL,
SProfile VARCHAR(10) ,
SStatement VARCHAR(10) ,
STopicCount INT ,
SClickCoount INT ,
FOREIGN KEY SMasterID REFRENCES BBSUser(UID)
)
(3)BBSTopic(主贴表)
CREATE TABLE BBSTopic (
TID INT NOT NULL PRIMARY KEY,
TSID INT NOT NULL ,
TUID INT NOT NULL ,
TReplyCount INT,
TEmotion VARCHAR(10),
TTopic VARCHAR(10) NOT NULL,
TContents VARCHAR(10) NOT NULL,
TTime DATETIME NOT NULL,
TClickCoount INT,
TFlag INT ,
TLastReplyUseID ,
TLastReplayTime DATETIME,
FOREIGN KEY TSID REFRENCES BBSSession (SID)
FOREIGN KEY TUID REFRENCES BBSUser(UID)
FOREIGN KEY TLastReplyUseID REFRENCES BBSUser(UID)
)
(4)BBSReply(跟贴表)
CREATE TABLE BBSReply (
RID INT NOT NULL ,
RTID INT NOT NULL ,
RSID INT NOT NULL ,
RUID VARCHAR(10) NOT NULL,
TEmotion VARCHAR(10),
RContent VARCHAR(10) NOT NULL,
Rtime DATETIME NOT NULL,
FOREIGN KEY RTID REFRENCES BBSTopic(TID)
FOREIGN KEY RSID REFRENCES BBSSession (SID)
FOREIGN KEY RUID REFRENCES BBSUser(UID)
)
展开阅读全文