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 :

Conception d'une BD Commande [MCD]


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 34
    Points : 24
    Points
    24
    Par défaut Conception d'une BD Commande
    Bonsoir,

    Je suis en train de faire une base de données pour une "commande", et je me pose une question sur la pertinence d'un choix que j'ai fait. Je voudrais avoir un retour là-dessus, ou même une simple orientation vers la documentation appropriée afin que je me fasse mon idée.

    Je vais prendre un exemple fictif pour illustrer ma réflexion :
    Imaginons une table membres qui détient toutes les informations personnelles qui vont bien.
    Maintenant imaginons une table grades qui détient quant à elle les informations sur les droits de lecture et d'écritures de tous les grades.
    Chaque membre possède un seul et unique grade, chaque grade est possédé par 0 ou plusieurs membres.

    Problème : comment faire pour que ces deux tables soient liées de la manière la plus optimisée possible.

    Pour le moment, j'ai décidé de créer une table membre_grade qui contient l'id d'un membre et l'id d'un grades, le tout formant une clef primaire.

    Mais je me demandais si je ne peux pas mettre une simple référence sur la table membre qui pointerait sur le grade qui va bien.


    Personnellement, j'ai l'impression que créer une nouvelle table grade_membre permet d'optimiser les traitements vu que les requêtes se feraient sur de plus petites tables (que deux éléments au contraire de la table membre qui en contient une vingtaine).
    Surtout qu'en général, il s'agira d'utiliser l'ID d'un membre stocké dans une variable session, et de faire après une jointure entre membre_grade et grades.

    Quelqu'un a un avis plus poussé sur le sujet ?

    Merci d'avance.

  2. #2
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 130
    Points : 162
    Points
    162
    Par défaut
    Bonsoir

    Pas d'utilité à priori pour cette table !
    Moins il y a de tables plus la maintenance est facile...
    Il suffit de mettre le Grade dans la table membre.

    Si par contre l'unicité du grade d'un membre n'est pas certaine alors...
    Ou si l'on souhaite l'historique des passage de grade ou si...

    Mais sans autre information pas de table inutile !

  3. #3
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    Pour expliquer la réponse de comico, tu décris la relation entre les membres et les grades par cette règle de gestion :
    Chaque membre possède un seul et unique grade, chaque grade est possédé par 0 ou plusieurs membres.
    Cela correspond au MCD suivant :
    membre -1,1----posséder----0,n- grade

    Quand on génère les tables avec ces cardinalités (1,1 - 0,n), l'identifiant de la table grade est référencé en clé étrangère dans la table membre :
    grade (g_id, g_nom...)
    membre (m_id, m_id_grade, m_nom...)

    Une table associative ne se justifie que dans les schémas suivants :
    membre -0,n----posséder----0,n- grade
    membre -1,n----posséder----0,n- grade
    membre -0,1----posséder----0,n- grade
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  4. #4
    Membre à l'essai
    Inscrit en
    Janvier 2010
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 34
    Points : 24
    Points
    24
    Par défaut
    Simple mais efficace. Merci pour vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Conception d'une CLI (command line interface)
    Par Alain Defrance dans le forum Général Java
    Réponses: 3
    Dernier message: 09/01/2009, 00h38
  2. Réponses: 0
    Dernier message: 29/10/2007, 14h28
  3. Find et mv dans une même commande
    Par Yann21 dans le forum Linux
    Réponses: 3
    Dernier message: 28/02/2005, 10h49
  4. [Conception] Passer une fonction en paramètre
    Par pejay dans le forum Langage
    Réponses: 9
    Dernier message: 09/12/2004, 13h58
  5. Conception d'une classe parente
    Par VincentB dans le forum Langage
    Réponses: 9
    Dernier message: 24/06/2003, 17h28

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