Généralisation → MLD (héritage)
Une généralisation du MCD se traduit de trois façons : table unique avec colonne de type, table mère et tables filles, ou tables filles seules. Le choix dépend des requêtes et des contraintes.
- héritage
- spécialisation
- sous-type
- table unique
- tables filles
Syntaxe
1. Table unique : personne(num PK, type, communs…, propres_A…, propres_B…)2. Mère + filles : personne(num PK, communs…) salarie(num PK FK → personne, propres_A…)3. Filles seules : salarie(num PK, communs…, propres_A…) prestataire(num PK, communs…, propres_B…)Exemple
MCD : PERSONNE (num_personne, nom, email), partition XT SALARIE (salaire) PRESTATAIRE (taux_journalier)Stratégie 2 retenue : personne(num_personne PK, nom, email) salarie(num_personne PK FK → personne, salaire) prestataire(num_personne PK FK → personne, taux_journalier) personne : (1, Léa, …), (2, Karim, …) salarie : (1, 3200) prestataire : (2, 550)À retenir
- Table unique : requêtes simples, mais des colonnes vides pour chaque sous-type, et « salaire obligatoire pour un salarié » doit s'écrire en CHECK sur la colonne type.
- Mère et filles : modèle fidèle et sans colonne vide, au prix d'une jointure pour lire une personne complète ; la clé primaire de chaque fille est aussi clé étrangère vers la mère.
- Filles seules : adapté à une partition quand on n'interroge jamais l'ensemble ; lister toutes les personnes demande alors un UNION, et l'unicité du numéro entre filles n'est plus garantie.
- Aucune stratégie ne garantit seule les contraintes X, T ou XT : il faut une colonne type avec CHECK, un déclencheur ou un contrôle applicatif.
- Piège : choisir par habitude. Partez des requêtes principales (lister tout le monde ? traiter les salariés à part ?) et du nombre d'attributs propres à chaque sous-type.
Voir aussi
- Clé primaire (PK)La clé primaire est la colonne, ou le groupe de colonnes, qui identifie chaque ligne sans ambiguïté. Elle vient de l'identifiant du MCD et ne peut être ni vide ni dupliquée.
- Clé étrangère (FK)Une clé étrangère est une colonne qui reprend la clé primaire d'une autre table pour matérialiser un lien du MCD. Le SGBD vérifie alors que la ligne référencée existe bien.
- Contraintes d'intégritéNOT NULL, UNIQUE, CHECK et les clés étrangères traduisent les règles de gestion dans le SGBD, qui refuse alors les données incohérentes quelle que soit l'application qui les écrit.
- Dénormalisation maîtriséeDénormaliser, c'est réintroduire une redondance contrôlée pour accélérer des lectures fréquentes. On le fait après avoir normalisé et mesuré, avec un mécanisme qui garde la copie juste.