Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 9 sur 9
  1. #1
    Membre à l'essai
    Homme Profil pro hugo MULLER
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Nom : Homme hugo MULLER
    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 : 23
    Points
    23

    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 Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 820
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 820
    Points : 24 808
    Points
    24 808

    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 de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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
    Membre à l'essai
    Homme Profil pro hugo MULLER
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Nom : Homme hugo MULLER
    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 : 23
    Points
    23

    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
    Modérateur
    Avatar de pachot
    Homme Profil pro Franck Pachot
    Consultant DBA en Suisse (dbi services) OCM 11g
    Inscrit en
    novembre 2007
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Nom : Homme Franck Pachot
    Âge : 43
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant DBA en Suisse (dbi services) OCM 11g
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : novembre 2007
    Messages : 1 369
    Points : 4 398
    Points
    4 398

    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 - Consultant en Suisse Romande (dbi services) - Oracle Certified Master (OCP 12c et OCM 11g) - twitter: @FranckPachot


  5. #5
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 820
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 820
    Points : 24 808
    Points
    24 808

    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 de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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
    Membre à l'essai
    Homme Profil pro hugo MULLER
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Nom : Homme hugo MULLER
    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 : 23
    Points
    23

    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 Confirmé Sénior
    Avatar de fsmrel
    Homme Profil pro François de Sainte Marie
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    4 769
    Détails du profil
    Informations personnelles :
    Nom : Homme François de Sainte Marie
    Localisation : Autre

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

    Informations forums :
    Inscription : septembre 2006
    Messages : 4 769
    Points : 13 274
    Points
    13 274

    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.
    Faites simple, mais pas plus simple ! (A. Einstein)
    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 »)


    De grâce, pas de questions techniques par MP, ma boîte de réception explose !
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale (Bonne lecture !)

  8. #8
    Membre à l'essai
    Homme Profil pro hugo MULLER
    Étudiant
    Inscrit en
    novembre 2012
    Messages
    32
    Détails du profil
    Informations personnelles :
    Nom : Homme hugo MULLER
    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 : 23
    Points
    23

    Par défaut

    Ok, merci pour vos réponses!

  9. #9
    Modérateur
    Avatar de CinePhil
    Homme Profil pro Philippe Leménager
    Ingénieur d'études en informatique
    Inscrit en
    août 2006
    Messages
    13 820
    Détails du profil
    Informations personnelles :
    Nom : Homme Philippe Leménager
    Âge : 51
    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 : 13 820
    Points : 24 808
    Points
    24 808

    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 de Formation Agronomique. Autoentrepreneur.
    Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
    « 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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •