Avant de me plonger dans MongoDB pendant plusieurs jours, j'ai pensé que je devais poser une question assez simple pour savoir si je devais m'y plonger ou non. Je n'ai pratiquement aucune expérience en matière de nosql.
J'ai lu quelques articles sur les avantages des bases de données documentaires, et je pense que pour cette nouvelle application, elles seront très utiles. Il est toujours fastidieux de faire des favoris, des commentaires, etc. pour de nombreux types d'objets (beaucoup de relations m-to-m) et de sous-classes - c'est un peu pénible à gérer.
J'ai également une structure qui sera difficile à définir en SQL parce qu'elle est extrêmement imbriquée et se traduit dans un document bien mieux que 15 tables différentes.
Mais je suis confus à propos de certaines choses.
-
Est-il souhaitable de conserver une base de données normalisée ? Je ne veux vraiment pas avoir à mettre à jour plusieurs enregistrements. Est-ce toujours ainsi que les gens abordent la conception de la base de données dans MongoDB ?
-
Que se passe-t-il lorsqu'un utilisateur sélectionne un livre et que cette sélection est encore stockée dans un document utilisateur, mais que le livre est ensuite supprimé ? Comment la relation se détache-t-elle sans clés étrangères ? Suis-je responsable de la suppression manuelle de tous les liens moi-même ?
-
Que se passe-t-il si un utilisateur a favorisé un livre qui n'existe plus et que je l'interroge (par une sorte de jointure) ? Dois-je faire preuve de tolérance aux pannes ?
0 votes
Les bases de données SQL comme MySQL ne suppriment pas automatiquement les liens entre les tables, même lorsqu'elles sont reliées par une clé étrangère. La seule chose qu'elles font, c'est vous empêcher de supprimer une ligne dans une autre table connectée par clé étrangère, mais même là, c'est seulement si vous le leur demandez. Pourquoi pensez-vous que ce serait différent en NoSQL ?
5 votes
@trysis, google ON DELETE CASCADE.
2 votes
Oui, j'ai oublié pourquoi j'ai dit ça, c'était il y a si longtemps. Je m'excuse si j'ai induit quelqu'un en erreur avec mon ignorance passée.