IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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

Schéma Discussion :

Vente de CD de musique


Sujet :

Schéma

  1. #1
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut Vente de CD de musique
    salut tout le monde.
    je suis entrain de réaliser un mcd pour une application web e-commerce pour la vente de cds de musique,et j'ai besoins de vos avis.

    j'ai inclus une image contenant mon mcd.
    svp est ce que mon mcd est correcte?
    j'ai aussi besoin de votre aide à propos de la règle de gestion suivante:

    l'entreprise propose à ses clients une promotion:pour chaque genre de cd,un cd particulier de ce genre est en promotion,et sera donc vendu avec un rabais de 20%


    svp est ce que la liaison que j'ai fait entre les entités:cd,genre et promotion réponds à cette règle?? si ce n'est le cas vous pouvez me suggérez la liaison correcte.

    je vous remercie par avance.
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 945
    Points : 30 716
    Points
    30 716
    Billets dans le blog
    16
    Par défaut
    Bonsoir azdinos,


    Citation Envoyé par azdinos Voir le message
    L'entreprise propose à ses clients une promotion : pour chaque genre de cd, un cd particulier de ce genre est en promotion, et sera donc vendu avec un rabais de 20%.
    Quand vous dites qu’un CD en particulier peut être en promotion, je suppose que :
    1) La promo vaut pour une période donnée et une seule. Confirmez-vous ?

    2) Au cours de cette période, parmi la liste (CD1, CD2, ..., CDn) des CD du genre G1, c’est par exemple le CD CD2 et lui seul qui sera en promo. Confirmez-vous ?

    3) Le même CD peut faire l’objet de plus d’une promotion à des périodes distinctes. Confirmez-vous ?
    Si 20% est le rabais consenti quelle que soit la promo et le genre, l’entité-type PROMOTION n’a pas être porteuse de la propriété taux_promotion : cette propriété n’est justifiée que si vous confirmez que :
    4) Le rabais peut différer en fonction de la période.

    5) Et/ou le rabais peut différer en fonction du genre (merci de préciser).
    En tout état de cause, votre ternaire autorise la situation suivante :

    GENRE    CD    PROMO    PERIODE
    -------------------------------
    G1       CD1   PR1      PE1
    G1       CD2   PR1      PE1 
    C'est-à-dire que deux CD d’un même genre peuvent être en promo en même temps.
    6) Est-ce bien ce que vous attendez ?
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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 »)

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

  3. #3
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    bonsoir fsmrel.
    d'abords,merci pour votre réponse.
    je confirme 1,2,et 3.
    mais pas 4 et 5. le rabais est toujours 20% selon le cahier de charge.
    et c'est pas le résultat désiré dans (6).un seul cd parmi un genre, peut avoir une promotion.
    donc comment faire pour régler ce problème??

  4. #4
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 945
    Points : 30 716
    Points
    30 716
    Billets dans le blog
    16
    Par défaut
    Bonsoir azdinos,


    Citation Envoyé par azdinos Voir le message
    le rabais est toujours 20% selon le cahier de charge.
    Il faut donc sortir ce rabais des entités-types du MCD (en l’occurrence PROMOTION) et le faire figurer dans une entité-type PARAMETRE qui pourra servir au niveau SQL (sous forme de table ou de fonction, à voir) pour éviter de coder en dur la constante 20% dans les requêtes.

    Citation Envoyé par azdinos Voir le message
    je confirme 1,2,et 3
    En conséquence, il existe une dépendance fonctionnelle (au sens Merise du terme) :
    GENRE X PERIODE -> CD
    Le plus simple pour modéliser ça est de définir une entité-type faible PROMO dont l’identifiant est la paire d’attributs {Genre, Periode} hérités des identifiants des entités-types GENRE et PERIODE. Cet héritage passe par l’utilisation de l’identification relative (voir par exemple ici).




    Pour obtenir les parenthèses encadrant 1,1 et rendre les liens « identifiants » au sens PowerAMC :



    Ceci dit, un problème de viol de BCNF se profile, il faudra qu’on en parle.
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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 »)

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

  5. #5
    Candidat au Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Avril 2013
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 5
    Points : 4
    Points
    4
    Par défaut
    merci beaucoup pour votre aide fsmrel

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 945
    Points : 30 716
    Points
    30 716
    Billets dans le blog
    16
    Par défaut Chouffe la BCNF !
    Bonsoir azdinos,


    Voici le script fourni par PowerAMC :


    Table PERIODE (il faudra contrôler que les périodes ne se chevauchent pas...)

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    CREATE TABLE PERIODE 
    (
       Periode              Int                  NOT NULL,
       DateDebut            Date                 NOT NULL,
       DateFin              Date                 NOT NULL,
       CONSTRAINT PERIODE_PK PRIMARY KEY (Periode)
    ) ;

    TABLE GENRE
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE TABLE GENRE 
    (
       Genre                Int                  NOT NULL,
       Glibelle             Varchar(64)          NOT NULL,
       CONSTRAINT GENRE_PK PRIMARY KEY (Genre)
    ) ;

    TABLE CD
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE CD 
    (
       CD                   Int                  NOT NULL,
       Genre                Int                  NOT NULL,
       Clibelle             Varchar(64)          NOT NULL,
       CONSTRAINT CD_PK PRIMARY KEY (CD),
       CONSTRAINT CD_GENRE_FK FOREIGN KEY (Genre)
          REFERENCES Genre (Genre) 
    ) ;

    TABLE PROMO
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    CREATE TABLE PROMO 
    (
       Genre                Int                  NOT NULL,
       Periode              Int                  NOT NULL,
       CD                   Int                  NOT NULL,
       CONSTRAINT PROMO_PK PRIMARY KEY (Genre, Periode),
       CONSTRAINT PROMO_PERIODE_FK FOREIGN KEY (Periode)
          REFERENCES PERIODE (Periode),
       CONSTRAINT PROMO_GENRE_FK FOREIGN KEY (Genre)
          REFERENCES GENRE (Genre),
       CONSTRAINT PROMO_CD_FK FOREIGN KEY (CD)
          REFERENCES CD (CD)
    ) ;

    Comme annoncé la fois précédente, la table PROMO viole la BCNF (présence de la dépendance fonctionnelle {CD} -> {Genre} dont le déterminant {CD} n’est pas clé candidate), mais on va dire : « Même pas grave ! » Pour pallier, on ajoute pour commencer et sans aucun complexe une surclé à la table CD (contrainte CD_AK) :

    TABLE CD
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE CD 
    (
       CD                   Int                  NOT NULL,
       Genre                Int                  NOT NULL,
       Clibelle             Varchar(64)          NOT NULL,
       CONSTRAINT CD_PK PRIMARY KEY (CD),
       CONSTRAINT CD_AK UNIQUE (CD, Genre),
       CONSTRAINT CD_GENRE_1 FOREIGN KEY (Genre)
          REFERENCES Genre (Genre) 
    ) ;

    Ensuite et toujours sans le moindre complexe, on modifie la contrainte la contrainte référentielle PROMO_CD_FK de la table PROMO, en sorte que la paire de colonnes {CD, Genre} de cette table fasse référence à la paire {CD, Genre} de la table CD :

    TABLE PROMO
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    CREATE TABLE PROMO (
       Genre                Int                  NOT NULL,
       Periode              Int                  NOT NULL,
       CD                   Int                  NOT NULL,
       CONSTRAINT PROMO_PK PRIMARY KEY (Genre, Periode),
       CONSTRAINT PROMO_PERIODE_FK FOREIGN KEY (Periode)
          REFERENCES PERIODE (Periode),
       CONSTRAINT PROMO_GENRE_FK FOREIGN KEY (Genre)
          REFERENCES GENRE (Genre),
       CONSTRAINT PROMO_CD_FK FOREIGN KEY (CD, Genre)
          REFERENCES CD (CD, Genre)
    ) ;

    On peut désormais tenter toutes les infractions, ça sera l’échec, il y a désormais inviolabilité de la règle selon laquelle le CD défini pour un genre donné G pour une période P ne pourra être qu'un unique CD, lequel fait référence au genre G.

    Au point que la contrainte référentielle PROMO_GENRE_FK devient du reste redondante et peut disparaître, elle est assurée par transitivité :
    PROMO -> CD -> GENRE
    La structure de la table PROMO devient finalement la suivante :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    CREATE TABLE PROMO (
       Genre                Int                  NOT NULL,
       Periode              Int                  NOT NULL,
       CD                   Int                  NOT NULL,
       CONSTRAINT PROMO_PK PRIMARY KEY (Genre, Periode),
       CONSTRAINT PROMO_PERIODE_FK FOREIGN KEY (Periode)
          REFERENCES PERIODE (Periode),
       CONSTRAINT PROMO_CD_FK FOREIGN KEY (CD, Genre)
          REFERENCES CD (CD, Genre)
    ) ;

    Un bout de jeu d’essai :

    Table GENRE
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO GENRE (Genre, Glibelle) VALUES (1, 'symphonie') ;
    INSERT INTO GENRE (Genre, Glibelle) VALUES (2, 'concerto') ;
    INSERT INTO GENRE (Genre, Glibelle) VALUES (3, 'opéra') ; 
     
    SELECT  '' AS GENRE, * FROM GENRE ;

    Table CD
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    INSERT INTO CD (CD, Genre, Clibelle) VALUES (1, 1, 'Symphonie pastorale') ;
    INSERT INTO CD (CD, Genre, Clibelle) VALUES (2, 1, 'Symphonie du nouveau monde') ;
    INSERT INTO CD (CD, Genre, Clibelle) VALUES (3, 1, 'Symphonie fantastique') ; 
    INSERT INTO CD (CD, Genre, Clibelle) VALUES (4, 2, 'Aranjuez') ;
    INSERT INTO CD (CD, Genre, Clibelle) VALUES (5, 2, 'Brandebourgeois') ;
    INSERT INTO CD (CD, Genre, Clibelle) VALUES (6, 3, 'La Traviata') ;
    INSERT INTO CD (CD, Genre, Clibelle) VALUES (7, 3, 'Rigoletto') ; 
     
    SELECT  '' AS CD, * FROM CD ;

    Table PROMO
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    INSERT INTO PROMO (CD, Genre, Periode) VALUES (1, 1, 1) ;       -- OK !
    INSERT INTO PROMO (CD, Genre, Periode) VALUES (3, 1, 1) ;       --  Boum !
    INSERT INTO PROMO (CD, Genre, Periode) VALUES (1, 2, 3) ;       --  Boum !  
     
    SELECT  '' AS PROMO, * FROM PROMO ;

    P.S. N’hésitez pas à voter pour les messages qui vous ont aidé !
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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 »)

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

  7. #7
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    C'est beau de simplicité...
    Kropernic

  8. #8
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    7 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 7 945
    Points : 30 716
    Points
    30 716
    Billets dans le blog
    16
    Par défaut
    Merci Kropernic,

    J'espère ne pas avoir fait trop simple...
    (a) Faites simple, mais pas plus simple ! (A. Einstein)
    (b) Certes, 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 »)

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

  9. #9
    Expert confirmé
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Je ne dis pas grand chose sur ce forum car étant novice je vais probablement induire les gens en erreur mais je lis régulièrement les sujets auxquels vous participez et c'est toujours grandement instructif
    Kropernic

Discussions similaires

  1. Réponses: 15
    Dernier message: 14/09/2020, 12h08
  2. Réponses: 0
    Dernier message: 12/12/2010, 05h30
  3. E-Commerce de vente de Musique MP3
    Par artiom dans le forum E-Commerce
    Réponses: 0
    Dernier message: 15/03/2010, 18h40
  4. Réponses: 1
    Dernier message: 11/07/2009, 14h53
  5. [eCommerce] Vente de musiques et de films en ligne
    Par toure32 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 31/03/2008, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo