Bonjour,

Je suis en train de développer une plateforme d’emploi et des évènements.

Comme le schéma classique de toutes ces plateformes, les entreprises publient leurs offres d’emplois ainsi que leurs évènements et les candidats postulent ou participent aux évènements qui les intéressent. Les candidats peuvent donner des notes et laisser des commentaires sur les entreprises présentes dans la plateforme (comme le note que l’on trouve sur les applications dans google play par exemple)

J’utilise MangoDB / NodeJS et React pour ce projet.

Vu que c’est ma première application en MangoDB, j’aimerai bien avoir vos avis sur la meilleure architecture de la base de données à mettre en place (performance, scalabilité) parmi ces 2 choix.

Choix 1: 2 documents: Entreprise et Candidat

Entreprise{
"id" : ObjectID
"nom" : nom de l'entreprise,
"siteWeb" : site web de l'entreprise,
_commenaitre: et d'autres informations nécessaires comme le statut, le nombre des salariés, etc
……
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
"offreEmploi"{: 
                "id": 1,
                "Titre": "Titre de l’offre 1" ;
				"Descrption": "Titre de l’offre 1",
				_commentaire: les objets ci-dessous sont des tabeaux qui contiennent les informations des candidats
				"CandidatPostuler[]": ,
				"CanditatAccepter[]": ,
				"CanditatReffuser[]": ,		
				……
                },
				
                {
                "id": 2,
                "Titre": "Titre de l’offre 2" ;
				"Descrption": "Titre de l’offre 2",
				_commentaire: les objets ci-dessous sont des tabeaux qui contiennent les informations des candidats
				"CandidatPostuler[]": ,
				"CanditatAccepter[]": ,
				"CanditatReffuser[]": ,
				....
                },
}				
				
"offreEvenement": {
                "id": 1,
                "Titre": "Titre de l'evenement 2" ;
				"Descrption": "Titre de l’evenement 2",
				_commentaire: les objets ci-dessous sont des tabeaux qui contiennent les informations des candidats
				"CandidatPostuler[]": ,
				"CanditatAccepter[]": ,
				"CanditatReffuser[]": ,		
				……
                },
				
                {
                "id": 2,
                "Titre": "Titre de l’evenement 2" ;
				"Descrption": "Titre de l’evenement 2",
				_commentaire: les objets ci-dessous sont des tabeaux qui contiennent les informations des candidats
				"CandidatParticiper[]": ,
				"CanditatInteresser[]": ,
								....
                },		                
}
}

Candidat {
"id" : ObjectID
"nom" : nom du candidat,
"mail" : mail du candait,
_commentaire: et d'autres informations nécessaires comme le téléphone, adresse, etc
……
"OffrePostuler[]": ,
"OffreAccepter[]": ,
"OffreSauvegarder[]": ,

"EvenementParticiper[]": ,
"EvenementInteresser[]": ,
"OffreSauvegarder[]": ,
}
Pour le choix 1, il n'y a que 2 documents: Entreprise et Candidat. offreEmploi et offreEvenement sont imbriqués dans le document Entreprise

Choix 2: 4 documents: Entreprise, OffreEmploi, OffreEvenement, Candidat.

Séparer OffreEmploi et OffreEvenement dans le document Entreprise, du coup, il y a 4 documents au lieu de 2: Entreprise, OffreEmploi, OffreEvenement, Candidat.



Quelle sera la bonne solution à mettre sachant que d'après la documentation que j'ai lu, la taille d'un document ne doit pas dépasser le 16Mo. Avez-vous d'autres suggestions à me proposer aussi.

Merci beaucoup!