Association N:M avec des collections imbriquées de références
Collection imbriquée d'OID
Il est aussi possible de gérer ces relations en utilisant une collection imbriquée de références d'OID.
Exemple : Association N:M "suit" entre "Étudiant" et "Cours"
Type CoursT : <...>
Cours de CoursT (...)
Type RefCours : <refCours =>o Cours>
Type RefCoursList : collection de <RefCours>
Type PersonneT : <... refCours:RefCoursList ...>
Personne de Personne T (...)
Attention :
Lorsque l'on choisit d'imbriquer la table d'association dans l'un des deux tables associées, on favorise certaines requêtes par rapport à d'autres : certaines requêtes deviennent plus facile à écrire et plus rapide à exécuter (on économise une jointure) ; d'autres au contraire deviennent plus complexes.
C'est donc l'usage des données qui oriente le choix de modélisation.
Remarque :
On notera que le choix d'implémentation en collection de références à des OID nous empêche dans l'implémentation sous Oracle de définir le SCOPE FOR et donc de contraindre l'intégrité référentielle à une table en particulier.
Cela ne pose pas de problème s'il y a une seule table de ce type.