Database design DB设计帮助:文章和;评论网站

Database design DB设计帮助:文章和;评论网站,database-design,Database Design,我正在开发一个基本的博客风格的网站,上面有文章和评论。我知道类似的软件已经存在(drupal、joomla),但我更喜欢在这种情况下使用自己的软件,此外,这也是我学习的方式。:-) 以下是基本的表格详细信息: 表名:用户 目的:有关可以访问系统的人员的信息。 列名: id 名称 哈希密码 电子邮件 网站 上次登录日期 上次登录\u ip 权限 表名:文章 目的:用户表中人员发布的文章。 列名: id 标题 用户id 日期 内容 表名:注释 目的:对公众和用户发表的文章的评论。 列名: id

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

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

表名:用户
目的:有关可以访问系统的人员的信息。
列名
id
名称
哈希密码
电子邮件
网站
上次登录日期
上次登录\u ip
权限

表名:文章
目的:用户表中人员发布的文章。
列名
id
标题
用户id
日期
内容

表名:注释
目的:对公众和用户发表的文章的评论。
列名
id
文章编号
评论作者id
日期
评论

表名:注释\u作者
目的:关于评论文章的人的信息。
列名
id
名称
电子邮件
网站

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

到目前为止听起来不错。现在考虑这个…

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

问题
现在我们有了关于用户的重复信息:-(
用户名、电子邮件地址和网站url存储在用户表和评论作者表中。

这是一种不正确的设计吗?有没有正确的替代方法?
只有少数用户的系统,可能不需要担心。
一个有数百个用户的系统,那么,这是大量重复数据。


非常感谢您的帮助。谢谢!

对于每一条新评论,您可以创建一个具有公共权限且无密码的新“用户”。将电子邮件地址设置为唯一的用户名,这样您就不会有重复的数据。在评论上,您可以改为发表评论。\u authors\u id user\u id。

对于每一条新评论,您可以使用p创建一个新的“用户”public priv,无密码。将电子邮件地址设置为唯一的用户名,这样您就不会有重复的数据。在评论上,您可以发表评论\u authors\u id user\u id。

也许我不太了解您的设计,但删除
comments\u authors
表并使用
权限不是更好吗在你的用户表中删除,告诉用户是否允许发布文章或只是添加评论。

也许我不太了解你的设计,但是删除
评论\u authors
表并使用你的用户表中的
permissions
字段告诉用户是否允许发布arti,不是更好吗或者只是添加评论。

人们喋喋不休地重复数据……这可能……也可能是个问题。如果你在建立订单录入系统、会计、交易、系统……这会带来很大的麻烦

这是博客评论…最糟糕的情况是什么

最糟糕的情况是,你有两份海报,只有两份海报…每个只发表评论的笨蛋只有一次。因此,如果你有1000张海报,你会有1000多行,大约100字节的行…哇,你正在占用整个兆字节的数据库空间


我是否建议将此数据模型作为一种模拟模式,不。我的设计会有很大的不同。但我为非常大规模的企业应用程序设计,这些设计不一定是最容易编程的。它们只是性能很好。但在您的情况下,开始编码,不要担心那一点冗余。

人们会这么做重复数据…这可能是…可能是个问题。如果你在建立订单输入系统,会计,交易,系统…这是一件大事

这是博客评论…最糟糕的情况是什么

最糟糕的情况是,你有两份海报,只有两份海报…每个只发表评论的笨蛋只有一次。因此,如果你有1000张海报,你会有1000多行,大约100字节的行…哇,你正在占用整个兆字节的数据库空间


我是否建议将此数据模型作为一种模拟模式,不。我的设计会有很大的不同。但我为非常大规模的企业应用程序设计,这些设计不一定是最容易编程的。它们只是性能很好。但在您的情况下,开始编码,不要担心那一点冗余。

我欣赏反馈和不同的观点。我仍在争论采取哪种方法,所以我列出了每种方法的一些赞成和反对意见。有人说服了我!:-)

用户和评论者都在用户表中
-赞成:少了一张表(删除了评论和作者表)
-缺点:哈希密码、上次登录日期和权限列不适用于评论者
-缺点:随着表的增长,当用户想要登录时,查询时间会增加

使用注释的当前设计\u作者表
-Pro:任何表中都没有未使用的列
-优点:当用户想要登录时,查询时间更快

-缺点:评论作者表中存在重复的用户数据(#用户表中的用户=#评论作者表中的其他行)

我感谢您的反馈和不同观点。我还是很兴奋