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

Merise Discussion :

Aide à la conception d'une table


Sujet :

Merise

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2015
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2015
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Aide à la conception d'une table
    Bonjour,

    Je suis en train de créer une table utilisateur comme ceci:
    Pièce jointe 181524

    Et je ne sais pas trop comment faire, ou si c'est la bonne solution sachant que je veux éviter la redondance.
    • Un utilisateur peut avoir plusieurs responsables (co-responsable)

    • Un utilisateur peut avoir un binôme



    Ma table est donc réflexive mais cela ne me parait pas optimale.
    Pouvez-vous me donner votre avis quant à cette conception?

    Merci à vous.

  2. #2
    Membre expert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2013
    Messages
    1 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2013
    Messages : 1 563
    Points : 3 404
    Points
    3 404
    Par défaut
    Citation Envoyé par Kuros Voir le message
    Bonjour,

    Je suis en train de créer une table utilisateur comme ceci:
    Pièce jointe 181524

    Et je ne sais pas trop comment faire, ou si c'est la bonne solution sachant que je veux éviter la redondance.
    • Un utilisateur peut avoir plusieurs responsables (co-responsable)

    • Un utilisateur peut avoir un binôme



    Ma table est donc réflexive mais cela ne me parait pas optimale.
    Pouvez-vous me donner votre avis quant à cette conception?

    Merci à vous.
    Pour ma part j'utiliserais des associations. Ça évite les blancs dans les champs dans le cas ou binôme ou responsable ne serait pas renseignés. (d'autant plus si un utilisateur peut avoir plusieurs responsables.

  3. #3
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 119
    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 : 8 119
    Points : 31 627
    Points
    31 627
    Billets dans le blog
    16
    Par défaut
    Bonsoir Kuros,


    Vous postez dans le forum Merise : commencez par les règles de gestion des données et un MCD.


    Fournissez toujours des règles complètes. Vous écrivez par exemple :

    Un utilisateur peut avoir plusieurs responsables (co-responsable).

    Il faudrait compléter par :

    Un utilisateur peut être responsable de plusieurs utilisateurs.


    Vous écrivez :

    Un utilisateur peut avoir un binôme.


    Il faudrait compléter (probablement) par :

    Et un utilisateur peut être binôme d’au plus un utilisateur.



    Si les règles sont celles-là, le MCD serait le suivant :




    Le MLD correspondant :




    Et le code SQL :

    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
     
     
    CREATE TABLE UTILISATEUR 
    (
       Id_Utilisateur       INT                  NOT NULL,
       Nom                  VARCHAR(32)          NOT NULL,
       Prenom               VARCHAR(32)          NOT NULL,
       CONSTRAINT _UTILISATEUR_PK PRIMARY KEY (Id_Utilisateur)
    ) ;
     
    CREATE TABLE RESPONSABILITE 
    (
       Id_Utilisateur       INT                  NOT NULL,
       Id_Responsable       INT                  NOT NULL,
       CONSTRAINT RESPONSABILITE_PK PRIMARY KEY (Id_Utilisateur, Id_Responsable),
       CONSTRAINT RESPONSABILITE_UTILISATEUR_FK FOREIGN KEY (Id_Utilisateur)
          REFERENCES UTILISATEUR (Id_Utilisateur),
       CONSTRAINT RESPONSABILITE_RESPONSABLE_FK FOREIGN KEY (Id_Responsable)
          REFERENCES UTILISATEUR (Id_Utilisateur)
    ) ;
     
    CREATE TABLE BINOMER 
    (
       Id_Utilisateur       INT                  NOT NULL,
       Id_Binome            INT                  NOT NULL,
       CONSTRAINT BINOMER_PK PRIMARY KEY (Id_Utilisateur),
       CONSTRAINT BINOMER_AK UNIQUE (Id_Binome),
       CONSTRAINT BINOMER_UTILISATEUR_FK FOREIGN KEY (Id_Utilisateur)
          REFERENCES UTILISATEUR (Id_Utilisateur),
       CONSTRAINT BINOMER_RESPONSABLE_FK FOREIGN KEY (Id_Binome)
          REFERENCES UTILISATEUR (Id_Utilisateur),
       CONSTRAINT BINOMER_CHK01 CHECK (Id_Utilisateur <> Id_Binome) 
    ) ;


    Quelques contraintes à prévoir :

    On ne peut pas être son propre supérieur, on ne peut pas être son propre binôme.

Discussions similaires

  1. Aide à la conception d'une table
    Par Kuros dans le forum MySQL
    Réponses: 3
    Dernier message: 25/06/2015, 14h34
  2. Réponses: 2
    Dernier message: 16/03/2007, 13h09
  3. [Conception] Créer une table avec php
    Par freezerhm dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 29/10/2006, 13h15
  4. Interrogation sur la conception d'une table
    Par catoucat dans le forum Modélisation
    Réponses: 4
    Dernier message: 05/07/2006, 11h38
  5. [MySQL] Aide select à partir d'une table
    Par carlosdz dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 28/06/2006, 23h47

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