Envoyé par
diengkals
dans mon cas j'ai que ces deux cas : Instituteur arabe et français :
je peux avoir un Instituteur qui est bilingue (arabe et français) donc il va jouer le rôle d'enseignant arabe et français.
D’accord. La contrainte de partitionnement se transforme don en contrainte de totalité (pas d’exclusive) :
MLD correspondant :
Observations
1) Cas de l’année :
Comme dans le cas des professeurs (cf. mon message précédent), on a jugé ici qu’au stade MLD une table ANNEE serait un boulet plus qu’autre chose : on a demandé à l’AGL de ne pas générer de table ANNEE lors de la production du MLD.
2) Conséquence des CIF CLASSE X ANNEE -> INSTITUTEUR :
La clé des tables Enseigner_en_arabe et Enseigner_en_français est seulement composée de la paire {ClasseId, Annee}.
3) Cas de la contrainte de totalité du MCD :
Au vu du MLD, un instituteur peut ne rien enseigner. Le moyen de faire respecter la contrainte de totalité — qui veut qu’un instituteur enseigne au moins dans une langue — dépend en fait du type de SGBD, soit relationnel (possibilité d’affectation multiple), soit SQL (pas de possibilité d’affectation multiple). Si le SGBD est SQL, tout dépend de sa position par rapport à la norme (assertions + contrôles différés, possibilité de mettre à jour des vues de jointure). Avec la plupart des SGBD on est en gros contraint d’effectuer les INSERT non pas directement « dans » les tables mais « dans » des vues de jointure : INSTITUTEUR_Enseigner_en_arabe et INSTITUTEUR_Enseigner_en_français, un trigger se chargeant au besoin de ventiler les données dans les tables INSTITUTEUR, Enseigner_en_arabe, Enseigner_en_français (sous réserve encore que le SGBD accepte d’associer un trigger à une vue, voyez MySQL...)
Partager