代码之家  ›  专栏  ›  技术社区  ›  VirtuosiMedia

数据库设计:将日志拆分为多个页面

  •  0
  • VirtuosiMedia  · 技术社区  · 15 年前

    对于将博客条目或页面内容分页的最佳数据库策略是什么,其中一些条目可能是单页,而有些条目可能跨多页?注意:内容应该是类似文章的,而不是项目列表。

    我目前正在考虑的方法是将所有内容存储在单个文本字段中,并使用类似 {pAtHealth} . 在检索时,内容将被页面分隔符分割成一个数组,然后页面将显示适当的索引。这是最好的方法,还是有更好的方法?

    5 回复  |  直到 15 年前
        1
  •  2
  •   Kibbee    15 年前

    我认为你目前的想法是最好的选择。如果您想移动分页符,或者在最初撰写文章时放入分页符,会容易得多。还允许您使用打印页面选项,其中整个文章位于1个字段中。

        2
  •  2
  •   KM.    15 年前

    简单的方法(现在,但稍后您将支付)是将整个文章存储在一个文本字段中,但是您放弃了一些显示控件,因为您可能需要在该文本中放置一些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”行。你可以让应用程序阅读整篇文章,然后只显示它想要的内容。

        3
  •  1
  •   matt b    15 年前

    我认为正确的方法是您提到的:条目应该作为单个条目存储在数据库中,然后您可以使用标记/UI层来确定应该在哪里发生分页或其他格式设置。

    数据库设计不应该受到UI概念的影响,因为您可能会决定更改它们在路上的显示方式,并且需要数据库保持一致。

        4
  •  0
  •   Adam Robinson    15 年前

    你最好把这样的格式留在客户端。让数据库保存您的数据,并让您的应用程序以正确的格式将其呈现给用户。

        5
  •  0
  •   User    15 年前

    在我看来这是一个很好的解决办法。这样,你就可以把你的文章作为一个整体,并有可能在必要的时候将其分页。