Bonjour Scarface71,
Je te suggère de jeter un coup d'oeil sur ce billet de CinePhil qui balaye toutes les cardinalités possibles entre deux entités.
Pour répondre, précisément, à ta question, les cardinalités 1,1-1,1 sont une erreur de conception.
Néanmoins, il faut tempérer le terme "erreur de conception" si une base de données est déjà en place avec une application qui l'exploite : parfois, dans la "vraie vie", il est nécessaire de créer ce genre de "verrue" pour éviter de mettre le bazar dans l'application existante, si cette modification génère de lourdes opérations.
Dans ton exemple, la règle de gestion sous-jacente à ton mini-MCD est la suivante :
1 exercice porte, forcément, sur 1 et 1 seul thème ;
1 thème comporte, forcément, 1 et 1 seul exercice.
deux questions se posent :
- la règle de gestion sous-jacente à ton mini-MCD est-elle correcte ?
- si oui, ton mini-MCD est-il une erreur de conception ?
1. la règle de gestion sous-jacente à ton mini-MCD est-elle correcte ?
Personnellement, je pense que cette règle de gestion est incorrecte. Elle devrait être la suivante :
1 exercice porte, forcément, sur 1 et 1 seul thème ;
1 thème peut comporter 1 ou plusieurs exercices.
donnant :
Thème -0,n---[Comporte]---1,1- Exercice
donnant :
Theme(IdTheme, Nom, ...)
Exercice(IdExercice, #IdTheme, ...)
2. si oui, ton mini-MCD est-il une erreur de conception ?
Compte tenu des remarques initiales :
- soit l'application est en cours de conception : dans ce cas, oui, il s'agit d'une erreur de conception ;
- soit l'application tourne déjà : dans ce cas, non, il ne s'agit pas, à proprement parler, d'une erreur de conception. Peut-être que les modifications sont tellement lourdes qu'une "verrue" est nécessaire.
En l'occurrence, le lien entre un exercice et un thème semble couler de source dès la conception : il est donc peu probable que l'application tourne déjà sans lien entre un exercice et un thème.
Le verdict est donc, de mon point de vue: il s'agit d'une erreur de conception.
Partager