MongoDB considère deux modes de base : document et tableau.
Le mode Document enregistre un enregistrement dans un document. En prenant comme exemple la sélection de cours d'un étudiant, il enregistre tous les cours choisis par un étudiant sous son document. Le mode table divisée est comme une base de données relationnelle, où les étudiants et les cours sont séparés ; , puis créer une table de correspondance entre les étudiants et les cours (sélection des cours).
Le principal avantage des documents est une grande efficacité de lecture. MongoDB n'a pas joint S'il est divisé en tables, plusieurs requêtes seront effectuées pour chaque requête impliquant plusieurs tables. Le principal inconvénient du document est qu'il est peu pratique à maintenir. Par exemple, si vous modifiez les informations d'un cours, vous devez retrouver tous les documents étudiants contenant ce cours et les modifier un à un. De plus, la taille d’un document est limitée et les données ne peuvent pas être ajoutées indéfiniment.
Les avantages et les inconvénients du sous-tableau sont opposés à ceux du type document.
En pratique, vous devez peser vos choix. Les données qui sont principalement lues ont tendance à choisir le mode document, et les données avec une fréquence d'écriture/modification élevée peuvent envisager de diviser les tableaux. De plus, pour les champs susceptibles d’augmenter les données à l’infini, il est généralement nécessaire d’envisager un stockage dans des tables distinctes.
Habituellement, les deux sont utilisés en combinaison, et les informations avec une fréquence de lecture plus élevée sont enregistrées dans le document, et d'autres informations détaillées sont créées séparément. Dans votre exemple, deux tables sont créées pour les étudiants et les cours. Les informations de base de la sélection de cours (telles que le code et le nom du cours) sont enregistrées sous chaque document étudiant, puis les informations spécifiques de chaque cours sont stockées dans la table des cours.
Chaque fois que vous répertoriez les informations de sélection de cours d'un étudiant, une requête peut répertorier les codes et les noms de toutes les sélections de cours. Lorsque vous avez besoin d'afficher les informations détaillées d'un cours spécifique, effectuez une autre requête sur le calendrier des cours. Cela permet d'économiser une requête par rapport au partitionnement complet de la table, et réduit la taille du document et l'étendue des modifications lors de la modification des informations de cours par rapport à l'enregistrement complet du document.
Si vous souhaitez supprimer un cours, supprimez d'abord le document de ce cours dans le planning des cours, puis retrouvez toutes les fiches contenant ce cours dans la table des étudiants et modifiez-le. L'utilisation flexible des index et des opérateurs ne pose pas de problème.
MongoDB considère deux modes de base : document et tableau.
Le mode Document enregistre un enregistrement dans un document. En prenant comme exemple la sélection de cours d'un étudiant, il enregistre tous les cours choisis par un étudiant sous son document. Le mode table divisée est comme une base de données relationnelle, où les étudiants et les cours sont séparés ; , puis créer une table de correspondance entre les étudiants et les cours (sélection des cours).
Le principal avantage des documents est une grande efficacité de lecture. MongoDB n'a pas
joint
S'il est divisé en tables, plusieurs requêtes seront effectuées pour chaque requête impliquant plusieurs tables. Le principal inconvénient du document est qu'il est peu pratique à maintenir. Par exemple, si vous modifiez les informations d'un cours, vous devez retrouver tous les documents étudiants contenant ce cours et les modifier un à un. De plus, la taille d’un document est limitée et les données ne peuvent pas être ajoutées indéfiniment.Les avantages et les inconvénients du sous-tableau sont opposés à ceux du type document.
En pratique, vous devez peser vos choix. Les données qui sont principalement lues ont tendance à choisir le mode document, et les données avec une fréquence d'écriture/modification élevée peuvent envisager de diviser les tableaux. De plus, pour les champs susceptibles d’augmenter les données à l’infini, il est généralement nécessaire d’envisager un stockage dans des tables distinctes.
Habituellement, les deux sont utilisés en combinaison, et les informations avec une fréquence de lecture plus élevée sont enregistrées dans le document, et d'autres informations détaillées sont créées séparément. Dans votre exemple, deux tables sont créées pour les étudiants et les cours. Les informations de base de la sélection de cours (telles que le code et le nom du cours) sont enregistrées sous chaque document étudiant, puis les informations spécifiques de chaque cours sont stockées dans la table des cours.
Chaque fois que vous répertoriez les informations de sélection de cours d'un étudiant, une requête peut répertorier les codes et les noms de toutes les sélections de cours. Lorsque vous avez besoin d'afficher les informations détaillées d'un cours spécifique, effectuez une autre requête sur le calendrier des cours. Cela permet d'économiser une requête par rapport au partitionnement complet de la table, et réduit la taille du document et l'étendue des modifications lors de la modification des informations de cours par rapport à l'enregistrement complet du document.
Si vous souhaitez supprimer un cours, supprimez d'abord le document de ce cours dans le planning des cours, puis retrouvez toutes les fiches contenant ce cours dans la table des étudiants et modifiez-le. L'utilisation flexible des index et des opérateurs ne pose pas de problème.