2011-02-06 88 views
-1

我想在一個mysql表中存儲一些文章(博客文章),這些文章將由更多部分組成(例如:part1,part2 ... part x) 我不知道如何存儲它們.. 我可以將每個部分存儲在文本文件中,或者我如何將它存儲在mysql數據庫中? 什麼字段可以支持這個大小的數據? 我應該如何設計表格來存儲帖子的每個部分? 這將是很好的存儲每個部分在同一個單元格,只是用一個單詞()分開它們,然後用PHP剪切它?如何在MySQL中存儲文章?

謝謝!

回答

1

我建議將一張表「Post」和第二張表格「Post_part」與FK「Post」。在「Post_part」表中,您可以將文本存儲在TEXT類型的列中。

+1

謝謝,我會嘗試這個 – coolboycsaba 2011-02-06 15:17:35

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