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 :

Plusieurs tables qui pointent vers 1 seule table


Sujet :

Schéma

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 32
    Points : 34
    Points
    34
    Par défaut Plusieurs tables qui pointent vers 1 seule table
    Bonjour tout le monde,

    Je suis entrain de créer un MCD pour mon projet en entreprise et je n'arrive pas vraiment à savoir si ce que j'ai fait est juste :

    En créant certaines tables, je me suis aperçu qu'elles avaient 2 champs similaires : status et comment.
    J'ai donc voulu sortir ces champs pour les mettre dans 2 tables indépendantes, et les relier à toutes les tables qui les utilisaient.

    Du coup, je me retrouve avec 4 tables qui pointent vers mes nouvelles tables comment et status.

    Est-ce que c'est correct?

    Merci pour votre aide!

  2. #2
    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
    Tu n'en dis pas assez pour qu'on puisse juger de la pertinence de la chose.

    Est-ce que, sémantiquement, les 4 tables sont des spécialisations de celle sur laquelle elles pointent ? Tu serais alors en présence d'un héritage de données.

    Exemple...
    Règles de gestion :
    Une voiture est un véhicule et un véhicule peut être une voiture.
    Un camion est un véhicule et un véhicule peut être un camion.

    MCD :
    voiture -(1,1)----être----0,1- vehicule
    camion -(1,1)----être----0,1-------|

    Tables :
    te_vehicule_veh (veh_id, veh_immatriculation, [autres colonnes communes à tous les véhicules])
    th_voiture_vtr (vtr_id_vehicule, vtr_nb_places, [autres colonnes spécifiques aux voitures])
    th_camion_cam (cam_id_vehicule, cam_tonnage, [autres colonnes spécifiques aux camions])

    Dans ton cas, que contiennent ces tables ?
    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 !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 32
    Points : 34
    Points
    34
    Par défaut
    Hey, merci pour ta réponse!

    Concrètement, j'ai 4 tables qui contiennent des infos sur des contrats clients :
    1st -> CONTRAT( id, titre,..., status,comments)
    2nd -> CHAPITRE_CONTRAT (id, titre,desc,...,status,comments)
    3rd -> SECTION_CLIENT (id, name, value,...,status,comments)
    4th -> SECTION_STANDARD (id, ref,...,comments)

    CONTRAT -1,n----a----1,1- CHAPITRE
    CHAPITRE -1,n----a----1,n- SECTION_CLIENT
    SECTION_CLIENT-1,n----est comparée----0,1- SECTION_STANDARD

    J'ai donc voulu sortir status et comments, et en faire 2 tables indépendantes.
    Mais utiliser 4 associations identiques sur 2 tables, je ne trouve pas ça très pertinent...

  4. #4
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Citation Envoyé par pims42 Voir le message
    J'ai donc voulu sortir ces champs pour les mettre dans 2 tables indépendantes, et les relier à toutes les tables qui les utilisaient.
    Si la raison est seulement parce "les colonnes sont similaires", alors non, ce n'est pas une bonne raison. Il faut savoir si ces sont des entités indépendantes ou si c'est une information qui n'a de sens que pour une ligne d'une table.

    A priori, un 'status' peut être une notion indépendante qui peut s'appliquer à plusieurs entités.

    Un commentaire libre sera par contre souvent propre à un enregistrement particulier. Par contre, s'il n'est que rarement utilisé avec le reste de l'enregistrement, il peut y avoir un sens à le séparer dans le modèle physique.

    Cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  5. #5
    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
    Le statut est typiquement une donnée répétitive qu'il faut externaliser dans une table de référence. Attention cependant au fait que certains statuts peuvent être spécifiques aux contrats, d'autres spécifiques aux chapitres de contrats... À toi de le déterminer.

    Par contre, les commentaires sont plutôt des données uniques qui sont des propriétés des entités auxquels ils se rapportent. Si le commentaire est systématiquement renseigné, le laisser dans la table du contrat, du chapitre... Si les commentaires sont rares, alors on peut aussi les externaliser dans des tables séparées commentaire_contrat, commentaire_chapitre...
    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 !

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 32
    Points : 34
    Points
    34
    Par défaut
    Ok pour le status : cette table contiendra un nombre de données fixe ( agreed, in review, in negociation, obsolete, rejected). Toutes les tables citées auparavant l'utiliseront.

    Mais pour les commentaires, ce n'est effectivement pas obligatoire hormis pour la table SECTION_CLIENT
    Du coup, pour le status, est ce que ça se fait comme ça :



    Ou alors, je fais une association relié à status pour chaque entité?

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


    Citation Envoyé par pims42 Voir le message
    Ou alors, je fais une association relié à status pour chaque entité?
    C'est au moins comme cela qu'il faut faire, sinon on lit ceci :

    Un contrat a exactement un statut (c'est-à-dire au moins un et au plus un statut), un contrat a exactement un chapitre, exactement une section client, exactement une section standard, etc. On dérive vers la blijection à tous les étages.

    Par ailleurs, si vous n’avez qu’une entité-type STATUT, cela veut dire que chaque valeur de statut a un sens pour chaque contrat, chaque chapitre, chaque section client et chaque section standard.
    (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.

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 32
    Points : 34
    Points
    34
    Par défaut
    Ok, merci pour vos réponses!

  9. #9
    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
    pims , Ton schéma représente une association à 5 branches avec des cardinalités 1,1 sur 4 d'entre elles. Elle est donc fausse !

    Règles de gestion :
    Un contrat a un statut et un statut peut être celui d'un contrat.
    Un chapitre a un statut et un statut peut être celui d'un chapitre.
    Une section-client a un statut et un statut peut être celui d'une section-client.
    Une section-standard a un statut et un statut peut être celui d'une section-standard.

    Tu vois bien là qu'il y a 4 associations et non pas une seule !

    contrat -1,1----avoir----0,n--------- statut
    chapitre -1,1----avoir----0,n-------------|
    section-client -1,1----avoir----0,n------|
    section-standard -1,1----avoir----0,n--|
    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 !

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

Discussions similaires

  1. Plusieurs TButton qui pointent sur une seule procédure
    Par Remtaril dans le forum Débuter
    Réponses: 7
    Dernier message: 20/04/2011, 09h20
  2. [AC-2002] Deux formulaires qui pointent vers une même table
    Par antezi dans le forum IHM
    Réponses: 2
    Dernier message: 11/02/2010, 21h27
  3. plusieurs table vers une seule table
    Par rrbenez dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 02/09/2009, 21h51
  4. [debutant] 2 shemas qui pointent sur la meme table
    Par pmartin8 dans le forum Oracle
    Réponses: 1
    Dernier message: 16/05/2006, 20h33
  5. Réponses: 4
    Dernier message: 14/09/2005, 16h29

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