您现在的位置:计算机技术学习网 > 技术中心 > WEB编程 > JSP >

自己动手写MiniBBS系列(MVC篇)之数据库设计

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 14:36 点击:

 

自己动手写BBS作为自己学习了一个多月的jsp基础的一个练习吧。算是一个比较完整的Jsp网站了。

本文介绍这个简单BBS的数据库设计部分。

考虑到一个最简单的BBS系统需要的几个实体分别是版块、主题(帖子)、主题回复和用户。

主要逻辑关系是

1.帖子属于版块中

2.回复属于一个帖子

3.用户发布帖子和回复

4.用户对版块,帖子和回复进行管理(按权限)

5.用户对用户进行管理(按权限)

 

因此设计基本的数据库E-R图如下

 

 

最后确定表数量

用户表user

帖子表post

回帖表sub_post

版块表block

帖子回复关系表

版块帖子关系表

版块用户关系表

 

修改

在实际设计中修改了表post 添加了属性last_mod_time 表示此帖子最后修改的时间,从而确定帖子按修改时间从近到久的排列顺序。

也可以使用查询最后一条回帖记录的回帖时间来确定排序,但考虑到查询比较复杂耗时,性价比不高,故采用添加一个属性的方法。

 

讨论

关于数据库设计的一些讨论:

  数据库设计是否一定要满足数据库范式才是最好的呢?

  我发现,当数据库实体间的关系为1:1或者1:N时,不让一定满足了三范式的数据库设计方案才是最好的。相反这种设计还可能产生冗余数据。

例如本系统中的数据库

帖子表(帖子id,帖子信息)

回帖表(回帖id,回帖信息)

帖子回帖关系表(帖子id,回帖id)

 

帖子和回帖是1:N的关系,此时,如果我们将回帖表改成(回帖id,回帖信息,帖子id),我们可以认为回帖信息和对回帖id存在部分函数依赖,即这样的设计是不满足2NF的。也就是说我们将本应该分开的两个关系(回帖、帖子回帖)合并到了一起,但是正是这种合并减少了一部分冗余,并且不会导致删除、插入异常。同时简化了查询。

因此当数据库中存在这种1:N或1:1关系时可以考虑这样的设计方式。虽然不一定满足数据库设计范式,但是却是一个更合理的设计方法

本文出自 “摺扇一路走来” 博客

    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • JSP与Servlet
    • 自己动手写MiniBBS系列(基本篇)之用户登录
    • JSP取当前日期
    • JDBC 入门(一)
    • 打开一个jsp页面默认查询所有数据,调用action
    • 使用JSP标签库验证用户的输入(2)完
    • 自定义JSP标签(tag)浅议
    • WIN98/2000下的jsp服务器
    • JSP内建对象(二)
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1