对博客条目或页面内容进行分页的最佳数据库策略是什么,其中某些条目可能是单个页面,而某些条目可能跨越多个页面?注意:内容将是文章而非项目列表。
我目前正在考虑的方法是将所有内容存储在单个文本字段中,并使用 {pagebreak} 等页面分隔符。检索后,页面分隔符将内容拆分为数组,然后页面将显示相应的索引。这是最好的方法,还是有更好的方法?
答案 0 :(得分:2)
我认为你目前的想法是最好的选择。如果您愿意,可以更轻松地移动分页符,或者在您最初撰写文章时将其放入。还允许您使用打印页面选项,整个文章位于1个字段中。
答案 1 :(得分:2)
简单的方法(现在,但稍后会付费)是将整篇文章存储在一个文本字段中,但是您放弃了一些显示控件,因为您可能需要在该文本中放置一些html。如果你在文本中加入html,如果你改变了网页的外观,你将需要修复大量的数据。这可能不是问题
作为一项规则,我尽量不要将html放入数据库。您可能最好使用XML来定义文章,并将其存储在一个文本字段中,以便您的应用程序可以正确呈现内容以动态的方式。您可以在XML中存储分页符,或者让应用程序在整篇文章中阅读,并根据您当前的外观动态将其拆分。
如果您不想使用XML,可以使用我的“穷人的CMS”架构(如下所示)。与“一个字段中的所有文本”方法相比,它可以让您更好地控制格式。
根据您的问题,这些只是一个疯狂的猜测
表:
Articles
--------
ArticleID int --primary key
ArticleStatus char(1) --"A"ctive, "P"ending review, "D"eleted, etc..
ArticleAuthor varchar(100) --or int FK to a "people" table
DateWritten datetime
DateToDisplay datetime
etc...
ArticleContent
--------------
ArticleID int --primary key
Location int --primary key, will be the order to display the article content, 1,2,3,4
ContentType char(1) --"T"ext, "I"mage, "L"ink, "P"age break
ArticleContentText
------------------
ArticleID int --primary key
Location int --primary key
FormatStyle char(1) --"X"extra large, "N"ormal, "C"ode fragment
ArticleText text
ArticleContentImage
-------------------
ArticleID int --primary key
Location int --primary key
AtricleImagePath varchar(200)
AtricleImageName varchar(200)
您仍然可以将整篇文章放在一个字段中,但如果它包含不同类型的“内容”,则可以将其拆分。
如果您有一篇关于带有示例的PHP代码的文章,那么“一个字段方法”将强制您在文本中放置html以格式化代码示例。使用此模型,您可以存储什么,并让应用程序正确显示它。您可以添加和扩展不同类型,将分页符放入,删除它们。您可以将内容存储在多个“ArticleContentText”行中,每个行代表一个分页符,或者包含指定分页符的“ArticleContent”行。您可以让应用阅读整篇文章,然后只显示它想要的内容。
答案 2 :(得分:1)
我认为正确的方法就是您所提到的:条目应作为单个条目存储在数据库中,然后您可以使用标记/ UI层来确定应该在哪里进行分页或其他格式化。
数据库设计不应受UI概念的影响 - 因为您可能决定改变它们的显示方式,并且您需要数据库保持一致。
答案 3 :(得分:0)
你最好在客户端留下这样的格式。让数据库保存您的数据,您的应用程序以正确的格式将其呈现给用户。
答案 4 :(得分:0)
在我看来,这是一个很好的解决方案。通过这种方式,您可以将您的文章作为一个整体,并且在必要时可以对其进行分页。