Bonsoir,
Sur le fond, tout à fait d’accord avec vous CinePhil et Richard_35. Une petite remarque néanmoins :
Vous défendez tous deux la thèse de l’invariance et de l’absence de signification des clés primaires, ce qui est tout à votre honneur, mais la clé de la table Tutorer est-elle bien conforme à ces principes ?
Tutorer (tut_id_enfant, tut_date_debut, tut_id_adulte)
En effet, une date a une signification et peut être rectifiée par l’utilisateur si elle n’est pas la bonne...
Vous me direz qu’il y a epsilon de chances que l’attribut tut_date_debut de la table Tutorer fasse l’objet de modifications tout en servant de référence pour une autre table, aussi c’est par pure forme que je fais ce commentaire (pragmatiquement je choisirai de faire comme vous). D’un point de vue théorique, le MCD devrait néanmoins être le suivant :
D'où le MLD suivant, sans oublier de faire de la paire {EnfantId, DateDeb} une clé candidate au niveau tabulaire :
Autres remarques :
- La date de fin du tutorat Tx (sauf pour le plus récent) est égale à la date de début - 1 du tutorat Ty qui le suit immédiatement dans le temps, ce qui sous-entend une auto-thêta-jointure pour calculer cette date de fin.
- Le MCD ci-dessus et celui de CinePhil conviennent si les tutorats se suivent sans interruption, mais dans le cas contraire, il faudrait :
- Soit utiliser une solution « cracra » consistant à définir le tuteur paradoxal « Pas de tuteur »,
- Soit définir une période de tutorat (date début, date de fin), mais attention aux effets secondaires...
Partager