Как Вы структурировали бы схему DB форума? [закрытый]

Я использовал это в командной строке, чтобы заставить этот цикл давать только один раз ... 0 будет означать цикл навсегда.

convert -loop 1 ani.gif ani.gif
9
задан hakre 15 November 2011 в 11:41
поделиться

6 ответов

Я на самом деле не знаю, почему это сделано, но одна причина, которую я могу вообразить, оптимизирует поиск и извлечение для метаданных сообщения (дата, автор, и т.д.).

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

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

5
ответ дан 4 December 2019 в 08:16
поделиться

Никогда не смотрел в кишках phpBB, но perhap, который это из-за полнотекстового индексирования. Механизм Inno-дб для основной таблицы для разрешения транзакции и что нет. MyIsam для полнотекстового индексирования.

3
ответ дан 4 December 2019 в 08:16
поделиться

С одной стороны, расположение файловой системы большинства реляционных баз данных таково, что хранение больших блоков произвольного текста или данных может замедлить систему. Так как данные обычно хранятся строкой при выполнении поисков, база данных теперь должна перескочить через текстовые поля переменной длины, ища несвязанные поля.

Во-вторых, помещение всего в одной таблице делает его намного тяжелее для добавления к модели данных позже при необходимости в большем количестве данных для каждого thread_id, например.

Разработка схем базы данных хорошо требует некоторого образования. Необходимо запустить с http://en.wikipedia.org/wiki/Database_normalization. Обязательно поймите третью нормальную форму.

3
ответ дан 4 December 2019 в 08:16
поделиться

InnoDB не поддерживает FULLTEXT индексация и MyISAM не поддерживает транзакции.

Не знать phpBB, но вероятно вот почему они разделяют таблицы.

2
ответ дан 4 December 2019 в 08:16
поделиться

Они не хранят текст в той же таблице из-за размера, которого может достигнуть таблица.

Таким образом, даже с очень большим количеством записей, таблица списка потока является маленькой, хорошо индексированная, и это быстро для сканирования его. К тексту получают доступ только при необходимости, с помощью первичного ключа, который быстр также.

Для небольших форумов я думаю, что это не необходимо, так как существует немного кодирования наверху.

1
ответ дан 4 December 2019 в 08:16
поделиться

В дополнение к превосходному ответу Julien довольно распространено переместиться, сообщения к другим потокам (говорят что администратор или модератор). Наличие текста в "таблице сообщения" помогает поддержать это.

1
ответ дан 4 December 2019 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: