Il est possible que cette question soit une réponse simple qui est une pratique standard, ou n'a pas de réponse parce que cela ne peut pas être fait pour une raison simple, ou est simplement un exercice de pensée intéressant. Je suis actuellement assis sur la dernière option, mais en espérant la première ...Tables de surtryptage - L'héritage multiple est-il possible?
Disons que je veux créer un «groupe» ou une «classe» d'entités dans mon modèle de données. En général, j'utiliser une table supertype comme ceci:
DrivableEntity
----------
ID (PK, auto-increment)
Type (int or otherwise some kind of enum)
Car
----------
ID (PK, FK to DrivableEntity)
(car-specific fields)
Bike
----------
ID (PK, FK to DrivableEntity)
(bike-specific fields)
Alors mes inserts probablement passer par ce qui ressemble à l'extérieur comme une procédure de CRUD pour chaque sous-table, mais insère à l'intérieur dans DrivableEntity
et utilise ensuite l'identité de portée insérer dans la table prévue. Etant plus un programmeur qu'un modélisateur de données, cela m'a fait penser à l'héritage des objets. Pour l'héritage direct, c'est génial. Les données/tâches communes peuvent être extraites d'un niveau, la substitution de Liskov peut être maintenue, etc. Mais l'héritage multiple est-il possible dans un modèle de données? Je suis principalement un développeur C#, j'ai donc commencé à penser en termes d'interfaces. Que se passe-t-il si je veux exposer des tableaux qui ont "implémenté" IDrivable
et/ou ITowable
, etc. Est-ce que quelque chose comme ça est possible? Est-ce que quelqu'un a déjà fait quelque chose comme ça?
Certainement pas une approche aussi élégante que je l'espérais, mais logiquement, elle correspond certainement. Je pense que ce que je cherche vraiment à faire ne sera pas réalisable dans un modèle relationnel comme SQL Server. Cependant, cette approche peut être utile pour le projet. Merci! – David