下面我们以一个BBS简易论坛的数据库设计为例
来看看设计数据库的步骤:
**(1)收集信息(与该系统有关人员进行交流、坐谈,充分理解数据库需要完成的任务)**
BBS论坛的基本功能:
用户注册和登录:后台数据库需要存放用户的注册信息和在线状态信息;
用户发贴:后台数据库需要存放贴子相关信息,如贴子内容、标题等;
论坛版块管理:后台数据库需要存放各个版块信息,如版主、版块名称、贴子数等;
**(2)标识对象(标识数据库要管理的关键对象或实体)**
实体一般是名词:
用户:论坛普通用户、各版块的版主。
用户发的主贴。
论用户发的跟贴(回贴)。
**(3)标识每个实体的属性(Attribute)**
![2015-08-11/55c96c52a2ce2](http://box.kancloud.cn/2015-08-11_55c96c52a2ce2.png) ![2015-08-11/55c96c648192b](http://box.kancloud.cn/2015-08-11_55c96c648192b.png) ![2015-08-11/55c96c94295c2](http://box.kancloud.cn/2015-08-11_55c96c94295c2.png)
**(4)标识对象之间的关系(Attribute)**
跟贴和主贴有主从关系:我们需要在跟贴对象中表明它是谁的跟贴。
版块和用户有关系:从用户对象中可以根据版块对象查出对应的版主用户的情况。
主贴和版块有主从关系:需要表明发贴是属于哪个版块的。
跟贴和版块有主从关系:需要表明跟贴是属于哪个版块的。
**(5)绘制ER图**
![2015-08-11/BBS——E-R图](http://box.kancloud.cn/2015-08-11_55c96d035b4f3.png)
**(6)将ER图装换为表格**
* 将各实体转换为对应的表,将各属性转换为各表对应的列。
* 标识每个表的主键列,需要注意的是:没有主键的表添加ID编号列,它没有实际含义,用于做主键或外键,例如用户表中的“UID”列,版块表中添加“SID”列,发贴表和跟贴表中的“TID”列
* 在表之间建立主外键,体现实体之间的映射关系 。
**(7)将ER图装换为表格**
![2015-08-11/55c96d7f83066](http://box.kancloud.cn/2015-08-11_55c96d7f83066.png)
![2015-08-11/55c96da4a30b2](http://box.kancloud.cn/2015-08-11_55c96da4a30b2.png)