parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

[1/2OFF] Вопрос об организации структуры данных

ConstC 15.01.2004 14:18

Salute, многоуважаемый, All!

==========8<=========
(http://misha.design.ru/hobby/engine.html)
Положение 1: В базе хранится дерево объектов. Каждый объект имеет родителя, таким образом они выстраиваются в древовидную структуру на сайте, и благодаря этому не нужно для каждого объекта хранить полный путь от корня сайта. Если мы изменили у объекта родителя, то и у него и у его детей автоматически изменится полный путь на сайте и нам не нужно ничего больше менять.
==========8<=========
Есть вопрос - в простейшем случае, а сравнивая с приведенной вами структурой - структура таблицы такова:
rubric_id
parent_rubric_id
uri
title
в моем случае в базе хранится полный uri от корня сайта, что естественно, не есть гут ибо избыточно. Вопрос:

1) Ситуация первая: от пользователя получили 2 uri:
uri1=/rubrica_1/rubrica_2/page1/
и
uri2=/rubrica_3/rubrica_4/page1/
- в данной ситуации имеет смысл "парсить" ("сплитить") по символам "/"? Соответственно, разбив нашb полученныt uri, - мы сталкиваемся с тем, что однозначно найти искомый конечный раздел невозможно, т.к. число разделов, у которых поле
uri=page1
в общем случае может быть >=1 и тогда - как обеспечить уникальность?

В добавок к (1) -
2) Автоматически накладывается ограничение на то, что мы не можем ввести (на этапе редактирования данных)
uri=r1/r2/
для какого-нибудь раздела (пример вырожденный, но тем не менее) - ибо, при несуществующем разделе с полем
uri=r1
, дерево не сможет быть нарисовано/выведено.

Формулируя еще раз вопрос - каким образом можно храня только адрес текущего элемента в uri (который не факт, что уникален) найти его родителя.


Заранее спасибо.
Константин.