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 :

Demande d'aide MCD


Sujet :

Schéma

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Juin 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Demande d'aide MCD
    Bonjour,

    Je sollicite votre avis sur un MCD que je viens de réaliser.
    Étant novice dans le domaine, pouvez vous me dire si vous pensez qu'il est correct ou pas svp.

    Énoncé :
    Une entreprise souhaite mettre sur son site des tests de personnalité a destination de ses clients.
    Il n'existe pour l'instant qu'un seul test de disponible mais d'autres seront ajoutés à l'avenir.
    Le test consiste en une série de 24 questions comportant chacune 4 adjectifs.
    Pour chaque question, l'utilisateur doit cocher l'adjectif lui correspondant le plus et celui lui correspondant le moins.
    A chaque adjectif correspond 2 phrases : synonyme et antonyme, que l'on trouvera dans le compte rendu finale.
    Chaque adjectif représente un trait de personnalité différent.
    Il existe 4 traits de personnalité (d'où le fait qu'il y ait 4 adjectifs par question).
    A la fin du questionnaire, on fait la somme des réponses plus et moins pour déterminer le profil de l'utilisateur.
    Pour chaque profil correspond un texte argumenté qui sera également dans le rapport final.

    Voici le diagramme UML que j'ai créé. Pouvez-vous me dire ce que vous en pensez svp. Notamment au niveau des multiplicités.

    Nom : Discol.drawio.png
Affichages : 197
Taille : 56,3 Ko

    Merci à tous

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 136
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : bourreau
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 10 136
    Points : 38 909
    Points
    38 909
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Dans votre modèle, on ne sait pas quelles sont les réponses choisies par l'utilisateur.

    Le test comporte des questions, chaque question propose 4 choix, parmi ces choix, l'utilisateur en sélectionne deux (un qui lui ressemble le plus, l'autre le moins).

    Faute de précision dans l'énoncé, j'ai ajouté une notion d'inscription dans le modèle ci-dessous : l'utilisateur s'inscrit au test avant de répondre aux questions. C'est la raison d'être de la contrainte d'inclusion dans ma proposition.
    Ici je n'ai prévu qu'une seule inscription d'un utilisateur pour un même test, si un utilisateur veut pouvoir passer plusieurs fois un même test, il faudra légèrement modifier ce modèle.

    Quel logiciel de modélisation utilisez-vous ? Le type "incremental" est curieux et ne correspond à aucun SGBD que je connais.

    Voici donc une proposition de MCD (je préfère ce formalisme plutôt que le diagramme UML)

    Dans l'association SL_selectionner, l'attribut SL_type permet de savoir s'il s'agit un choix d'adhésion (adjectif correspondant le plus) ou de rejet (le moins).

    Nom : Sans titre.png
Affichages : 208
Taille : 58,6 Ko

    Ce qui donne le diagramme de classe suivant :

    Nom : UMLpng.png
Affichages : 194
Taille : 16,4 Ko

    Et voici le script DDL généré après avoir choisi arbitrairement SQL server dans Looping :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
     
    CREATE TABLE US_user(
       US_ident INT IDENTITY,
       US_nom VARCHAR(50) NOT NULL,
       US_prenom VARCHAR(50) NOT NULL,
       PRIMARY KEY(US_ident)
    );
     
    CREATE TABLE TE_test(
       TE_ident INT IDENTITY,
       TE_code CHAR(4) NOT NULL,
       TE_libelle VARCHAR(128) NOT NULL,
       PRIMARY KEY(TE_ident),
       UNIQUE(TE_code)
    );
     
    CREATE TABLE QU_question(
       TE_ident INT,
       QU_sequ SMALLINT,
       QU_libelle VARCHAR(255) NOT NULL,
       PRIMARY KEY(TE_ident, QU_sequ),
       FOREIGN KEY(TE_ident) REFERENCES TE_test(TE_ident)
    );
     
    CREATE TABLE TR_trait(
       TR_ident INT IDENTITY,
       TR_code CHAR(4) NOT NULL,
       TR_libelle VARCHAR(50) NOT NULL,
       PRIMARY KEY(TR_ident),
       UNIQUE(TR_code)
    );
     
    CREATE TABLE CH_choix(
       TE_ident INT,
       QU_sequ SMALLINT,
       CH_sequ TINYINT,
       TR_ident INT NOT NULL,
       PRIMARY KEY(TE_ident, QU_sequ, CH_sequ),
       FOREIGN KEY(TE_ident, QU_sequ) REFERENCES QU_question(TE_ident, QU_sequ),
       FOREIGN KEY(TR_ident) REFERENCES TR_trait(TR_ident)
    );
     
    CREATE TABLE IN_inscrire(
       US_ident INT,
       TE_ident INT,
       IN_date DATE NOT NULL,
       PRIMARY KEY(US_ident, TE_ident),
       FOREIGN KEY(US_ident) REFERENCES US_user(US_ident),
       FOREIGN KEY(TE_ident) REFERENCES TE_test(TE_ident)
    );
     
    CREATE TABLE SL_selectionner(
       US_ident INT,
       TE_ident INT,
       QU_sequ SMALLINT,
       CH_sequ TINYINT,
       SL_type BIT NOT NULL,
       PRIMARY KEY(US_ident, TE_ident, QU_sequ, CH_sequ),
       FOREIGN KEY(US_ident) REFERENCES US_user(US_ident),
       FOREIGN KEY(TE_ident, QU_sequ, CH_sequ) REFERENCES CH_choix(TE_ident, QU_sequ, CH_sequ)
    );
    alter table SL_selectionner
    add foreign key (US_ident, TE_ident)
    references IN_inscrire (US_ident, TE_ident)
    ;

    EDIT : la cardinalité de QU vers PR doit être corrigée en 1,n au lieu de 0,n, une question propose au moins un choix (en l'occurrence 4 et seulement 4)

Discussions similaires

  1. Demande d'aide MCD
    Par GasconWarrior dans le forum Schéma
    Réponses: 2
    Dernier message: 26/04/2022, 10h47
  2. Demande d'aide MCD
    Par GasconWarrior dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 21/04/2022, 11h45
  3. demande d'aide MCD
    Par minerva dans le forum Merise
    Réponses: 2
    Dernier message: 06/06/2011, 16h34

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