【问题标题】:How to store an article in MySQL?如何在 MySQL 中存储文章?
【发布时间】:2011-02-06 15:04:08
【问题描述】:

我想在 mysql 表中存储一些文章(博客文章),这些文章将由更多部分组成(例如:part1、part2 ... part x) 我不知道如何存储它们... 我可以将每个部分存储在文本文件中,还是如何将其存储在 mysql 数据库中? 什么字段可以支持这种大小的数据? 我应该如何设计表格来存储帖子的每个部分? 最好将每个部分存储在同一个单元格中,然后用一个单词 () 分隔它们,然后用 php 剪切它?

谢谢!

【问题讨论】:

    标签: php mysql file text long-integer


    【解决方案1】:

    一种常见的设计方法是创建一个“零件”表,例如:

    CREATE TABLE parts (page_id INTEGER, part_name VARCHAR(255), body TEXT);
    

    这将在较低的流量下正常工作。 (在这种情况下,page_id 是“拥有”此部分的页面的外键 - 你可以通过说 natch SELECT * FROM parts WHERE page_id = :some_page_id 来获得给定页面的所有部分)

    随着您的流量增加,引入和组装页面的成本可能会变得非常高,在这种情况下,将正文内容与更大的文本字段分开(如您所建议的那样)并不是一个糟糕的主意。在这个级别上,将哈希直接序列化到数据库列中并让应用服务器的 CPU 首当其冲(而不是数据库服务器)所获得的速度可能是值得的。

    您感兴趣的列类型在“字符串类型的存储要求”下列举:http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

    总结一下,TEXT (64KB) 应该足够大以容纳大多数基本数据。 MEDIUMTEXT (16 MB) 或 LONGTEXT (4096 MB) 如果您的数据明显很大或您预计它会增长。 BLOB、MEDIUMBLOB 或 LONGBLOB(与 *TEXT 类型大小相同),如果您打算从 DB 列进行任何 PHP 变量反序列化。

    【讨论】:

      【解决方案2】:

      我建议一张表“Post”和第二张表“Post_part”,FK 为“Post”。在“Post_part”表中,您可以将文本存储在 TEXT 类型的列中。

      【讨论】:

      • 很高兴为您提供帮助。如果您需要更多帮助,请在此处发表评论。
      猜你喜欢
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 2014-05-23
      • 1970-01-01
      • 1970-01-01
      • 2014-09-23
      • 1970-01-01
      • 2010-11-08
      相关资源
      最近更新 更多