Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

  1. #1
    Futur Membre du Club
    Est-ce que ce design de base de donnée est valable ?
    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

  2. #2
    Expert éminent sénior
    Bonsoir drdgekil,


    Citation Envoyé par drdgekil Voir le message
    ajouter dynamiquement des caractéristiques

    Qu’est-ce qu’une caractéristique ?


    Citation Envoyé par drdgekil Voir le message
    une table primaire "item"

    Qu’entendez-vous par “primaire” ?


    Citation Envoyé par drdgekil Voir le message
    cette fk ne dois pas forcément contenir un id

    C’est malsain. Cette affaire est mal engagée, conséquence d’une modélisation a priori approximative. Le défi est que pour chaque table, chaque colonne participant à une clé étrangère contienne une valeur (NOT NULL systématique).


    Citation Envoyé par drdgekil Voir le message
    item->électronique->passif->semiconducteur->transistor

    item est manifestement un élément de la table item, électronique est un élément d’une supposée table “classe d'article”.
    Pour le reste, vous donnez l’impression que passif, semiconducteur, transistor seraient eux aussi des éléments de “classe d'article”. S’il en est ainsi, ça se modélise, comme ici.


    Citation Envoyé par drdgekil Voir le message
    voici mon schéma pour MySQL Workbench sur WeTransfer
    Quand on clique sur le lien, il s’affiche quelque chose de trop étrange pour oser poursuivre.

    En conséquence, pour qu’on puisse vous aider, présentez votre modèle au moyen d’une image (jpg, png) s’affichant directement dans votre message.
    Faites simple, mais pas plus simple ! (A. Einstein)
    E=mc², mais si on discute un peu, on peut l’avoir pour beaucoup moins cher... (G. Lacroix, « Les Euphorismes de Grégoire »)
    => La relativité n'existerait donc que relativement aux relativistes (Jean Eisenstaedt, « Einstein et la relativité générale »)

    Je ne réponds pas aux questions techniques par MP. Les forums sont là pout ça.
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench

###raw>template_hook.ano_emploi###