Exemple de transformation d'une relation d'héritage

Exemple

Représentation de documents

RemarqueType d'héritage

  1. L'héritage n'est pas complet, puisque l'on observe que les thèses et les livres ont des attributs qui ne sont pas communs (la discipline pour la thèse et l'éditeur pour le livre). Mais l'on peut considérer qu'il est presque complet, car il n'y a qu'un attribut par classe fille de différence et pas d'association associée aux classes filles.

  2. La classe mère est abstraite, on ne gère que des livre ou des thèses, pas d'autres documents ; il n'y a aucune clé candidate identifiée.

La meilleure solution est ici un héritage par les classes filles ; un héritage par la classe mère est le second choix (contraintes simples) ; en revanche l'héritage par référence est un mauvais choix (contraintes complexes).

Observons les avantages et inconvénients de chacune des trois solutions.

Héritage absorbé par les classes filles

1
These(#id:int, titre:text, discipline:text, auteur:text)
2
3
Livre(#id:int, titre:text, editeur:text, auteur:text)

Héritage représenté par une référence

1
Document(#id:int, titre:text, auteur:text) avec titre et auteur NOT NULL
2
3
These(#id=>Document, discipline:text)
4
5
Livre(#id=>Document, editeur:text)
6
7
Contraites compliquées : 
8
- Intersection (PROJECTION(These, id), Projection(Livre, id)) = {}
9
- Projection(Document,id) = Union (Projection(These,id), Projection(Livre,id))
10
11
Vues :
12
vThese = JointureNaturelle (Document, These)
13
vLivre = JointureNaturelle (Document, Livre)

Héritage absorbé par la classe mère

1
Document(#id:int, titre:text, discipline:text, editeur:text, auteur:text, type:{These|Livre})
2
3
Contraintes simples :
4
- (discipline NOT NULL AND type=These) OR (editeur NOT NULL AND type=Livre)
5
- NOT (discipline NOT NULL AND type=Livre)
6
- NOT (editeur NOT NULL AND type=These)
7
8
Vues :
9
vThese = Projection (Restriction (Document, type=These), id, titre, discipline, auteur)
10
vLivre = Projection (Restriction (Document, type=Livre), id, titre, editeur, auteur)