Clé étrangère chat, chien, ou aligator
Bonjour,
j'imagine que la réponse se trouve quelque part, mais je ne pense pas trouver la bonne formulation pour la trouver.
J'aimerai savoir comment réaliser proprement l'association (binaire dans le principe), en bénéficiant de la cohérence assurée par les clés étrangères.
J'ai :
- une table "propriétaires"
- une table "chiens"
- une table "chats"
- une table "alligators"
Les 3 dernières ne pouvant pas être fusionnées, ni reliées par une héritage.
Imaginons l'association "dresser", à savoir :
Un propriétaire - dresse - un chat, un chien ou un alligators
Pas de soucis pour le propriétaire on intègre son id en clé étrangère.
Mais pour le deuxième élément, comment indiquer que la clé étrangère dépend de la nature de l'animal : c'est à dire id du chat, id du chien, ou id de l'alligator.
Pour le moment, je crée un champ nature de l'animal (chat, chien ou alligator) et un autre champ pour l'id, et je recherche dans la table correspondante. Mais je n'intègre pas de clé étrangère et je suis obligé de faire un contrôle à priori (liste fermée) ou à postériori (vérification de l'existence de l'enregistrement).
Je me dis qu'il doit y avoir une manière plus propre de faire : au niveau modèle ? au niveau contraintes ? ou selon le SGBD (en l'occurrence, je travaille sur du postgres) ?
Je suis preneur de vos conseils, pratiques ou renvois vers "la question déjà posée".
Merci d'avance.