mongodb - mogodb如何进行设计
淡淡烟草味
淡淡烟草味 2017-04-28 09:04:48
0
1
748

想知道大家在做非关系型数据库的项目时是如何进行设计的,以学生选课为例,每个学生可以选择多个课程,每个课程可以让多个学生选择,这种多对多关系要如何设计,如果我要删除一个课程,如何保证数据库的一致性?

淡淡烟草味
淡淡烟草味

répondre à tous(1)
仅有的幸福

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal