数据库设计帮助:文章&评论网站

时间:2010-11-16 21:38:31

标签: database-design

我正在开发一个基本的博客风格的网站,上面有文章和评论。我知道类似的软件已经存在(drupal,joomla),但我喜欢在这种情况下自己动手,而且,这是我学习的方式。 : - )

以下是基本表格详细信息:

表名:用户
目的:有权访问系统的人员的信息 列名
ID
命名
hashed_pa​​ssword
电子邮件
网站
last_login_date
last_login_ip
权限

表名:文章
目的:用户在用户表中发布的文章 列名
ID
标题
users_id
日期
内容

表名:评论
目的:对公众和用户发布的文章的评论 列名
ID
articles_id
comments_authors_id
日期
评论

表名:comments_authors
目的:有关评论文章的人的信息 列名
ID
命名
电子邮件
网站

工作流程
1.)用户从用户表中发布文章 2.)文章写在文章表中 3.)J​​ohn Doe,不是用户,对文章发表评论 4.)约翰的个人信息写在comments_authors上 5.)John的评论写在评论表中。

到目前为止听起来不错。现在考虑一下......

1。)用户表中的用户对文章发表评论 2.)用户的个人信息将写入comments_authors 3.)用户的评论被写入评论表。

问题
现在我们有关于用户的重复信息。 :-(
用户的姓名,电子邮件地址和网站网址存储在users表的comments_authors表中。

这是不正确的设计吗?是否有正确的方法呢? 只有少数用户的系统,可能不用担心 一个拥有数百个用户的系统,这是很多重复的数据。

我非常感谢你的帮助。谢谢!

4 个答案:

答案 0 :(得分:1)

人们竖起重复的数据......它可能是......可能是个问题。如果您正在建立订单输入系统,会计,交易,系统......这是一个大问题。

这是博客评论......可能发生的最坏情况是什么?

在最糟糕的情况下,你有两份副本,只有两份海报...每一个只有一次评论的人。因此,如果您有1000张海报,那么您将有1000行额外的大约100字节的行......哇,你正在咀嚼整个数据库空间的MEGAbyte。

我是否推荐将此数据模型作为模拟模式,不是。我的设计方式有很多不同。但我为非常大规模的企业应用程序设计,这些设计不一定是最容易编程的东西。他们只是表现出色。但在你的情况下,开始编码并不会出现那么少的冗余。

答案 1 :(得分:0)

对于每个新评论,您都可以创建一个具有公共权限但没有密码的新“用户”。使电子邮件地址成为唯一的用户名,您将不会有重复的数据。在评论中,您可以改为使用comments_authors_id user_id。

答案 2 :(得分:0)

也许我不能很好地理解你的设计,但删除comments_authors表并使用users表中的permissions字段判断用户是否被允许不是更好发表文章或只是添加评论。

答案 3 :(得分:0)

我很欣赏反馈和不同的观点。我还在争论采取哪种方法,所以我列出了每种方法的一些专业和概念。有人说服我! : - )

用户表中的用户和评论者
- 专业:少一个表(comments_authors表删除)
- Con:hashed_pa​​ssword,last_login_date和权限列不适用于评论者 - Con:随着表的增长,当用户想要登录时,查询时间会增加

使用comments_authors表的当前设计
- Pro:任何表中没有未使用的列
- Pro:用户想要登录时的查询时间更快 - Con:comments_authors表中的重复用户数据(users表中的#个用户数= comments_authors表中的#个附加行)