【问题标题】:How to structure the tables of a very simple blog in MySQL? [closed]如何在 MySQL 中构建一个非常简单的博客的表? [关闭]
【发布时间】:2023-04-04 17:22:01
【问题描述】:

我想在我现有的一个 LAMP 网站上添加一个非常简单的博客功能。它将与用户现有的个人资料相关联,他们将能够简单地为博客中的每篇文章输入标题和正文,提交时会自动设置日期。他们将被允许随时编辑和删除任何博客文章和标题。该博客将从最近到最旧的顺序显示,一个页面可能有 20 个帖子,上面有适当的分页。其他用户可以在每个帖子上留下 cmets,博客所有者可以删除这些帖子,但不能预先审核。基本上就是这样。就像我说的,非常简单。

我应该如何为此构建 MySQL 表?

我假设由于会有博客文章和 cmets,我需要为每个单独的表格,对吗?但是,每个表中我需要哪些列,我应该使用哪些数据结构,以及我应该如何将两个表链接在一起(例如任何外键)?

我找不到任何类似这样的教程,我想做的是真正为我的用户提供尽可能简单的博客版本。没有标签,没有审核,没有图片,没有花哨的格式等。只是一个简单的日记类型的纯文本博客,有其他用户的评论。

【问题讨论】:

  • 看起来像家庭作业告诉你到目前为止你尝试和实现了什么?
  • @djadmin:看看我在 Stack Overflow 上的历史。我当然不是学生。我还没有尝试实现任何东西,因为这是针对生产站点的。我不在实时站点上进行“反复试验”,我首先找出实现某些东西的最佳方法,然后再实现它。这就是我想弄清楚的。
  • 看看任何现存的博客引擎是如何做到的。有很多例子可以看。

标签: mysql database database-design blogs


【解决方案1】:

我会说您需要以下表格

Posts
  PostID (identity)
  PostTitle (varchar)
  PostDate (datetime)
  Deleted (int)
  OwnerID (int FK to Users)

PostDetails
  PostDetailID (identity)
  PostID (FK to Posts)
  Sequence (int) -> for long posts you order by this
  PostText (text)

Comments
  CommentID (identity)
  Comment (text)
  CommenterID (int FK to Users)
  CommentDate (datetime)
  Deleted (int)

Users
  UserID (identity)
  UserNAme (varchar)
  UserEmail (varchar)
  CreatedDate (datetime)
  Active (int)

所有datetime字段默认为当前时间,所有identity字段都是PK 如果您不使用文本类型并使用 varchar,则帖子详细信息中的序列字段存在,因此您可以将帖子拆分为多条记录。

除此之外,我会查看任何开源博客系统,看看他们做了什么,并减去我不需要的。

希望有帮助

【讨论】:

  • 很有趣,谢谢。您能否解释一下为什么您建议创建一个单独的“PostDetails”表而不是将其列与“Posts”表结合起来?
  • 两个原因:第一个是解耦数​​据以建立主/从关系(因为这样一来,当您只想要标题时,您就不需要带来可能很长的帖子),第二个是您最终可能超出字段容量的事实(可能不是文本字段的问题,但如果您使用 varchar,我会这样做,这意味着您每行有一个固定的最大长度)。总而言之,这只是一个偏好问题,我喜欢尽可能地分离信息
  • 您能解释一下您在答案中的 PostDetails 表中使用的 Sequence (int) 列的用法吗?序列列是做什么用的?
  • 假设您的数据库将 PostText 字段设计为具有最大值的 varchar(例如:4000)。如果您想要一篇超过 4000 个字符的帖子,您需要在表格中输入 2 个条目。拿一个 6500 字符的帖子,前 4000 条记录在第一条记录中,序号为 1,最后 2500 条记录在序号为 2 的第二个字段中,所以当你查询表时,你按序列升序排序,你会得到所有组成帖子的行,并且您不必依赖文本字段,至少在 mssql 中它将在未来消失。文本字段也不会与表数据的其余部分一起存储
  • 评论表不应该有int FK 到帖子表吗?否则你如何引用哪些评论是针对哪些帖子的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-18
  • 2014-05-10
  • 1970-01-01
相关资源
最近更新 更多