powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Какой петерн выбрать для сохранения дерева в БД
25 сообщений из 30, страница 1 из 2
Какой петерн выбрать для сохранения дерева в БД
    #35735055
Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужно выбрать правильный путь для сохранения N-Дерева в СУБД. Дерево состоит из разных объектов и представляет собой иерархию структур и членов этих структур. В последствии это всё отоброжается таблицами и их полями в ДБ. А само дерево это методанные, которые помогают создавать запросы и описывают всю глобальную структуру таблиц.

Кроме того должна существовать возможность менять дерево (а именно структур таблиц) и дерево всего 100% должно соответсвовать тому, что есть БД.


Вопрос в том как лучше представить дерево и выбрать петерн для его сохранения.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735062
regom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное, выгнали из форума по проектированию баз данных?
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735074
Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тут вопрос не в базах данных, а именно в предсталении этой структуры например на С++ или C# не важно, главное это какой выбрать патерн для этого.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735123
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не в тему
вы не фреймворк делаете случаем?
С уважением, Naf
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735179
Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пытаюсь оптимизировать существующие глюки)
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735228
Naf
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не знаю вашей системы, но мне показалось что это в некотором смысле именно фреймворк
я тоже хочу создать нечто подобное, есть по крайней мере набор идей
С уважением, Naf
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735262
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Creator...N-Дерева в СУБД..
Какой смысл ты вкладываешь в термин N-Дерево?
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735313
Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

У структуры есть вершина (root) и у неё есть дочернии структуры их может быть N и дочерние члены разных примитивных типов (строки числа и тд). Понятное дело что у этих структур тоже может быть свои подструктуры.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735375
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так бы и сказал - дерево.

Ну вот тебе один вариант архитектуры (на server-side)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SQL> create table tree_map(
 id number primary key,
 parent_id number,
 meta xmltype
 );

Table created.

id и parent_id обеспечивают иерахрию, meta - позволит сериализировать любой тип.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735628
Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уточните пожалуйста как это реализованно в приложении.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735675
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А никак не реализовано. Считай, что это мозговой штурм.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735711
Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Я бы предложил создать один класс который выполняет построение дерева, и предостовляет другим классам только интерфейс к элементу дерева ( например структуре ) при этом информацию через интерфейс можно только читать.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735822
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не возражаю.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735966
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Creator пишет:

> Вопрос в том как лучше представить дерево и выбрать петерн для его
> сохранения.

Предлагаю использовать паттерн INSERT. По-моему, самый подходящий.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35735967
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Creator пишет:
> Пытаюсь оптимизировать существующие глюки)
Глюки надо стирать в корзину, а не оптимизировать.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35736068
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CreatorУ структуры есть вершина (root) и у неё есть дочернии структуры их может быть N и дочерние члены разных примитивных типов (строки числа и тд). Понятное дело что у этих структур тоже может быть свои подструктуры.оч похоже на паттерн компоновщик wikipediaКомпоновщик (англ. Composite pattern) — шаблон проектирования, объединяет объекты в древовидную структуру для представления иерархии от частного к целому. Компоновщик позволяет клиентам обращаться к отдельным объектам и к группам объектов одинаково.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35736070
нёё
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
смею предположить, речь идёт об организации кода клиента: ORM, Active record.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35736107
Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компоновщик это очень близко, проблема в том что хочется все операции по работе с бд , передать другому объекту, для того чтобы не внедрять sql код в классы которые по сути отвечают за описание мета данных, и при этом иметь возможность менять структуру этого дерева с возможностью отката, при возниконовении ошибок при изменении структуры таблиц.

Что то похожее описывает Ларман с 329

Saving objects in a relational database is a very general task for which
many classes need support. Placing these responsibilities in the Sale class
suggests there is going to be poor reuse or lots of duplication in other classes
that do the same thing.
Thus, even though Sale is a logical candidate by virtue of Information Expert to
save itself in a database, it leads to a design with low cohesion, high coupling,
and low reuse potential—exactly the kind of desperate situation that calls for
making something up.
A reasonable solution is to create a new class that is solely responsible for saving
objects in some kind of persistent storage medium, such as a relational database;
call it the PersistentStorage.2' This class is a Pure Fabrication—a figment of the
imagination.


По сути ближе это именно к PersistentStorage. Но на мой взгляд это подходит для объектов одинаковой структуры (для самих данных), но не для структуры которая может менятся если пользователь хочет поменять её во время работы приложения.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35736182
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CreatorКомпоновщик это очень близко, проблема в том что хочется все операции по работе с бд , передать другому объекту, для того чтобы не внедрять sql код в классы которые по сути отвечают за описание мета данных, и при этом иметь возможность менять структуру этого дерева с возможностью отката, при возниконовении ошибок при изменении структуры таблиц.не уловил проблемы сейчас, можете описать задачу более полно?
ЗЫ. у меня пока не стыкуется это: "Нужно выбрать правильный путь для сохранения N-Дерева в СУБД" и это: "Тут вопрос не в базах данных, а именно в предсталении этой структуры например на С++ или C#". о какой части мы всё таки сейчас говорим?
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35736200
Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перефразирую вопрос в том как правильно представить это дерево например на С++, чтобы минимизировать проблемы при его изменении и сохранении в бд. При этом само дерево, как часть бизнесс логики, не перегружать особенностями реализации его отображения в бд.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35736254
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тогда мне кажется, что для собственно хранения дерева в памяти программы подойдёт компоновщик, а для сохранения всего дерева в БД и для построения запросов пользователем вам потребуются два разных итератора, которые будут обходить либо всё дерево (для сохранения), либо выбранные пользователем узлы (для формирования запросов). имхо, конечно
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35736259
Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в этом случаее можно определить обновлённые элементы?
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35736273
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Компоновщик не определяет дополнительных методов, касаемых признаков "изменения" элементов. Ты это должен сделать сам, исходя из логики задачи.
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35736277
Creator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как в таком случае компоновщик может сохранять объект, если он не знает что именно он должен сохранить в дереве?
...
Рейтинг: 0 / 0
Какой петерн выбрать для сохранения дерева в БД
    #35736278
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сериализация дерева - это отдельная задача. И у неё есть много решений.
...
Рейтинг: 0 / 0
25 сообщений из 30, страница 1 из 2
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Какой петерн выбрать для сохранения дерева в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]