如何在MySQL中构建一个非常简单博客的表结构?

15

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

我应该如何为此结构化MySQL表格?

我假设由于有博客帖子和评论,我需要为每个新建单独的表格,是这样吗?但那么每个表格需要哪些列,使用什么数据结构,并且应该如何将两个表格连接起来(例如任何外键)?

我没有找到任何关于此类内容的教程,我想要做的事情实际上是为我的用户提供最简单版本的博客。没有标签,没有审核,没有图片,没有花哨的格式等等。只是一个简单的日记类型,纯文本博客,并允许其他用户进行评论。


看起来像是作业。 请问您已经尝试过哪些方法并实现了什么呢? - djadmin
4
@djadmin:请查看我的Stack Overflow历史记录。我绝对不是学生。因为这是一个生产网站,所以我还没有尝试实现任何东西。我不会在正式网站上进行“试错”。我首先找出最佳实现方式,然后再将其实施。这就是我在这里要解决的问题。 - ProgrammerGirl
看看任何现有的博客引擎是如何做的。有很多例子可以参考。 - ceejayoz
1个回答

34

我认为你需要以下表格

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)

所有日期时间字段默认为当前时间,所有身份标识字段都是主键。 帖子详情中的序列字段是为了防止您使用文本类型并选择varchar而将帖子拆分成多个记录。

除此之外,我会查看任何开源博客系统,并查看它们所做的并减去我不需要的部分。

希望这有所帮助。


有趣,谢谢。您能否解释一下为什么建议创建单独的“PostDetails”表,而不是将其列与“Posts”表合并? - ProgrammerGirl
2
两个原因:第一个是解耦数据以建立主/从关系(这样你就不需要在只想要标题时带上可能非常长的帖子),第二个原因是你可能会超出字段容量(如果你使用 varchar,我会这样做,意味着每行有一个固定的最大长度)。总的来说,这只是一个偏好问题,我喜欢尽可能地分离信息。 - Carlos Grappa
11
评论表不应该有一个指向帖子表的整数外键吗?否则,你如何引用哪些评论是针对哪些帖子的? - rybo111
在“PostDetails > PostText”中添加“longtext”是不是一个好主意? - Eugine Joseph
@rybo111 一篇帖子有多个评论,因此您需要创建一个联接表。 - Muizz Mahdy
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接