Небольшой вопрос о том, как лучше записывать данные о "похожих статьях" в БД

Spear

почемучка
Steamroller
я не смог разобрать код Вовы :(
Народ, помогите мне пожалуйста все-так разобраться с этими.. категориями :( ну не знаю что делать вообще :((

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

Получается делаю массив вида (например, юзер смотрит новости 1,2,3,4):
[0] [1] [123,435,23,543,1234,324]
[1] [2] [3,45,2,5,1,34]
[2] [3] [13,43,3,53,12,3]
[3] [4] [12,43,23,53,3,2]

ну типо того. Это я так схематисчески.
массиве содержится айди новости, и айдишники новостей которые смотрит юзер.
Ну и получается при выведении новости из базы я вытягиваю из массива все категории, у которых категория=обрабатываемому сейчас цмклом айдишнику.

Правилньо мыслю? Правильно будет сделано? Не будет ли слишком большая нагрузка от большого массива, при показе списка из 200 статей?

-~{}~ 08.10.05 05:04:

Народ, есть ещё такая идея6
т.к. мне предложили использовать вариант с хранинием в отдельной таблице соотношения новости к категории, то может мне использовать и первый и второй вариант вместе? :)
То есть - в таблице новостей хранить все категории через двоеточие - этто будет ТОЛЬКО для показа пользователю и формирования ссылки на новости этой категории,

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

Это, конечно, тупой вариант с той стороны что я дважды храню одни и те же данны, но с другой - ВЫХОДА НЕТУ,
посоветуйте, пожалуйста.

-~{}~ 08.10.05 15:42:

народ, так как посоветуете? Использовать оба варианта? Или есть какое-то более удобное решение?
 

mahoro

Новичок
нужен список новостей, в котором для каждой новости будет список ссылок на новости из одной категории?

select n1.title from news n1, news n2, categories_to_news cats
where cats.news_id=n1.id and cats.cat=n2.cat and n2.id in(1,2,3,4,5);

Или что-то в этом духе, если я правильно понял задачу, конечно :)
 
Сверху