一个博客数据库设计问题,关于独立页面的数据库设计

iCrany 发布于 2014/07/28 21:42
阅读 1K+
收藏 2

大家好,最近在一个简单的blog系统,因为之前没有注意到这个独立页面的需求,最近在开发当中遇到了怎么才能够在blog 上面的导航栏中自动识别出相对应的独立页面,然后把这个页面对应的链接填上去(这个独立页面由用户自己创建,由他自己选择我写好的一些模版页面,例如 wordpress 的 用户评论 文章归档 sitemap 等等的一些独立页面)呢?

我是想把这些独立页面都当成是一个文章,内容都按照文章的格式来进行保存,只是显示的时候用不同 界面展示给用户看,打个比方:我现在想写一个后台发表独立页面的功能,假如用户选择了“about”这个模版(该模版用户显示博主的一些个人介绍),然后我把这篇文章保存在 “article” (这是我的数据库保存文章的表名)表中,该页面内容保存之后我该怎么把这个独立页面取出来呢?怎么获取 “about” 独立页面的唯一标志呢?(不要跟我说在“article” 表中留一个字段,该字段用来保存相应的字符串,该字符串标识是“about” 页面还是 “sitemap”页面 或者 根据 文章名来获取  -_- 我会很蛋疼),暂时没有想到一种比较好的设计

我的数据设计:

望大家不吝指教

加载中
0
优雅先生
优雅先生

about、home这些应该归属于栏目。而一个栏目包含一篇或者多篇文章。栏目包含一个属性,标识栏目是独立页面栏目,还是包含多篇文章的栏目。另外每个栏目可以对应一个样式模板,为独立页面栏目设置一套默认样式模板,为非独立页面栏目设置另外一套默认样式模板。用户如果自定义样式模板的话,那就用用户自定义的样式模板。我自己随便想的。

0
iCrany
iCrany

引用来自“优雅先生”的评论

about、home这些应该归属于栏目。而一个栏目包含一篇或者多篇文章。栏目包含一个属性,标识栏目是独立页面栏目,还是包含多篇文章的栏目。另外每个栏目可以对应一个样式模板,为独立页面栏目设置一套默认样式模板,为非独立页面栏目设置另外一套默认样式模板。用户如果自定义样式模板的话,那就用用户自定义的样式模板。我自己随便想的。

感谢你的回答,我想了想,这是我对你的回答的理解,不知道对不对,在 article 表中 添加一个 pid 字段( 某篇 文章的 父文章 解决你所说的 一个栏目 包含多篇文章的问题 ),还有一个 article_type字段(该字段为区分文章是普通的文章 comm,独立页面 page ,还是包含多篇文章的栏目 page_category,在显示的时候都将这里作为导航栏中的元素显示出来),不过我想问的是我怎么获取不同的这些内容,而且可以很好的区分开来呢?例如 我的 article_type = page 的文章有 about contact 这两个独立的页面,有什么设计可以把这两个独立页面拿出来(因为他们的和普通的文章区分只是利用 article_type 这个字段的值,但是这两个独立页面要怎么区分出是 about 还是 contact 呢?)   
优雅先生
优雅先生
另外column栏目表最好对(column_name, column_name)加一个唯一索引。
优雅先生
优雅先生
数据库层面的column_type是比较通用化的设计,即平等对待所有相同类型的栏目,而不会具体区分这个独立页面栏目是about,那个独立页面栏目是contact。 具体区分逻辑属于具体业务逻辑,应该在你的应用程序代码中体现。
优雅先生
优雅先生
我的意思是: 增加一个栏目表: column(id, column_name, column_type),column_type值:1-普通栏目,可包含多篇文章,2-独立页面栏目,比如about栏目 栏目和文章是1-N关系,所以在article表中增加一个column_id字段: article(id, article_name,...,column_id) 栏目的模板样式在这里就不提了。
0
iCrany
iCrany

引用来自“优雅先生”的评论

about、home这些应该归属于栏目。而一个栏目包含一篇或者多篇文章。栏目包含一个属性,标识栏目是独立页面栏目,还是包含多篇文章的栏目。另外每个栏目可以对应一个样式模板,为独立页面栏目设置一套默认样式模板,为非独立页面栏目设置另外一套默认样式模板。用户如果自定义样式模板的话,那就用用户自定义的样式模板。我自己随便想的。

感谢,刚刚又在你的提示基础上想了一种方法,不知道这样设计好不好,就是先将系统添加好一些博客的独立页面模版,然后用户选择不同的独立页面的模版的时候就将这个用户想要创建的页面的 pid 指向 事先初始化好的页面模版的 id ,若有创建多个想同模版的独立页面的话则根据需要进行相对应的处理
0
算法与编程之美
算法与编程之美

可以参考dedecms或wordpress的设计。

dedecms的arctype表中有一个字段ispart,该字段用来标识文章所属栏目的属性,是最终列表栏目,频道封面还是外部链接。

0
算法与编程之美
算法与编程之美
您数据库中tag, article, category这三个实体和关系的设计 可以参考wordpress的设计,会受益匪浅。
iCrany
iCrany
感谢,最近也想看看 wordpress 的数据设计的
0
都市网达
都市网达

引用来自“justin_cn”的评论

您数据库中tag, article, category这三个实体和关系的设计 可以参考wordpress的设计,会受益匪浅。
千万不要参考wordpress,特别是post表,我以前对wordpress做过纯数据库二次开发,就是一个坑。
iCrany
iCrany
它数据库有什么缺点也应该具体指出来的嘛,大家一起评论评论,单纯这样说并不能令人信服
0
iCrany
iCrany

引用来自“优雅先生”的评论

about、home这些应该归属于栏目。而一个栏目包含一篇或者多篇文章。栏目包含一个属性,标识栏目是独立页面栏目,还是包含多篇文章的栏目。另外每个栏目可以对应一个样式模板,为独立页面栏目设置一套默认样式模板,为非独立页面栏目设置另外一套默认样式模板。用户如果自定义样式模板的话,那就用用户自定义的样式模板。我自己随便想的。

引用来自“iCrany”的评论

感谢你的回答,我想了想,这是我对你的回答的理解,不知道对不对,在 article 表中 添加一个 pid 字段( 某篇 文章的 父文章 解决你所说的 一个栏目 包含多篇文章的问题 ),还有一个 article_type字段(该字段为区分文章是普通的文章 comm,独立页面 page ,还是包含多篇文章的栏目 page_category,在显示的时候都将这里作为导航栏中的元素显示出来),不过我想问的是我怎么获取不同的这些内容,而且可以很好的区分开来呢?例如 我的 article_type = page 的文章有 about contact 这两个独立的页面,有什么设计可以把这两个独立页面拿出来(因为他们的和普通的文章区分只是利用 article_type 这个字段的值,但是这两个独立页面要怎么区分出是 about 还是 contact 呢?)   
回复 @优雅先生 : 感谢,今天回来看了下 wordpress 的设计,一个 posts 表中 设定一个 post_type(独立页面-page , 导航条菜单- nav_menu_item 而这个类似于 about contact 就隶属于这个,调整-revision 这个就具体还没有什么体会) , post_parent , menu_order(一个进行导航条显示顺序的字段),正如你所说的是独立页面应该是属于平等地位的,具体应该在 service 层中进行判断,具体实现在编码的时候再去实现,学到很多,再次感谢
优雅先生
优雅先生
不客气
返回顶部
顶部