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

 MySQL Discussion :

Conception d'une table liés à deux autres tables [MySQL-5.5]


Sujet :

MySQL

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Conception d'une table liés à deux autres tables
    Bonjour tout le monde,

    Je sollicite votre aide pour un problème de conception que je n'arrive pas à solutionner due à mon manque de connaissance avec les bases de données mysql.
    J'ai deux tables "bénévoles" et "périodes" :
    Nom : table_benevoles.png
Affichages : 248
Taille : 15,6 Ko
    Nom : table_periodes.png
Affichages : 249
Taille : 13,3 Ko

    L'idée finale de mon appli web est d'afficher, dans un tableau, pour chaque bénévole (enregistrement de la table "bénévoles") si il sera présent (booléen) pour toutes les périodes (tous les enregistrements de la table "périodes").
    Les enregistrements de la tables "périodes" sont dynamiques de 0 à N (avec N < 10) et créés dans une page de paramétrage de mon appli web.

    Ma première idée serait de créer une troisième table avec comme clé étrangère la clé primaire de la table "bénévoles" et de créer (supprimer ou modifier) dynamiquement, à chaque enregistrement (suppression ou modification) d'une période, une colonne avec comme nom, l'identifiant de celui-ci.

    Exemple :
    table_X
    (PK) id : INT
    (FK) id_benevole : INT
    id_5 : BOOLEAN
    id_12 : BOOLEAN
    id_18 : BOOLEAN
    avec le nom de la colonne "id_5" et "5" représentant l'identifiant de mon premier enregistrement de la table "périodes", "12" représentant l'identifiant de mon 2eme enregistrement de la table "périodes". etc ...

    Je me pose la question si il n'y a pas une méthode moins "crade" pour référencer la valeur d'un attribut (ici la clé primaire : id) d'un enregistrement d'une table dans une autre table.

    J’espère avoir été clair dans mes explications.

  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 036
    Points
    34 036
    Billets dans le blog
    14
    Par défaut
    Bonjour,

    L'idée finale de mon appli web est d'afficher, dans un tableau, pour chaque bénévole (enregistrement de la table "bénévoles") si il sera présent (booléen) pour toutes les périodes (tous les enregistrements de la table "périodes").
    Voilà la méthode pour concevoir cette partie de votre BDD (suivre les liens ci-dessous) :
    Règle de gestion :
    Un bénévole peut être présent à plusieurs périodes et une période peut voir la présence de plusieurs bénévoles.

    MCD :
    benevole -0,n----presence----0,n- periode

    Tables :
    benevole (id, prenom, nom, email, telephone, inscription)
    periode (id, start_date, end_date, titre)
    presence (id_benevole, id_periode, est_present)

    Remarque :
    Il est préférable de mettre les noms des objets de la base de données (tables, colonnes...) au singulier. Vous voyez que dans la règle de gestion qui décrit l'association entre bénévole et période, on examine le cas pour UN bénévole et pour UNE période. De même, dans chaque table, une ligne représentera UN bénévole, UNE période, UNE présence.
    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
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    J'ai lu les pages que tu m'as donné en lien et tes explications. Effectivement, simple et évident.
    Un gros merci.

  4. #4
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 201
    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 : 10 201
    Points : 39 108
    Points
    39 108
    Billets dans le blog
    9
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    Tables :
    benevole (id, prenom, nom, email, telephone, inscription)
    periode (id, start_date, end_date, titre)
    presence (id_benevole, id_periode, est_present)
    bonjour Cinéphil,

    Il me semble que l'attribut est_présent n'est pas requis
    Soit la table associative matérialise les présences, soit elle matérialise les absences (auquel cas il faudrait la renommer absence).
    Dans les deux cas, c'est l'existence d'une occurrence de relation bénévole <-> période qui matérialise la présence ou l'absence.

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

Discussions similaires

  1. [9.6] Contrainte sur une table vers deux autres tables
    Par Narann dans le forum Débuter
    Réponses: 5
    Dernier message: 19/05/2018, 19h35
  2. Filtrer dans une table à partir de deux autres tables
    Par mat3000 dans le forum Requêtes
    Réponses: 2
    Dernier message: 14/06/2016, 10h10
  3. UPDATE d'une Table à partir de deux autres Tables
    Par Marc_27 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 29/07/2009, 14h13
  4. Réponses: 8
    Dernier message: 03/11/2008, 08h07
  5. Update d'une table à partir de deux autres tables
    Par Peewee766 dans le forum PostgreSQL
    Réponses: 4
    Dernier message: 04/05/2008, 19h08

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