Les bases "objet" gèrent l'héritage. PostGreSQL supporte ce mode.
Cependant, je trouve ça passablement pourri, c'est un moyen goret selon moi de dénormaliser une base, et gérer salement des données hétérogènes.
Il vaut mieux avoir une table "de base" (qui contient les éléments de base de ton objet) et des tables filles contenant les éléments "étendus" de ton objet.
Exemple :
Type de base : TIERS (Nom, Prenom)
Type étendu1 : CONTACT (Nom, Prenom, Email)
Type étendu2 : FOURNISSEUR (Nom, Prenom, Email, Adresse, RIB)
Tu as donc 3 tables TIERS (ID, Nom, Prenom) ; CONTACT (TIERS_ID, Email) ; FOURNISSEUR (TIERS_ID, Adresse, RIB).
TIERS_ID étant des FK vers TIERS.ID.
Ainsi, tu retrouves par exemple un CONTACT de la façon suivante :
Code :
SELECT TIERS.Nom, TIERS.Prenom, CONTACT.Email FROM TIERS INNER JOIN CONTACT ON CONTACT.TIERS_ID = TIERS.ID
|
Pas besoin donc de gestion "objet". Je ne me suis jamais vraiment penché sur les bases objet, mais honnêtement, je n'en vois pas l'intérêt mise à part transformer en usine à gaz quelquechose de simple.
Ensuite, rien ne t'empêche de dénormaliser ta base selon les besoins, en virant par exemple la table "CONTACT", estimant que 95% de tes TIERS sont des contacts, et que donc le champ EMAIL peut être rappatrié dans la table TIERS moyennant quelques lignes à NULL.