如何在MySQL中存储文章?

时间:2011-02-06 15:04:09

标签: php mysql file text long-integer

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

谢谢!

2 个答案:

答案 0 :(得分:3)

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

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变量反序列化。

答案 1 :(得分:2)

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