Рубрика «иерархические структуры»

Стояла задача: реализовать хранение и работу каталога папок в PostgreSQL. В процессе изучения темы наткнулся на большое количество материалов, которые задачу решали, но делали это без уважения выглядели не лаконично, нарушали прозрачность выполняемых операций, вызывали блокировки, требовали бОльшего вовлечения клиента в специфику работы и т.д. Потому задался целью: реализовать хранение древовидных структур (в общем виде) без использования триггеров, блокировок, дополнительных таблиц (представлений) и внешних инструментов в PostgreSQL (версии 16).

Словарь:
узел - запись в бд, которая рассматривается как узел дерева
Читать полностью »

В марте 2019 года компания «Газинформсервис» представила обновленную версию программного комплекса SafeERP 4.6. Подробное описание продукта SafeERP приведено на сайте компании.

В новую версию программного комплекса SafeERP 4.6 включена процедура построения иерархии полномочий по выбранным для анализа объектам полномочий.

Напомним структуру и общие понятия концепции полномочий SAP: «Объект полномочий» -> «Полномочие» -> «Профиль» -> «Роль» -> «Учетная запись пользователя». Концепция полномочий — классическая, но фактическая реализации более сложная:

  • несколько ролей может быть присвоено пользователю;
  • составная роль (Composite Role) может включать нескольких ролей;
  • составной профиль полномочий может состоять из нескольких профилей (Composite Profile);
  • в составной профиль может быть включён другой составной профиль;
  • пользователь может наследовать полномочия ссылочного пользователя (Reference User).

Иерархия возможной структуры полномочий представлена на рисунке 1.

image
Рисунок 1 – Общая структура концепции полномочий SAP
Читать полностью »

Сверхэффективные OLED нового поколения сделаны по образцу кутикулы светляков - 1Многие насекомые, птицы, рыбы и земноводные способны излучать свет для коммуникации друг с другом. Наиболее эффективным образом это делают светляки — семейство жуков, ведущих ночной образ жизни. Орган свечения светляка образован крупными фотогенными клетками и располагается под прозрачной кутикулой. Как и другие животные, с помощью световых сигналов светляки общаются, в основном, с противоположным полом: это поисковые сигналы самцов, сигналы «согласия» или «отказа» самок и т.д.

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

Исключительная эффективность такого органа свечения привлекла внимание исследователей из Корейского института науки и технологий. Следуя принципам бионики, они сконструировали органические светодиоды (OLED) по образцу кутикул, предварительно изучив их оптические свойства. Это первое научное исследование такого рода.
Читать полностью »

После публикации на Хабре своей первой статьи, об одном из способов организации иерархии в реляционной БД, у меня осталось чувство не доведенного до конца дела.
Судя по комментариям, кто-то принимал предложенный метод за другой, спрашивали чем не устраивает “django-mttp”, рассказывали о поддержке деревьев в PostgreSQL…
Спасибо всем отписавшимся, но из-за сумбурного изложения в самой статье, думаю, что я не сумел донести до читателя то, что хотел. А “если я чего решил, то выпью обязательно”(с)

Поэтому, я решился на еще одну попытку изложения интересующего меня подхода. А именно — хранение иерархии в числовом коде, вычисляемом на основании данных о размерности дерева. То есть, заранее определены максимальные количество Уровней и количество Детей у каждого Родителя (возможные диапазоны достаточно велики, поэтому, заранее пугаться этого не стоит). При таких вводных, код, каждого иерархического элемента, будет являться и путем до него, и включать диапазон всех Детей. А это сулит скорость, и много еще чего…
Далее — с картинками и таблицами, без привязки к какой-либо БД (ибо это не важно). В конце статьи есть ссылки на реализацию на Django. Читать полностью »

Есть множество способов организации иерархического хранения данных. В последнее время меня заинтересовал вопрос по структуре каталога, например, интернет-магазина. А именно, когда Группы и Товары хранятся в разных таблицах.
При навигации посетителя по Группам, должны выводиться Товары из всех Подгрупп.

Хотелось бы, имея код Группы, получить быстрый запрос к таблице Товаров, результатом которого были бы Товары из текущей Группы и всех ее Подгрупп.
Читать полностью »

В прототипной модели данных объекты создаются на основе других объектов. В этом случае у объекта имеется прототип, его ещё можно назвать эталоном или наследуемым объектом. В такой модели данных отсутствуют типы и классы. Объекты можно различать по тому, кого прототипируют, но эта задача второстепенная. Прототипирование, в первую очередь, применяется для повторного использования существующих структур из объектов.

Прототипная модель данных
Читать полностью »

Хранение иерархии в MySQL довольно затертая тема, воскурив хабр неоднократно я тем не менее не нашел для себя оптимальной структуры, сочетающей легкость поддержки и удобство пользования. Велосипед изобрелся сам...

Adjacency List (AL) удобен:

  • самоподдерживаемостью целостности данных (ON DELETE CASCADE)
  • легкостью вставкипереноса веток (обновление затрагивает одно поле parent_id у одного элемента)
  • Легкостью получения детей на 1 уровень вложенности

Но главные неудобства возникают при выборках:


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js