Bonjour à toutes et à tous.

J'ai besoin de votre aide pour avancer.

Je développe actuellement un programme de gestion de stock pour mon atelier d'électronique, en C++ avec Qt 5.14.2 ainsi que MySQL 8.0
Le hic c'est qu'en base de donnée je ne connais pas grand choses...
J'essaie de me souvenir de mes court de DB en apprentissage d'informatique mais c'est pas trop ça. (En plus c'était avec MS Access)



Mon but pour ce logiciel c'est de pouvoir ajouter dynamiquement des caractéristiques à la volée sans pour autant devoir modifier la table.
C'est pour cela qu'au début je voulais utiliser MongoDB mais pour la recherche dans la base de donnée je ne m'en sortait pas avec les requête, de plus je suis obligé de compiler
le driver MongoDB (Ce qui à été fait mais niveau pour faire du cross plateforme c'est pas trop ça)alors que MySQL est supporter nativement pas Qt

Donc je suis passé à MySQL en tentant tant bien que mal de designer quelque chose sur MySQL Workbench, mais je ne suis pas sur de ça viabilité.
J'ai pensé la chose de la sorte:

une table primaire "item" qui contient des fk pointant sur une classe d'article. (électronique, quincaillerie, mécanique, informatique, etc...)
Chaque classe à une fk au sein de la table "item" mais cette fk ne dois pas forcément contenir un id (Donc celle qui contiendra un id (Disons électronique)) nous indiquera dans quelle classe faire la recherche pour trouver l'article voulu.

Ex:
item->électronique->passif->semiconducteur->transistor (Article trouvé)

Chaque sous classe contient une fk pointant vers la sous classe suivante. (Avec une cardinalité 1:1 mais sur ce coup je ne suis pas sur que ce sois juste)
Le soucis dans ce design, c'est que tous les autre table (Ex sous classe de électronique ) devront être mise à l'état "NULL", ça veux dire un enregistrement dans chaque table pour un item c'est un peu inutile... (dîtes moi si je me trompe)
Donc est-ce que de mettre la cardinalité sans l'option "Mandatory" résoudrais ce problème ? Et dans ce cas, est-ce que les FKs qui ne pointent vers aucune classe ce verront attribuer une la valeur "NULL" automatiquement ?

Merci de m'avoir lu, j'espère ne pas avoir été trop incompréhensible

Si vous pouvez m'aider à éclairer ma lanterne ou bien si vous êtes intéressé a m'aider au design de la DB je vous en serai éternellement reconnaissant.

Voici une vidéo sommaire du logiciel


voici mon schéma pour MySQL Workbench sur WeTransfer
https://we.tl/t-9EaaW5oBVC


Au plaisir de vous lire,

Dr. dgekil