【发布时间】:2011-05-11 02:22:42
【问题描述】:
我正在开发一个包含文章和 cmets 的基本博客风格网站。我知道已经存在类似的软件(drupal、joomla),但在这种情况下我更喜欢自己动手,此外,这也是我学习的方式。 :-)
以下是基本的表格详细信息:
表名:用户
用途:有关有权访问系统的人员的信息。
列名:
身份证
名称
哈希密码
电子邮件
网站
上次登录日期
上次登录IP
权限
表名:文章
用途:用户表中人们发表的文章。
列名:
身份证
标题
users_id
日期
内容
表名:cmets
用途:对公众和用户发表的文章的评论。
列名:
身份证
文章ID
cmets_authors_id
日期
评论
表名:cmets_authors
用途:有关对文章发表评论的人的信息。
列名:
身份证
名称
电子邮件
网站
工作流程:
1.) 用户表中的用户发布了一篇文章。
2.) 文章被写入文章表。
3.) John Doe,不是用户,对这篇文章发表评论。
4.) John 的个人信息被写入 cmets_authors。
5.) John 的评论被写入 cmets 表。
到目前为止听起来不错。现在考虑一下……
1.) 来自 users 表的用户对一篇文章进行 cmet。
2.) 用户的个人信息被写入 cmets_authors。
3.) 用户的评论写入 cmets 表。
问题:
现在我们有关于用户的重复信息。 :-(
用户名、电子邮件地址和网站 url 存储在 users 表和 cmets_authors 表中。
这是一个不正确的设计吗?有没有正确的方法呢?
只有少数用户的系统,也许不用担心。
一个拥有数百个用户的系统,嗯,这是很多重复数据。
非常感谢您的帮助。谢谢!
【问题讨论】:
标签: database-design