Bonjour tout le monde,
Je cherche à gérer un mieux un cas un peu complexe mais auquel je me heurte souvent et dont je n'ai jamais été très content de la solution.
Il s'agit d'un problème d'héritage mais qui tirerai plutôt sur des notions d'interface.
Avant de rédiger ce message, je suis passé par ce tuto : https://sqlpro.developpez.com/cours/...tion/heritage/
Ca marche très bien pour les cas en exemple, car les notions d'héritages sont associées à des données qui se ressemblent.
Maintenant mon problème (que je simplifie ici) :
Je dois valider des choses au travers de différentes étapes qui vont varier suivant l'élément.
Mais ce que je dois valider peut être de nature très hétérogène, par exemple : des produits, des lancements en productions, des packagings (voir des choses abstraites).
Donc basiquement, je voudrais créer une table PROCESS (qu iva englober les étapes) avec un id pour chaque élément qui peut être validé (id_produit, id_packaging...), et un seul id sera renseigné.
Et c'est ça que je ne trouve pas super, la liste des id (on peut imaginer avoir une dizaine d'id différents).
Donc en utilisant l'héritage, je pourrais faire une table PROCESS_ITEM dont hériterait tous les éléments (produits, packagings...).
Dans ma table PROCESS, je n'aurais donc plus qu'un id vers un PROCESS_ITEM.
Et c'est pour ça que je dis qu'il s'agit plus d'interface que d'héritage, car ca va rassembler des choses qui n'ont potentiellement rien à voir entre eux.
De plus, je vais avoir un autre problème du même genre mais qui n'a rien à voir avec de la validation, qui va concerner certains éléments ci-dessus, mais également d'autres.
Donc en objet, je pourrais faire une autre interface, et donner deux interfaces aux éléments voulus, mais en base de données ce n'est pas possible.
Ou alors je fini par faire hériter (quasiment) toutes mes tables par une table principal comme OBJET, mais à première vu, c'est extrêment mauvais.
Donc si vous avais de quoi m'aider, pour éviter de faire des listes d'id un peu de partout, je suis preneur.
Merci.
Partager