个人博客的数据库设计?

gqqnb 2010-07-28 07:15:30
我的博客要求能“留言回复博文,留言回复留言”。
网友提示说见两个表——博文表和留言表。那我不清楚具体怎么设计。
因为“留言回复博文,留言回复留言”类似一种树结构,我想
留言表:
1、id,主键
2、replyArtical,可以为null。如果是回复博文,此处是博文的id
3、replyComment,可以为null。如果是回复评论,此处是父评论的id

可如果这样,程序代码似乎不好写。先select replyArtical=博文id的行,再遍历数据集合,select replyComment=该commentId的评论……是一种递归。select的次数很多。

或者
1、id,主键
2、replyArtical,被回复博文的id
3、replyComment,可以为null。如果是回复评论,此处是父评论的id

这样的话,先select select replyArtical=博文id的行,在返回的数据集合中,根据replyComment构建评论的父子关系。但数据库体积增加了,很明显一条评论属于哪篇博文,能由replyComment唯一确定,replyArtical是冗余。


请问哪种方式更好呢?或提出您认为更好的方案。或者有更好的sql语句来完成第一种方式?
...全文
507 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gqqnb 2010-07-30
  • 打赏
  • 举报
回复
类似http://it.solidot.org/comments.pl?threshold=0&mode=nested&commentsort=0&op=Change&sid=20468
我认为同是回复,当然该放在一个表中
gqqnb 2010-07-30
  • 打赏
  • 举报
回复
类似http://it.solidot.org/article.pl?sid=10/07/25/1125218
我认为同是回复,当然该放在一个表中
pt1314917 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 gqqnb 的回复:]
引用 1 楼 pt1314917 的回复:

个人认为拆开成两个表。
留言表
留言ID 留言内容 留言时间 留言人...

回复表
回复ID 回复内容 留言ID 回复时间 回复人...

我不限制回复级别。如你这样的设计解决不了问题,回复回复的内容该怎么表示呢?
第一级的留言放在你的留言表里,第二级的留言放在你的回复表里,那第三级、第四级呢?
[/Quote]
类似QQ空间那样?相应的回复显示在后面就好了。比如:
留言表:
id 内容 ...
1 aaa

回复表
id 回复 留言id
1 bb 1
2 cc 1
3 dd 1
------
看你的情况了。如果显示时要区分到底是哪个回复的回复,就再在回复表加个父id,如果不需要的话,只是盖楼的那种显示。我觉得这样就可以了。
gqqnb 2010-07-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pt1314917 的回复:]

个人认为拆开成两个表。
留言表
留言ID 留言内容 留言时间 留言人...

回复
回复ID 回复内容 留言ID 回复时间 回复人...
[/Quote]
我不限制回复级别。如你这样的设计解决不了问题,回复回复的内容该怎么表示呢?
第一级的留言放在你的留言表里,第二级的留言放在你的回复表里,那第三级、第四级呢?
pt1314917 2010-07-28
  • 打赏
  • 举报
回复
个人认为拆开成两个表。
留言表
留言ID 留言内容 留言时间 留言人...

回复表
回复ID 回复内容 留言ID 回复时间 回复人...

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧