![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Деревья SQL [D5, IB5.x]
User_OKA © (2002-07-04 07:52:00)Прочитал на ibase.ru статью Joe Celco "Деревья SQL". Все красиво получается, когда у потомка один родитель. А как так же красиво описать структуру базы, когда у потомка может быть несколько родителей, причем принадлежать им он может одновременно?
Например, задвижка принадлежит газопроводу, расположенному в колодце, т.е. принадлежит как колодцу, так и газопроводу. Другая задвижка принадлежит только газопроводу. Как быть?
Desdechado (2002-07-04 11:02:00) [21]тогда не иерархия, а списки:
1. газопровод - список колодцев, где проходит
2. газопровод - список задвижек
3. колодец - список задвижек
логика усложняется. деревьев нет, но есть однозначная идентификация связей объектов.
Sergey13 (2002-07-04 10:30:00) [22]2Desdechado © (04.07.02 10:20)
Это работает если есть только один газопровод и колодец (я уже запутался что чему принадлежит 8-). Но когда есть НЕСКОЛЬКО газопроводов, в каждом есть НЕСКОЛЬКО колодцев, в каждом есть НЕСКОЛЬКО задвижек - однозначной иерархии вы не получите.
Desdechado (2002-07-04 10:20:00) [23]задвижка принадл. газопроводу,
газопровод - колодцу (если есть)
вот и вся однозначная иерархия. хочешь найти всех предков - перебирай вверх по дереву
Sergey13 (2002-07-04 09:54:00) [24]2jonik pegas © (04.07.02 08:33)
Идея правильная, но лучше (ИМХО) что бы ссылка на объект всегда была. Т.е. есть таблица с объектами и есть таблица со структурой вхождения этих объетков (т.е. само дерево). Это упрощает работу с данными - не надо постоянно анализировать - объект это или ссылка на него. Я это реализовал (пройдя через этап описанный тобой) и проблем с деревьями не имею - целый лес уже. 8-)
User_OKA (2002-07-04 09:36:00) [25]to jonik pegas
Обязательно попробую.
Однако, с нетерпением жду других предложений или ссылочку на соответствующую литературу.
jonik pegas (2002-07-04 08:33:00) [26]Можно попробовать ввести дополнительное поле типа ссылки (если оно равно идентификатору то это сам обьект,если не равно то это ссылка на другой обьект на который указывает поле ссылки
колодец
задвижка1
газопровод
ссылка на задвижку1
задвижка2
User_OKA (2002-07-04 07:57:00) [27]Статья на ib.demo.ru!...