![]() |
|
Модераторы: LSD |
![]()
|
|
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
Боже, ну чего не понятно?!
Таблица 1 GUID Название Уровень g1 Папа 1 g2 Я 2 g3 Мой брат 2 Таблица 2 child_guid parent_guid g2 g1 g3 g1 Таблица 3 GUID Содержание g11 01 g12 02 g13 03 Таблица 4 child_guid parent_guid g11 g2 g12 g2 g12 g3 g13 g3 Ну и тянем 2-мя JOIN'ами
Добавлено @ 23:09 Вторая таблица будет служить для поиска множества "потомков" млм "родителей". Хотя можно обойтись и без нее, храня "родительский" GUID в Таблице 1 -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| xml |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 21.7.2006 Репутация: нет Всего: нет |
Согласен, чисто реляционные БД - очень неудобный инструмент для работы с иерархическими структурами. Дело не только в ручной идентификации каждой вершины. Поиск вершин по их относительному расположению в SQL-БД сводится к полному перебору дерева. Языковые инструменты также слабоваты. Все сводится к чему-то типа SELECT LEVEL, name FROM employees START WITH name = 'Mary' CONNECT BY PRIOR emp_no = mgr_no Больше подходит XQuery и Zigzag. Последний мне даже кажется более выразительным. Например, то что в XML выглядит так
На Zigzag можно представить
На Zigzag запросы и утверждения, задающие новые связи, выглядят почти одинаково: = A:B A:B = Сравните запросы "найти все вершины с атрибутом a='b'" XQuery
Zigzag
На сколько мне известно для Zigzag и XQuery созданы очень мощные средства индексации, позволяющие обходиться без полного перебора дерева при выполнении запроса. |
||||||||||
|
|||||||||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
Cashey, я, видимо, плохо обьяснил. Ты мне привел в пример структуру дерево, в котором только как для меня, так и для брата, значеник g12 будет одинаковым, т.е. "02". А мне надо хранить в g12 со стороны родителя g2 одно значение(05), а со стороны родителя g3 - другое значение. Если не сложно, загляни в файл-схему приклреплённую к одному из предыдущих постов. Впрочем, её тоже можно понять неверно. a,b,c,d ... - это не значения. Это место для значения. Там должен стоять уникальный идентификатор значения, что-то типа указателя в ЯВУ. Так вот, этот "указатель" должен иметь разные значения, в зависимости от того, каким путём достигли его.
Добавлено @ 18:07 например, по пути 1-3-7 в "с" хранится 21, а по пути 1-2-4-7 в том же "с" "хранится" уже -48. |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
ну так я так и понял и мой пример именно это и реализует. g12 это идентификатор именно значения "02". А "05" это уже другое знаечение и у него должен быть свой уникальный идентификатор, например g15. А вот то какое значение будет у родителя определяется уже в 4-й таблице/ У одного значения никак не может быть одинаковый идентификатор, да и не может быть задачи, которая этого может потребовать. А вот получить различные значения можно определив к одному родителя несколько значений -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
Cashey, ты понял постановку не мою, а Wowa. Я же эту постановку расширил. Потому специально прикрепил схему и описал, что и как.
Я понял. Потому и сказал, что это - не моё. Это, если я правильно понял, nested sets, да? А мне надо более универсальное решение. Впрочем, как мне кажется уж лучше хранения пути не будет ничего Чего-чего? Да ну? |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
skyboy, ты должен понять одну вещь. Значение ВСЕГДА либо одно, либо несколько. Если их несколько, то они ВСЕГДА отличаются друг от друга (т.е. "2", "2", "2" - это все одно значение; а "01", "02", "03" - это 3 разных значения). И здесь не может и не должно быть ничего другого. А вот то, какое из этих значений будет соответсвовать ветвям твоего дерева, при каких-то условиях описывается отдельно.
-------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
Это ты к чему? А 1 - в любой системе счисления = 1? поясни, что ты имел в виду. Если касательно моей задачи, то мне надо разделить граф, как структуру и сами данные, связанные с разными полями. Граф был раньше деревом, но т.к. в нём были полностью идентичные ветви, то я эти ветви "свернул"(как сам сказал
И после этого потерялась уникальность узлов: те данные, которые раньше относились к разным узлам после сворачивания стали относится к одним и тем же. В этом заключалась проблема, и я искал решение, альтернативное запоминанию полного пути. Вот. И всё. |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
я имел ввиду, что единиц может быть сколько угодно, но это все равно останется единица ( я не имею ввиду сложение). Я упорно не могу тебя понять (или понять, чего не понимаешь ты) Тебе достаточно будет хранить только идентификатор родительских ветвей. А зачем весь путь не понимаю, это ты их будешь раскручивать на каждом шаге формирования дерева. А вообще, давай сначало. Тебе надо сформировать свой граф снизу или сверху т.е. от корней или от ветвей? -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
в смысле - я сам себя не понимаю? мне надо храниться не для узлов дерева(точнее, графа), а для каждого хранимого значения.
Граф я формирую сверху. По мере формирования, набираю в эту структуру значения. Вот тут-то мне и приходится(приходилось?) хранить полный путь. Потому как при формировании дерева на узел с условным идентификатором 222 я могу выйти и на втором уровне рекурсии, и на 42, причём, узел будет один и тот же(характеристики, свойственные именно этому узлу будут общие, вне зависимости от уровня рекурсии - уровня графа), но данные в этом узле будут разные. |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
Ну вот ты сам пишешь правильные слова - с условным идентификатором. Я так понимаю, что хоть на 2-м, хоть на 42-м, хоть на 142-м шаге ты выходишь все равно на этот идентификатор? Данные будут разные? Не проблема, а по какому принципу они будут отличатся? -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
Дать тебе ещё ссылки на "правильные слова" вроде "дерево" или "граф"? не совсем "шаг". Это - почти "уровень". С той лишь разницей, что один и тото же узел может иметь одновременно несколько различных значений этого "уровня", те. будет достигаем за различное количество шагов, принимая за точку отсчёта вершину графа. данные-то? а данные - произвольны |
|||
|
||||
| Cashey |
|
||||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
а мне уже показалось, что ты начал понимать то, что я хочу донести
фамилии то пусть будут произвольными, а вот по какому принципу конкретная фамилия должна соответствовать конкретному узлу? т.е почему ? -------------------- библия учит любить ближнего, а камасутра обучает как именно |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 5 Всего: 260 |
если у меня НЕ дерево, а граф(скажем так, направленный: т.е. как такого направления в логике структуры нет, но когда я обрабатываю структуру, я не могу "идти против потока", во время перебора узлов), то в этом графе одного и того же узла можно достигнуть разными "путями"(пройдя через различную последовательность узлов). Так вот, в заваисимости от этого "пройденного" пути, как раз и выбираются те или иные данные.
да я-то понял, что ты хочешь донести. Именно потому уже неоднократно говорил, что это - не то. Ты мне предлагаешь дерево, с однозначной структурой и однозначной привязкой данных. Моя же структура НЕ дерево. Однозначна только изначально. В каждой своей "реализации"(наполнении данными) структура будет(может быть) уже другой. Не кардинально, но значительно: некоторые узлы продублируются, некоторые - отбросятся... |
|||
|
||||
| Cashey |
|
|||
![]() Бессмертный ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
skyboy, у меня складывается впечатление, что идет разговор глухого с немым
-------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
| pythonwin |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2529 Регистрация: 18.4.2006 Где: за компом Репутация: 1 Всего: 36 |
Ничего не понимаю...
|
|||
|
||||
![]()
|
| Правила форума "Общие вопросы по базам данных" | |
|
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |