L’héritage
PostgreSQL propose un système d’héritage aux tables, ce qui permet à une table fille d’hériter des colonnes de la table mère, et d’avoir ses propres colonnes en plus. Lorsqu’un tuple est inséré dans la table fille, les données sont aussi visibles depuis la table mère. Seules les colonnes propres à la table fille sont stockées physiquement dans cette table.
Par exemple, la table prestations de la base de données clients permet de stocker des informations génériques sur des prestations. En créant une table formations, héritant de la table prestations, il est possible de spécialiser cette table, en ajoutant des champs, comme dans l’exemple suivant :
CREATE TABLE formations (
nb_stagiaires int,
plandecours varchar(25),
type varchar(5) check ( type in ('intra','inter') ))
INHERITS (prestations) ;
La description de la table par la commande \d montre que les colonnes de la table mère font effectivement partie de cette nouvelle table :
clients=# \d formations
Table "public.formations"
Colonne | Type | Modificateurs ...