Структура таблиц, выбор правильного алгоритма хранения тем блога

storng

Новичок
Структура таблиц, выбор правильного алгоритма хранения тем блога

Здравствуйте, уважаемые


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

Суть:
Есть список сообщений блога, каждое сообщение (запись в БД) может принадлежать одной или нескольким категориям (к примеру “жизнь”, “садоводство”)

У посетителей будет возможность отображения списка тем той или иной единственной категории.

Т.е. при создании сообщения мы можем отнести его сразу к двум, трём и т.п. категориям, а просматривать посетители смогут выбрав только одну категорию.

Родилась такая идея, сделать две таблицы

1. Таблица сообщений (themes) в примитивном примере строение будет такое

ID сообщения ; Само сообщение


2. Таблица соответствия категорий и сообщений (category)


ID сообщения ; ID категории



Таким образом, при создании сообщения мы добавляем одну запись в таблицу 1, а также любое количество записей в таблицу 2 (добавляем столько записей, сколько категорий у данного сообщения)


Далее, посетитель может выбрать одну категорию для просмотра в ней сообщений, и мы делаем запрос в БД


SELECT * FROM themes WHERE id IN (SELECT id_theme FROM category WHERE id=’1’)



Т.е. получается двойной запрос, и во внутреннем запросе мы получаем очень большую выборку.

Встал вопрос, вообще такая структура хранения тем и категорий логичная?
Насколько большая нагрузка будет при подобном запросе к БД ?
Мне кажется, что это не оптимальный алгоритм, может быть будут у кого-нибудь мысли на этот счет?
 

Splurov

Новичок
Структура хранения логичная.
А вложенный запрос не имеет смысла:
Код:
SELECT t.* FROM themes t, themes_categories tc WHERE tc.category_id = 1 AND t.id = tc.theme_id
 

storng

Новичок
Автор оригинала: Splurov
Структура хранения логичная.
А вложенный запрос не имеет смысла:
Код:
SELECT t.* FROM themes t, themes_categories tc WHERE tc.category_id = 1 AND t.id = tc.theme_id
Спасибо!
 
Сверху