Продолжая тему формирования веб-страниц, наполненных релевантными материалами, сегодня расскажу о простейшей физической модели данных для такого проекта.
Нужно всего две таблицы. В первой будут храниться информационные объекты любых типов. Вторая обеспечит связи между объектами. Взгляните на IDEF1X-диаграмму (модель таблиц базы данных), нарисованную в Microsoft Visio:
У каждого объекта есть уникальный идентификатор «obj_id», представленный в виде натурального числа. В таблице «object_object_relationship» предполагается хранение пар идентификаторов из таблицы «object». Одна пара — одна связь между материалами сайта. Чтобы отобразить двустороннюю (взаимную) связь, нужно записать в таблицу «object_object_relationship» две пары, например, «17,39» и «39,17».
Таблица «object_object_relationship» может хранить информацию и о типе связи в поле «relationship_description», например, «is a child of», «is a parent of», «is a previous part of», «is very similar to». Таким образом, можно создавать действительно сложные структуры.
Кстати, посмотрите, что находится на странице это блога «Пример: концептуальная модель данных тренинговой компании» ниже статьи. Там два блока ссылок: нижний просто дает посетителю возможность перейти к следующему или предыдущему материалу (исходя из хронологического порядка), верхний показывает предыдущую и следующую части (некоторые материалы не помещаются в рамки одного поста), а также похожие материалы. Содержимое верхнего блока я прописываю вручную.
Дмитрий Сергеев, 22 года. Разрабатываю сайты на Drupal.
slnc, 04.12.2006 19:48
Еще можно хранить "вес" связи. Наиболее релевантные материалы отображать выше остальных в списке. Тоже неплохо, на мой взгляд, как дополнение.