J'ai deux tables/collections : Utilisateurs et Groupes. Un utilisateur peut être membre d'un nombre quelconque de groupes et un utilisateur peut également être propriétaire d'un nombre quelconque de groupes. Dans une base de données relationnelle, j'aurais probablement une troisième table appelée UserGroups avec une colonne UserID, une colonne GroupID et une colonne IsOwner.
J'utilise MongoDB et je suis sûr qu'il existe une approche différente pour ce type de relation dans une base de données documentaire. Devrais-je intégrer la liste des groupes et des groupes en tant que propriétaires dans la table Users sous forme de deux tableaux d'ObjectID ? Devrais-je également stocker la liste des membres et des propriétaires dans la table Groups sous forme de deux tableaux, ce qui aurait pour effet d'inverser la relation et d'entraîner une duplication des informations relatives à la relation ?
Ou bien une table UserGroups de transition est-elle un concept légitime dans les bases de données documentaires pour les relations entre plusieurs personnes ?
Merci
0 votes
Voir aussi les réponses aux questions suivantes cette question et cette question
0 votes
Je sais que cette question est assez ancienne, mais je m'interroge également sur l'échelle. Que se passe-t-il si vous avez 1000 groupes ?
0 votes
Bon point - Une autre option, dans ce cas, est d'utiliser l'équivalent d'une relation de jonction d'une base de données SQL - une collection intermédiaire avec deux clés étrangères - une pour chaque collection liée. Dans ce cas, vous pouvez exécuter 3 requêtes : (1) un find() normal pour obtenir les résultats parents, (2) une requête IN pour obtenir les résultats intermédiaires, et enfin (3) une requête IN utilisant les clés étrangères dans les résultats intermédiaires pour trouver les enregistrements enfants. (Voici comment nous implémentons cette fonctionnalité dans Waterline)