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






