Новичок в графовом моделировании и ArangoDB, я пытаюсь заменить реляционную базу данных. Для отношений «один к одному» или «один ко многим» я изо всех сил пытаюсь найти правильный способ структурировать свои документы и ребра.
Например, заменить таблицы auth_credentials
, auth_fb
, auth_google
, содержащие информацию, позволяющую пользователям авторизоваться в различных сервисах (логин-пароль, facebook, google). Я могу представить 3 способа структурирования данных:
- Создайте коллекции
auth_*
с данными аутентификации и edgeCollectionsauths_users
, чтобы связать их с пользователями. Это хорошо соответствует приведенной выше схеме, но я считаю громоздким создание 1 документа и 1 ребра для каждого объекта аутентификации. - В моих
users
документах есть атрибутauths
, который содержит массивы объектов с аутентификационной информацией. Я ожидаю, что будет сложно запрашивать пользователей на основе некоторой аутентификационной информации, и это, вероятно, упускает из виду график. - Создайте edgeCollections
auth_*
, где_from
и_to
связаны с дескриптором пользователя, которому принадлежит информация для проверки подлинности.
Мне больше нравится последний вариант, но я боюсь, что использование edgeCollections там, где у нас всегда _from == _to
, является антипаттерном. Точно так же для groups
я бы сделал их краями от и к их администратору.
Подводя итог: для представления данных B, принадлежащих данным A, является ли хорошим подходом создание ребра (от A до A), содержащего данные B?