Как сохранить статью в MySQL? - PullRequest
0 голосов
/ 06 февраля 2011

Я хотел бы сохранить некоторые статьи (сообщения в блоге) в таблице MySQL, эти сообщения будут состоять из нескольких частей (например: часть 1, часть 2 ... часть x) Я не знаю, как их хранить ... Могу ли я сохранить каждую часть в текстовом файле, или как я могу сохранить ее в базе данных MySQL? Какое поле может поддерживать данные такого размера? И как мне спроектировать таблицу для хранения каждой части поста? Было бы хорошо сохранить каждую часть в одной ячейке и просто разделить их словом (), а затем вырезать с помощью php?

Спасибо!

Ответы [ 2 ]

3 голосов
/ 06 февраля 2011

Обычный метод проектирования - создать таблицу «Parts», например:

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

, которая будет хорошо работать при меньшем трафике.(page_id в данном случае - это внешний ключ к странице, которая «владеет» этой частью - вы получите все части для данной страницы, сказав: natch SELECT * FROM parts WHERE page_id = :some_page_id)

По мере роста трафика стоимостьизвлечение и сборка страниц могут стать вопиющими, и в этом случае разделение содержимого тела от более крупного текстового поля (как вы предложили) не будет ужасной идеей.На этом уровне выигрыш в скорости от прямой сериализации хэша в столбец базы данных и от того, что центральный процессор сервера приложений несет основную нагрузку на работу (в отличие от сервера БД), может стоить того.

Типы столбцов, которые могут вас заинтересовать, перечислены здесь в разделе «Требования к хранилищу для строковых типов»: http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

Суммировано, TEXT (64 КБ) должен быть достаточно большим, чтобы вместить большинство основных данных.MEDIUMTEXT (16 МБ) или LONGTEXT (4096 МБ), если ваши данные заметно велики или вы прогнозируете их рост.BLOB, MEDIUMBLOB или LONGBLOB (такие же размеры, как у типов * TEXT), если вы собираетесь выполнять десериализацию любой переменной PHP из столбцов БД.

2 голосов
/ 06 февраля 2011

Я бы предложил одну таблицу "Post" и вторую таблицу "Post_part" с FK для "Post".В таблице «Post_part» вы можете хранить текст в столбце типа TEXT.

...