Что такое идеальный "квант информации" или "минимальная единица смысла" и зачем задаваться этим вопросом? С этим связано много боли, часто даже неосознаваемой. Мы предлагаем решение, но сначала нужно разобраться для чего это нужно. Рекомендуем ознакомиться с первой статьёй в серии.

Ретроспектива

Relational tables, document oriented databases, jsonb stores... В них мы часто представляем минимальной единицей смысла модель в таблице/коллекции. Модель состоит из разной структуры колонок/полей и отражает некий реальный объект или абстрактную концепцию автора.

Такой подход создает проблемы:

Все эти проблемы решаются в ассоциативной модели данных Deep.Case.

Если вам интересна оптимизация или поиск по диапазонам в графе - здесь будет ссылка.

Давайте разбираться

Deep.Case оперирует концепцией Link (связь), как минимальной единицей смысла / квантом информации.

Links таблица

Links (сеть связей) очень похожа на граф, однако в графе есть однозначное деление на nodes (узлы) и edges (рёбра), ссылающиеся только на них. Links не разделяет эти пространства адресов. Это позволяет связям ссылаться на связи и нести любой смысл, который в них может заложить автор моделей данных.

1.png

Link структура

Структура связи состоит из обязательных уникального id связи и type_id связи, используемой как тип данной связи. Необязательные поля from_id и to_id могут быть заполнены только вместе.

Типы для создания связей легко образуются пользователем самостоятельно в рамках модели проекта, или поставляются вместе с импортируемыми моделями-пакетами.

Заполненные поля from_id и to_id ссылаются на другие связи. Такими связями можно описывать любые отношения.