Нов в графичното моделиране и 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?