1. #1
    Membre du Club

    Homme Profil pro
    Full Stack Web Developer
    Inscrit en
    avril 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Full Stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2004
    Messages : 38
    Points : 63
    Points
    63
    Billets dans le blog
    2

    Par défaut Hierarchie catégories périodiques

    Bonjour,

    Je cherche à résoudre la problématique suivante: J'ai des catégories qui contiennent des éléments numériques et ces catégories sont valables pour une période donnée.
    Par exemple:
    la catégorie test qui contient les éléments 2,3,4 et 5 est lié à la période du 13.12.2017 au 12.12.2018.
    la même catégorie test contient les éléments 3,4,5,6 pour la période du 13.12.2018 au 12.12.2019

    J'ai donc identifié 3 tables avec les relations suivantes:
    • Une catégorie appartient à une ou plusieurs périodes
    • Un élément appartient à aucune ou plusieurs catégories pour une période
    • Une période contient une ou plusieurs catégories
    • Une catégorie contient aucun ou plusieurs éléments


    J'ai donc des relations N à N entre catégories, éléments et périodes. Pour savoir à quelle catégorie un élément appartient, j'ai besoin de connaître son ID et la période associée.
    Je bloque sur l'extra-condition des éléments qui permet de retrouver la catégorie à laquelle mon élément a été lié pour une période définie.

    Je sollicite votre aide pour m'aider à comprendre comment modéliser mes tables pour que je puisse retrouver la catégorie associée à mon élément lorsque j'en connais la période.

    Voici le MPD auquel je suis arrivé (éléments numériques = trains)
    Nom : Capture.PNG
Affichages : 84
Taille : 30,6 Ko

    Si ça peut aider, ci-joint l'interface que je dois réaliser.

    Merci d'avance de votre aide
    Images attachées Images attachées  

  2. #2
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    6 141
    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 : 6 141
    Points : 20 464
    Points
    20 464
    Billets dans le blog
    16

    Par défaut

    Bonsoir Nic0tiN,

    Citation Envoyé par Nic0tiN Voir le message

    Pour savoir à quelle catégorie un élément appartient, j'ai besoin de connaître son ID et la période associée.
    Voulez-vous dire que pour une période donnée, un élément fait référence à une seule catégorie ?
    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 »)

    Je ne réponds pas aux questions techniques par MP. Les forums sont là pout ça.
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench

  3. #3
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 550
    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 : 3 550
    Points : 7 955
    Points
    7 955
    Billets dans le blog
    1

    Par défaut

    Bonjour

    Plusieurs remarques,

    Si la table centrale sur votre schéma est une table associative, alors elle devrait comporter tous les identifiants issus des tables avec lesquelles elle est en relation et seulement ceux là
    Or vous avez ajouté un identifiant "id" qui ne correspond à aucune des tables liées
    Un identifiant technique en raccourci de plusieurs colonnes identifiantes est interressant quand ces colonnes sont nombreuses, et d'un type char ou varchar encombrant, mais ce n'est pas le cas ici

    Dans les règles, vous mentionnez des "éléments" mais vous avez modélisé une table "train", Est-ce bien la même chose ?

    Par ailleurs, ne faut il pas considérer que la catégorie de trains doit être en relation avec le train, indépendamment de la période ?
    Si on parle de train au sens ferroviaire du terme, il me semble que c'est le cas : le train corail n° 4258 est un rapide ou un express peu importe la période
    Mais bon j'avoue volontiers ne pas être un expert ferroviaire

    Ce qui donnerait la modélisation conceptuelle suivante :
    CATEGORIE (CA_id, CA_code, CA_lib...) 0,n --- catégoriser --- 1,1 TRAIN (TR_id, TR_numero, TR_lib...) 1,n --- rouler --- 0,n PERIODE (PE_id, PE_dtdeb, pe_dtfin...)
    En dériverait le modèle logique suivant :
    CATEGORIE (CA_id, CA_code, CA_lib...)
    TRAIN (TR_id, TR_numero, TR_lib..., CA_id (fk))
    ROULER (TR_id, PE_id)
    PERIODE(PE_id, PE_dtdeb, pe_dtfin...)

  4. #4
    Membre du Club

    Homme Profil pro
    Full Stack Web Developer
    Inscrit en
    avril 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Full Stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2004
    Messages : 38
    Points : 63
    Points
    63
    Billets dans le blog
    2

    Par défaut

    Citation Envoyé par fsmrel Voir le message
    Bonsoir Nic0tiN,



    Voulez-vous dire que pour une période donnée, un élément fait référence à une seule catégorie ?
    Oui, c'est bien ça.

  5. #5
    Membre du Club

    Homme Profil pro
    Full Stack Web Developer
    Inscrit en
    avril 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Full Stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2004
    Messages : 38
    Points : 63
    Points
    63
    Billets dans le blog
    2

    Par défaut

    Bonjour,

    Merci de votre réponse. Votre modélisation est un peu trop simplifiée car j'ai besoin de conserver la notion de catégorie attribuée à un train selon la période.

    Citation Envoyé par escartefigue Voir le message
    Dans les règles, vous mentionnez des "éléments" mais vous avez modélisé une table "train", Est-ce bien la même chose ?
    Effectivement, c'est bien la même chose.

    Citation Envoyé par escartefigue Voir le message
    Par ailleurs, ne faut il pas considérer que la catégorie de trains doit être en relation avec le train, indépendamment de la période ?
    Non, le train se verra attribué une catégorie selon la période.

    Citation Envoyé par escartefigue Voir le message
    Si on parle de train au sens ferroviaire du terme, il me semble que c'est le cas : le train corail n° 4258 est un rapide ou un express peu importe la période
    Pour reprendre votre exemple, le 4528 est un rapide pour l'horaire actuel (valable jusqu'à la fin de l'année) mais peu devenir un express au prochain changement d'horaire.
    Dans le cas d'un changement de catégorie, il faut qu'on puisse savoir qu'en 2017 c'était un rapide et qu'en 2018 c'est un express.

  6. #6
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    6 141
    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 : 6 141
    Points : 20 464
    Points
    20 464
    Billets dans le blog
    16

    Par défaut

    Bonsoir Nic0tiN,

    Puisque la catégorie à laquelle appartient un train dépend de la période, vous devez associer les tables TRAIN et PERIODE au moyen d’une table associative, appelons-la par exemple TRAIN_PERIODE. La clé primaire de cette table est constituée des clés primaires de TRAIN et PERIODE :

    si la clé de la table TRAIN est {TrId} et celle de la table PERIODE {PerId}, alors la clé primaire de TRAIN_PERIODE est la paire {TrId, PerId}.





    Dans un 2e temps, vous connectez les tables TRAIN_PERIODE et CATEGORIE :



    la clé primaire {CatId} de la table CATEGORIE est composée de l’attribut CatId, lequel est ensuite intégré à la liste des attributs de la table TRAIN_PERIODE et fait l’objet d’une clé étrangère {CatId} permettant de préserver l’intégrité référentielle entre les tables TRAIN_PERIODE et CATEGORIE.

    La clé primaire de la table TRAIN_PERIODE n’a évidemment pas changé, elle reste la paire {TrId, PerId}.
    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 »)

    Je ne réponds pas aux questions techniques par MP. Les forums sont là pout ça.
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench

  7. #7
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    6 141
    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 : 6 141
    Points : 20 464
    Points
    20 464
    Billets dans le blog
    16

    Par défaut

    Quelques éléments de lecture :

    Entité-type associative

    Associations de un à plusieurs

    Clé alternative (cas général)

    Clé alternative (cas particulier de MySQL Workbench)


    A noter que la paire {PerDebut, PerFin} doit être clé alternative e la table PERIODE : on ne peut pas avoir deux paires <début, fin> ayant la même valeur.




    De même, si deux trains ne peuvent pas avoir le même numéro, alors le singleton {TrNum} doit faire l’objet d’une clé alternative de la table TRAIN.
    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 »)

    Je ne réponds pas aux questions techniques par MP. Les forums sont là pout ça.
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench

  8. #8
    Expert éminent

    Homme Profil pro
    bourreau
    Inscrit en
    mars 2010
    Messages
    3 550
    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 : 3 550
    Points : 7 955
    Points
    7 955
    Billets dans le blog
    1

    Par défaut

    Citation Envoyé par Nic0tiN Voir le message
    Bonjour,

    Merci de votre réponse. Votre modélisation est un peu trop simplifiée car j'ai besoin de conserver la notion de catégorie attribuée à un train selon la période.
    en ce cas la proposition que FSMRel a faite à 16h03 est tout à fait adaptée

    Citation Envoyé par Nic0tiN Voir le message
    Effectivement, c'est bien la même chose.
    Les synonymes doivent être évacués du vocabulaire pour éviter toute confusion, mentionnez les uniquement dans le dictionnaire de données avec un renvoi vers le seul mot retenu pour la modélisation
    La même démarche sera la bienvenue dans les spécifications fonctionnelles

  9. #9
    Membre du Club

    Homme Profil pro
    Full Stack Web Developer
    Inscrit en
    avril 2004
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : Suisse

    Informations professionnelles :
    Activité : Full Stack Web Developer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : avril 2004
    Messages : 38
    Points : 63
    Points
    63
    Billets dans le blog
    2

    Par défaut

    Merci beaucoup pour vos réponses, cela me conforte, j'avais eu la bonne réflexion dès le début

  10. #10
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    septembre 2006
    Messages
    6 141
    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 : 6 141
    Points : 20 464
    Points
    20 464
    Billets dans le blog
    16

    Par défaut

    Une affaire qui roule !

    J'espère qu'Escartefigue et moi-même aurons un billet gratuit (wagon Pullman de préférence)
    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 »)

    Je ne réponds pas aux questions techniques par MP. Les forums sont là pout ça.
    __________________________________
    Bases de données relationnelles et normalisation : de la première à la sixième forme normale
    Modéliser les données avec MySQL Workbench

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

Discussions similaires

  1. Hierarchie complexe et commande Shape
    Par blackspine dans le forum Général VBA
    Réponses: 2
    Dernier message: 07/08/2004, 12h49
  2. Réponses: 2
    Dernier message: 02/08/2004, 17h34
  3. [Inclusion des fichiers] hierarchie
    Par Casp dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 09/07/2004, 12h43
  4. [BES] Exécution périodique de tâches
    Par Bobby McGee dans le forum Autres
    Réponses: 5
    Dernier message: 04/02/2004, 17h15
  5. Affichage périodique d'une fonction
    Par boobob dans le forum C
    Réponses: 16
    Dernier message: 08/12/2003, 16h06

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