|
|
|
| Ребята, подскажите, пожалуйста, оптимальную структуру для БД форума.
Форум существует уже довольно давно. В нем есть три категории, под каждую категорию заведено по две таблицы: одна с темами, другая с постами. Итого, имеем 6 таблиц. Использование этих таблиц неравномерное. Чаще всего пользуется третья категория. К примеру, соотношение размера таблиц ответов для первых двух категорий и третей категории: 1М к 18М. Разница существенная.
Планируется все эти таблицы сделать архивом, а под новый форум сделать новую структуру. Имеет ли смысл, при таком неравномерном использовании категорий, делать структуру из двух таблиц: таблица тем для всех категорий и таблица ответов для всех категорий? Помогут ли в данном случае индексы (к слову, мало чего в них понимаю, буду благодарна советам)? | |
|
|
|
|
|
|
|
для: quiosque
(16.12.2007 в 10:41)
| | Имеет. Только из трех. Еще добавится таблица категорий (из трех строк).
Индексы "помогают" всегда.
Простые индексы расставляются на столбики, по которым осуществляется поиск и сортировака записей при запросах. В первую очередь - на первичные и чужие ключи (пример: чужой ключ (номер_темы) в таблице ответов, первичный ключ в таблице тем - само собой). На поле даты-времени.
Чтобы ускорить работу с совмещенным таблицами, можно также создать в таблице тем создать составной индекс темы_категорий(номер_категории,id) | |
|
|
|
|
|
|
|
для: Trianon
(16.12.2007 в 13:04)
| | спасибо! | |
|
|
|
|
|
|
|
для: quiosque
(16.12.2007 в 10:41)
| | Обычно для постов и тем создают лишь две таблицы, а под категории выделяют ещё одну таблицу.
>Помогут ли в данном случае индексы (к слову, мало чего в них понимаю, буду благодарна
>советам)?
В чём помочь? | |
|
|
|
|
|
|
|
для: cheops
(16.12.2007 в 13:25)
| | К примеру, создам три таблицы: категории, темы, посты. В таблице тем создам три индекса для каждой категории вида index(cat_id, theme_id, title). В таблице постов: index(theme_id, post_id). Будет ли этого достаточно? Насколько я понимаю, индексы влияют на размер БД. Хотелось бы максимально эффективно использовать место и не утяжелить базу. | |
|
|
|
|
|
|
|
для: quiosque
(16.12.2007 в 15:15)
| | Я бы ещё в таблицу постов добавил бы cat_id - удобнее будет работать. Да, индексы увеличивают размер базы данных, однако увеличивают скорость поиска по ней - по сути вы размениваете ими место на жёстком диске на дополнительную производительность. | |
|
|
|
|
|
|
|
для: cheops
(16.12.2007 в 19:01)
| | Добавить cat_id в таблицу постов - значит денормализовать базу. В принципе - можно.
На практике лучше не делать без достаточного опыта разработки схем БД.
И тогда придется создавать составные индексы с первым полем cat_id, иначе какой смысл вносить это поле? | |
|
|
|
|
|
|
|
для: quiosque
(16.12.2007 в 15:15)
| | >В таблице тем создам три индекса для каждой категории вида index(cat_id, theme_id, title).
Тут нужен один индекс вида (cat_id, theme_id), два простых (theme_id ) и (title)
и возможно один индекс вида (cat_id, title) | |
|
|
|