je suis entraîne de réaliser un application C# et je modélise le diagramme de classe avec StarUml mais je n'arrive pas trouver comment créer une base de donnée Access à partir le diagramme de classe.?
je suis entraîne de réaliser un application C# et je modélise le diagramme de classe avec StarUml mais je n'arrive pas trouver comment créer une base de donnée Access à partir le diagramme de classe.?
Bonsoir abboudi,
Est-ce que StarUml sait générer des CREATE TABLE à partir du diagramme de classes ? Si oui, montrez le résultat, on verra ce que l’on peut en faire avec Access.
Bonsoir abboudi,
J'ignore tout de StarUml et de ses possiblités...
Pourriez-vous afficher votre diagramme de classes ?
Bonsoir abboudi,
Vu le nombre peu élevé de classes, donc de tables au stade SQL, pour produire le script de création de celles-ci (instruction CREATE TABLE), le plus simple est de partir à zéro, avec MySQL Workbench. On va créer le diagramme qui va bien, puis on demandera à l’outil de produire le script SQL.
Une question : selon votre diagramme de classes, une commande donnée peut être passée par plusieurs clients, ce qui est pour le moins inhabituel... Est-ce bien ce que vous voulez modéliser ?
Exemple avec MySQL Workbench (j’ai supposé qu’une commande ne concerne qu’un seul client) :
![]()
Script SQL produit par MySQL Workbench
-- ----------------------------------------------------- -- Table CATEGORIE -- ----------------------------------------------------- CREATE TABLE CATEGORIE ( id_categorie INT NOT NULL, nom_categorie VARCHAR(32) NOT NULL, CONSTRAINT CATEGORIE_PK PRIMARY KEY (id_categorie) ) ; -- ----------------------------------------------------- -- Table STOCK -- ----------------------------------------------------- CREATE TABLE STOCK ( id_stock INT NOT NULL, quantite INT NOT NULL, disponibilite INT NOT NULL, date_entree DATE NOT NULL, CONSTRAINT STOCK_PK PRIMARY KEY (id_stock) ) ; -- ----------------------------------------------------- -- Table PRODUIT -- ----------------------------------------------------- CREATE TABLE PRODUIT ( id_produit INT NOT NULL, reference_P VARCHAR(16) NOT NULL, libelle VARCHAR(32) NOT NULL, date_production DATE NOT NULL, prix INT NOT NULL, id_stock INT NOT NULL, id_categorie INT NOT NULL, CONSTRAINT PRODUIT_PK PRIMARY KEY (id_produit), CONSTRAINT PRODUIT_AK UNIQUE (reference_P), CONSTRAINT PRODUIT_STOCK_FK FOREIGN KEY (id_stock) REFERENCES STOCK (id_stock), CONSTRAINT PRODUIT_CATEGORIE_FK FOREIGN KEY (id_categorie) REFERENCES CATEGORIE (id_categorie) ); -- ----------------------------------------------------- -- Table PERSONNE -- ----------------------------------------------------- CREATE TABLE PERSONNE ( id_personne INT NOT NULL, adr_courriel VARCHAR(32) NOT NULL, mot_passe VARCHAR(32) NOT NULL, nom_personne VARCHAR(32) NOT NULL, prenom_personne VARCHAR(32) NOT NULL, telephone VARCHAR(20) NOT NULL, ville VARCHAR(32) NOT NULL, CONSTRAINT PERSONNE_PK PRIMARY KEY (id_personne), CONSTRAINT PERSONNE_AK UNIQUE (adr_courriel) ) ; -- ----------------------------------------------------- -- Table PERSONNE_CATEGORIE -- ----------------------------------------------------- CREATE TABLE PERSONNE_CATEGORIE ( id_personne INT NOT NULL, id_categorie INT NOT NULL, CONSTRAINT PERSONNE_CATEGORIE_PK PRIMARY KEY (id_personne, id_categorie), CONSTRAINT PERSONNE_CATEGORIE_PERSONNE_FK FOREIGN KEY (id_personne) REFERENCES PERSONNE (id_personne) ON DELETE CASCADE, CONSTRAINT PERSONNE_CATEGORIE_CATEGORIE_FK FOREIGN KEY (id_categorie) REFERENCES CATEGORIE (id_categorie) ) ; -- ----------------------------------------------------- -- Table GESTIONNAIRE -- ----------------------------------------------------- CREATE TABLE GESTIONNAIRE ( id_gestionnaire INT NOT NULL, CONSTRAINT GESTIONNAIRE_PK PRIMARY KEY (id_gestionnaire), CONSTRAINT GESTIONNAIRE_PERSONNE_FK FOREIGN KEY (id_gestionnaire) REFERENCES PERSONNE (id_personne) ON DELETE CASCADE ) ; -- ----------------------------------------------------- -- Table ADMIN -- ----------------------------------------------------- CREATE TABLE ADMIN ( id_admin INT NOT NULL, attribute1 VARCHAR(32) NOT NULL, CONSTRAINT ADMIN_PK PRIMARY KEY (id_admin), CONSTRAINT ADMIN_PERSONNE_FK FOREIGN KEY (id_admin) REFERENCES PERSONNE (id_personne) ON DELETE CASCADE ) ; -- ----------------------------------------------------- -- Table CLIENT -- ----------------------------------------------------- CREATE TABLE CLIENT ( id_client INT NOT NULL, CONSTRAINT CLIENT_PK PRIMARY KEY (id_client), CONSTRAINT CLIENT_PERSONNE_FK FOREIGN KEY (id_client) REFERENCES PERSONNE (id_personne) ON DELETE CASCADE ) ; -- ----------------------------------------------------- -- Table COMMANDE -- ----------------------------------------------------- CREATE TABLE COMMANDE ( id_client INT NOT NULL, id_commande INT NOT NULL, reference_cmd CHAR(10) NOT NULL, date_cmd DATE NOT NULL, statut_cmd VARCHAR(8) NOT NULL, CONSTRAINT COMMANDE_PK PRIMARY KEY (id_client, id_commande), CONSTRAINT COMMANDE_AK UNIQUE (reference_cmd), CONSTRAINT COMMANDE_CLIENT_FK FOREIGN KEY (id_client) REFERENCES CLIENT (id_client) ) ; -- ----------------------------------------------------- -- Table LIGNE_COMMANDE -- ----------------------------------------------------- CREATE TABLE LIGNE_COMMANDE ( id_client INT NOT NULL, id_commande INT NOT NULL, id_produit INT NOT NULL, quantite INT NOT NULL, CONSTRAINT LIGNE_COMMANDE_PK PRIMARY KEY (id_client, id_commande, id_produit), CONSTRAINT LIGNE_COMMANDE_COMMANDE_FK FOREIGN KEY (id_client, id_commande) REFERENCES COMMANDE (id_client, id_commande) ON DELETE CASCADE, CONSTRAINT LIGNE_COMMANDE_PRODUIT_FK FOREIGN KEY (id_produit) REFERENCES PRODUIT (id_produit) ) ;
On peut définir une table virtuelle des clients, donc manipulable comme une table de base (plus ou moins, selon le SGBD) :
CREATE VIEW CLIENT_V (id_client, adr_courriel, mot_passe, nom_personne, prenom_personne, telephone, ville) AS SELECT id_client, adr_courriel, mot_passe, nom_personne, prenom_personne, telephone, ville FROM PERSONNE JOIN CLIENT ON PERSONNE.id_personne = CLIENT.id_client ;
A ce propos, quel est (sera) votre SGBD ?
Même principe de définition de vues pour les gestionnaires et les admins.
A noter la contrainte à prévoir entre la disponibilité du stock (table STOCK) et les quantités commandées (table LIGNE_COMMANDE).
A noter la clé alternative {adr_courriel} définie pour la table PERSONNE : dans l’hypothèse où deux personnes ne peuvent pas avoir la même adresse de courriel.
Même principe pour la référence du produit (table PRODUIT) et pour la référence de la commande (table COMMANDE).
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager