MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Normalisation MongoDB, clé étrangère et jointure

MongoDB ne prend pas en charge les relations de clé étrangère côté serveur, la normalisation est également déconseillée. Vous devez intégrer votre objet enfant dans les objets parents si possible, cela augmentera les performances et rendra les clés étrangères totalement inutiles. Cela dit, ce n'est pas toujours possible, il existe donc une construction spéciale appelée DBRef qui permet de référencer des objets dans une collection différente. Cela peut alors ne pas être aussi rapide car la base de données doit effectuer des requêtes supplémentaires pour lire les objets, mais permet une sorte de référence de clé étrangère.

Vous devrez toujours gérer vos références manuellement. Ce n'est qu'en cherchant votre DBRef que vous verrez s'il existe, la BD ne parcourra pas tous les documents pour rechercher les références et les supprimera si la cible de la référence n'existe plus. Mais je pense que supprimer toutes les références après avoir supprimé le livre nécessiterait une seule requête par collection, pas plus, donc pas si difficile vraiment.

Si votre schéma est plus complexe, vous devriez probablement choisir une base de données relationnelle et non nosql.

Il existe également un livre sur la conception de bases de données MongoDB :Document Design for MongoDB

MISE À JOUR Le livre ci-dessus n'est plus disponible, mais en raison de la popularité de MongoDB, il y en a beaucoup d'autres. Je ne les lierai pas tous, car ces liens sont susceptibles de changer, une simple recherche sur Amazon affiche plusieurs pages, il ne devrait donc pas être difficile d'en trouver.

Voir la page de manuel de MongoDB pour les "Références manuelles" et les DBRefs pour plus de détails et d'exemples