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 :

Modèle MCD rencontres football [MCD]


Sujet :

Schéma

  1. #1
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut Modèle MCD rencontres football
    Bonjour

    J'aimerai modifier mon MCD dans ma base de donnée.

    Il y a une information que je n'arrive pas à sortir correctement : "Dans quelle(s) rencontre(s) Patrick DUPONT a-t-il participé?" Sachant que Patrick peut avoir fait toutes les fonctions. (Pour info, je ne gère pas l'homonymie)

    Nom : Sans nom 1.png
Affichages : 476
Taille : 92,1 Ko
    J'ai une table "Rencontres" et une foultitudes de tables pour chaque fonction et une dernière pour stocker mes observations.
    Dans chaque table, j'ai une clef primaire unique.

    Est-ce pour vous une meilleur solution de passer à la deuxième solution, c'est à dire de n'avoir que trois tables :
    • table rencontre
    • Officiel
    • Observation


    Dans officiel, j'ai une clef étrangère #NumRencontre. dans cette "table", on entrerait chaque officiel à la suite, sachant qu'il y a plusieurs officiels par rencontre.

    Désolé pour le schéma, mais c'est un peu de l'arrache, je ne maîtrise pas tous les bons termes.

    Merci beaucoup d'avance.
    Images attachées Images attachées
    Fichiers attachés Fichiers attachés

  2. #2
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Bonjour,

    Le MCD c'est le Modèle Conceptuel des Données.
    Or, au niveau conceptuel, les tables n'existent pas. Le niveau conceptuel s'occupe du "quoi" : il s'agit de décrire les "acteurs" ou "objets de gestion" tels que les joueurs, les arbitres, les terrains, les championnats, les rencontres d'une part, et les interactions entre ces "acteurs" d'autre part.

    Par ailleurs, vous présentez des tables sans lien entre elles, ce n'est donc pas non plus un modèle logique (MLD)

    Un autre fil de discussion récent est ouvert sur le même sujet, je vous suggère de vous en inspirer :
    https://www.developpez.net/forums/d2.../#post11797770

  3. #3
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Bonjour

    Merci pour votre réponse. Effectivement, j'ai bien vu son sujet, mais nous ne sommes pas du tout dans le même contexte.
    Il est basé que sur un arbitre unique, alors que mon côté, j'ai une multitude d'officiels.

    Le but de ma demande est de savoir s'il est sage de conserver autant de tables ou bien de tout fusionner en une seule?

    Merci d'avance.

  4. #4
    Membre émérite
    Avatar de Paprick
    Homme Profil pro
    Professeur des Universités
    Inscrit en
    Juin 2019
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Professeur des Universités
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2019
    Messages : 678
    Points : 2 716
    Points
    2 716
    Par défaut
    Bonjour,

    Comme indiqué part escartefigue, à ce niveau de la conception, il faut passer par le Modèle Conceptuel de Données : les tables seront ensuite déduites automatiquement de ce MCD.
    A première vue, il semblerait qu'il soit plus cohérent de n'avoir qu'une seule classe d'entités "Arbitre", leur fonction précise relevant plus d'associations avec les rencontres.
    Patrick Bergougnoux - Professeur des Universités au Département Informatique de l'IUT de Toulouse III
    La simplicité est la sophistication suprême (Léonard de Vinci)
    LIVRE : Modélisation Conceptuelle de Données - Une Démarche Pragmatique
    Looping - Logiciel de modélisation gratuit et libre d'utilisation

  5. #5
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Pour compléter, il faut savoir si un même arbitre peut être parfois arbitre principal, parfois assistant, parfois juge de touche, ceci en fonction de la rencontre ou de la saison par exemple.
    Peut être faut-il aussi prévoir qu'un arbitre soit remplacé au cours d'une rencontre (cas de blessure) ?
    Selon votre réponse, la modélisation sera différente.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Merci à tous pour vos réponses.
    Désolé pour le retard, mais j'ai ce que vous voulez (enfin, je pense ) :

    Nom : football (1).png
Affichages : 472
Taille : 973,7 Ko

    Merci d'avance

  7. #7
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Ceci n'est toujours pas un MCD mais un modèle logique, un MLD.
    Admettons, mais sur mon écran de PC portable, je n'arrive pas à lire quoi que ce soit (le zoom est inopérant sur les images)

    Par rapport à la question initiale qui était

    Il y a une information que je n'arrive pas à sortir correctement : "Dans quelle(s) rencontre(s) Patrick DUPONT a-t-il participé?" Sachant que Patrick peut avoir fait toutes les fonctions. (Pour info, je ne gère pas l'homonymie)

    il suffit de faire une jointure entre la table des personnes et celle des rencontres

    Si le but est de critiquer le modèle de données, il est préférable comme dit précédemment, de commencer par le modèle conceptuel.
    Si vous n'avez pas de logiciel permettant de le faire, il en existe des gratuits, parmi lesquels l'excellent looping que vous pouvez télécharger ICI

  8. #8
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par escartefigue Voir le message

    Si le but est de critiquer le modèle de données, il est préférable comme dit précédemment, de commencer par le modèle conceptuel.
    Si vous n'avez pas de logiciel permettant de le faire, il en existe des gratuits, parmi lesquels l'excellent looping que vous pouvez télécharger
    Y a t-il moyen de l'exporter via phpmyadmin?

    Merci d'avance

  9. #9
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Non : PHPMyAdmin ne permet pas de réaliser des MCD.

    Le MCD c'est un schéma qui ressemble à ça (récupéré sur l'autre fil de discussion sur le même thème) :

    Nom : MCD.png
Affichages : 429
Taille : 120,0 Ko

    Par contre, vous pouvez publier une image en ne sélectionnant que les tables qui concernent votre question, ça permettra d'avoir une image plus facile à déchiffrer

  10. #10
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    J'ai tenté d'installer un MCD sur Linux, mais ça n'a pas l'air terrible.
    Bon, je reprends avec mon image :

    Nom : capture.png
Affichages : 431
Taille : 211,1 Ko

    J'ai une table rencontre, dans laquelle, il y a ... les rencontres.

    A l'origine, j'avais créé autant de tables qu'il peut y avoir de poste sur une rencontre (arbitre central ...)
    Cependant, il n'est pas très facile de répondre à la fameuse question :

    Il y a une information que je n'arrive pas à sortir correctement : "Dans quelle(s) rencontre(s) Patrick DUPONT a-t-il participé?" Sachant que Patrick peut avoir fait toutes les fonctions. (Pour info, je ne gère pas l'homonymie)

    Car, il faut que je fasse des jointures LEFT JOIN sur chaque table. En effet Patrick DUPONT peut avoir eu des fonctions différentes sur plusieurs rencontres (ex : Rencontre 1, il était arbitre centre, Rencontre 2, il était assistant 1)

    Depuis, ce matin, j'ai créé une table "officiels". Dans cette table, j'ai versé toutes les fonctions (FonctionOfficiel). Dans ce cas, il sera facile de retrouver les match de Patrick DUPONT, sans faire des tas de jointures.
    Cependant, je n'ai de clef primaire dans cette table. En effet pour chaque numéro de rencontre(NumRencontreOfficiel), il y a plusieurs officiels.
    Je me retrouve avec un autre problème : Je ne peux pas contrôler qu'il n'y ait bien qu'une seule fonction ne soit occupée que par une rencontre (ex : un seul arbitre central par rencontre)

    J'espère avoir été clair !

    Merci d'avance.

  11. #11
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    OK, c'est parfait, cette fois-ci j'arrive à lire le schéma

    Clairement, il ne faut surtout pas une table par type d'intervenant (juge de touche, arbitre principal etc.)
    Je reviens vers vous dès que j'ai un peu plus de temps

  12. #12
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Voici, en repartant du MCD de l'autre fil de discussion, ça ne m'a pas pris beaucoup de temps

    Quelques explications préalables :

    Tout d'abord, il faut prévoir qu'un arbitre exerçant un certain rôle dans une rencontre (par exemple le juge de ligne coté droit) puisse être remplacé en cas de blessure par exemple.

    Ensuite, dans le modèle conceptuel qui suit
    [CO_compétition] c'est par exemple le championnat de France, la coupe de France, la coupe d'Europe des nations etc.
    [CS_compétition_saison] c'est la déclinaison d'une compétition sur une saison, par exemple la coupe de France 2022
    [RC_rencontre] c'est un match qui s'inscrit dans une certaine saison d'une certaine compétition
    [RO_role] j'ai ajouté cette entité-type justement pour votre besoin, elle correspond aux rôles tels que arbitre principal, juge de touche coté droit, etc.
    la flèche partant de (AB_arbitrer) vers [RO_role] est la contrainte qui permet de contrôler qu'un même arbitre n'exerce qu'un seul rôle dans une même rencontre

    Nom : MCD.png
Affichages : 407
Taille : 35,8 Ko

    Tous ces acteurs du modèle proposé n'ont pas forcément un intérêt pour vous, il faudra peut-être simplifier ou au contraire l'enrichir en fonction du besoin.

    Et voici le modèle tabulaire (MLD) correspondant :

    Nom : MLD.png
Affichages : 431
Taille : 38,7 Ko

    Et le script décliné pour MySQL :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    CREATE TABLE YC_type_compet(
       YC_ident INT AUTO_INCREMENT,
       YC_code CHAR(4) NOT NULL,
       YC_lib VARCHAR(128) NOT NULL,
       PRIMARY KEY(YC_ident),
       UNIQUE(YC_code)
    );
     
    CREATE TABLE TR_terrain(
       TR_ident INT AUTO_INCREMENT,
       TR_nom VARCHAR(50) NOT NULL,
       PRIMARY KEY(TR_ident)
    );
     
    CREATE TABLE CL_club(
       CL_ident INT AUTO_INCREMENT,
       CL_nom VARCHAR(50) NOT NULL,
       PRIMARY KEY(CL_ident)
    );
     
    CREATE TABLE EQ_equipe(
       EQ_ident INT AUTO_INCREMENT,
       EQ_nom VARCHAR(50) NOT NULL,
       CL_ident INT NOT NULL,
       PRIMARY KEY(EQ_ident),
       FOREIGN KEY(CL_ident) REFERENCES CL_club(CL_ident)
    );
     
    CREATE TABLE PE_personne(
       PE_ident INT AUTO_INCREMENT,
       PE_nom VARCHAR(50) NOT NULL,
       PE_prenom VARCHAR(50) NOT NULL,
       PE_ddn DATE NOT NULL,
       PRIMARY KEY(PE_ident)
    );
     
    CREATE TABLE TN_entraineur(
       PE_ident INT,
       TN_agrement CHAR(10),
       PRIMARY KEY(PE_ident),
       FOREIGN KEY(PE_ident) REFERENCES PE_personne(PE_ident)
    );
     
    CREATE TABLE JO_joueur(
       PE_ident INT,
       JO_license CHAR(12) NOT NULL,
       PRIMARY KEY(PE_ident),
       UNIQUE(JO_license),
       FOREIGN KEY(PE_ident) REFERENCES PE_personne(PE_ident)
    );
     
    CREATE TABLE AR_arbitre(
       PE_ident INT,
       AR_license CHAR(8) NOT NULL,
       PRIMARY KEY(PE_ident),
       UNIQUE(AR_license),
       FOREIGN KEY(PE_ident) REFERENCES PE_personne(PE_ident)
    );
     
    CREATE TABLE RO_role(
       RO_ident INT AUTO_INCREMENT,
       RO_code CHAR(4) NOT NULL,
       RO_libelle VARCHAR(50) NOT NULL,
       PRIMARY KEY(RO_ident),
       UNIQUE(RO_code)
    );
     
    CREATE TABLE CO_competition(
       CO_ident INT AUTO_INCREMENT,
       CO_nom VARCHAR(50) NOT NULL,
       YC_ident INT NOT NULL,
       PRIMARY KEY(CO_ident),
       FOREIGN KEY(YC_ident) REFERENCES YC_type_compet(YC_ident)
    );
     
    CREATE TABLE CS_comp_saison(
       CO_ident INT,
       CS_ident SMALLINT,
       CS_dtdeb DATE NOT NULL,
       CS_dtfin DATE NOT NULL,
       PRIMARY KEY(CO_ident, CS_ident),
       FOREIGN KEY(CO_ident) REFERENCES CO_competition(CO_ident)
    );
     
    CREATE TABLE RC_rencontre(
       CO_ident INT,
       CS_ident SMALLINT,
       RC_ident SMALLINT,
       RC_date DATE NOT NULL,
       TR_ident INT NOT NULL,
       PRIMARY KEY(CO_ident, CS_ident, RC_ident),
       FOREIGN KEY(CO_ident, CS_ident) REFERENCES CS_comp_saison(CO_ident, CS_ident),
       FOREIGN KEY(TR_ident) REFERENCES TR_terrain(TR_ident)
    );
     
    CREATE TABLE TO_tour(
       CO_ident INT,
       CS_ident SMALLINT,
       TO_ident TINYINT,
       TO_dtdeb DATE NOT NULL,
       TO_dtfin DATE NOT NULL,
       PRIMARY KEY(CO_ident, CS_ident, TO_ident),
       FOREIGN KEY(CO_ident, CS_ident) REFERENCES CS_comp_saison(CO_ident, CS_ident)
    );
     
    CREATE TABLE JR_jouer(
       CO_ident INT,
       CS_ident SMALLINT,
       RC_ident SMALLINT,
       EQ_ident INT,
       JR_score SMALLINT NOT NULL,
       PRIMARY KEY(CO_ident, CS_ident, RC_ident, EQ_ident),
       FOREIGN KEY(CO_ident, CS_ident, RC_ident) REFERENCES RC_rencontre(CO_ident, CS_ident, RC_ident),
       FOREIGN KEY(EQ_ident) REFERENCES EQ_equipe(EQ_ident)
    );
     
    CREATE TABLE IN_inscrire(
       CO_ident INT,
       CS_ident SMALLINT,
       EQ_ident INT,
       PRIMARY KEY(CO_ident, CS_ident, EQ_ident),
       FOREIGN KEY(CO_ident, CS_ident) REFERENCES CS_comp_saison(CO_ident, CS_ident),
       FOREIGN KEY(EQ_ident) REFERENCES EQ_equipe(EQ_ident)
    );
     
    CREATE TABLE CT_constituer(
       PE_ident INT,
       CA_date DATE,
       CT_dtfin DATE NOT NULL,
       EQ_ident INT NOT NULL,
       PRIMARY KEY(PE_ident, CA_date),
       FOREIGN KEY(PE_ident) REFERENCES JO_joueur(PE_ident),
       FOREIGN KEY(EQ_ident) REFERENCES EQ_equipe(EQ_ident)
    );
     
    CREATE TABLE AB_arbitrer(
       CO_ident INT,
       CS_ident SMALLINT,
       RC_ident SMALLINT,
       PE_ident INT,
       AB_tsdeb DATETIME NOT NULL,
       AB_tsfin DATETIME NOT NULL,
       RO_ident INT NOT NULL,
       PRIMARY KEY(CO_ident, CS_ident, RC_ident, PE_ident),
       FOREIGN KEY(CO_ident, CS_ident, RC_ident) REFERENCES RC_rencontre(CO_ident, CS_ident, RC_ident),
       FOREIGN KEY(PE_ident) REFERENCES AR_arbitre(PE_ident),
       FOREIGN KEY(RO_ident) REFERENCES RO_role(RO_ident)
    );
     
    CREATE TABLE PA_participer(
       CO_ident INT,
       CS_ident SMALLINT,
       RC_ident SMALLINT,
       PE_ident INT,
       PA_mindeb SMALLINT NOT NULL,
       PA_minfin SMALLINT NOT NULL,
       PRIMARY KEY(CO_ident, CS_ident, RC_ident, PE_ident),
       FOREIGN KEY(CO_ident, CS_ident, RC_ident) REFERENCES RC_rencontre(CO_ident, CS_ident, RC_ident),
       FOREIGN KEY(PE_ident) REFERENCES JO_joueur(PE_ident)
    );
     
    alter table JR_jouer
       add constraint JRFK001
       foreign key (CO_ident, CS_ident, EQ_ident)) 
       references IN_inscrire((CO_ident, CS_ident, EQ_ident)
    ;

  13. #13
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par escartefigue Voir le message
    Clairement, il ne faut surtout pas une table par type d'intervenant (juge de touche, arbitre principal etc.)
    Merci

    Par contre, comme puis-je faire pour récupérer l'ensemble des données un une rencontres (toute la table rencontre + officiels) sur une seule ligne?

    Ceci me donne 3 lignes (ce qui est logique, car 3 officiels sur cette rencontre):
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT rencontres.stade_rencontre, rencontres.terrain_rencontre, rencontres.lieu_rencontre, rencontres.ville_rencontre, rencontres.distance_rencontre, rencontres.tour_rencontre, rencontres.num_rencontre, rencontres.fonction_rencontre as fonction
     
    FROM rencontres
     
    LEFT JOIN officiels ON rencontres.num_rencontre = officiels.NumRencontreOfficiel
     
    WHERE rencontres.num_rencontre LIKE "17908124"

    Merci d'avance

  14. #14
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Si vous voulez une base de données fiable et performante, oubliez les tables que vous avez créées

    La table "officiels" telle que créée, vous oblige à répéter autant de fois le nom d'un arbitre qu'il exerce différentes fonctions, c'est aberrant.

    Repartez de ma proposition qui précède, ça vous évitera bien des ennuis.

  15. #15
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Sauf que dans le schéma que vous proposez, il n'y a qu'une seule table arbitre, alors qu'il y a X officiels dans une rencontre.
    Du coup, il faut que je créé autant de table que de fonction ... ce qui revient à ma base d'origine ...

  16. #16
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    Absolument pas !

    Une seule table arbitre certes et heureusement, car le respect des formes normales est essentiel, mettre le nom de l'arbitre et l'identifiant de la rencontre dans une même table est un viol de la deuxième forme normale.
    C'est la table issue de l'association AB_arbitrer qui permet de savoir quel rôle chaque arbitre joue dans chaque rencontre.

    Il suffit de faire
    • une jointure entre cette table AB_arbitrer et la table des personnes pour récupérer le nom, le prénom, etc de l'arbitre (sachant que les arbitres sont des sous-types des personnes, l'identifiant de l'arbitre est évidemment l'identifiant de la personne)
    • et une jointure entre cette table AB_arbitrer et la table des rôles pour récupérer le libellé du rôle


    Voici un exemple de contenu :

    Nom : Sans titre.png
Affichages : 412
Taille : 42,9 Ko

    Dans cet exemple, le contenu de la table AB_arbitrer me permet de savoir que
    • pour la rencontre n°16, l'arbitre principal était "Da Costa", assisté coté gauche de "Dupond" et coté droit de "Rouault'
    • pour la rencontre n°45, l'arbitre principal était "Lesage", assité coté gauche de "Dupond" et coté droit de "Abadie"
    • pour la rencontre n°34, l'arbitre principal était "Zorglub" jusqu'à 21h35, puis "Bulgroz" ensuite, les juges assistants étaient "Martin" coté gauche et "Rouault" coté droit

  17. #17
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    et donc la requête est celle-là?

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT rencontres.stade_rencontre, rencontres.terrain_rencontre, rencontres.lieu_rencontre, rencontres.ville_rencontre, rencontres.distance_rencontre, rencontres.tour_rencontre, rencontres.num_rencontre, rencontres.fonction_rencontre as fonction ,(SELECT officiels.NomOfficiel FROM officiels WHERE FonctionOfficiel="Arbitre centre" AND NumRencontreOfficiel LIKE "17908124")as Nom
    FROM rencontres
    WHERE rencontres.num_rencontre LIKE "17908124"

    Dans laquelle, il faut que j'ajoute toutes les fonctions?

  18. #18
    Modérateur
    Avatar de escartefigue
    Homme Profil pro
    bourreau
    Inscrit en
    Mars 2010
    Messages
    10 134
    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 134
    Points : 38 555
    Points
    38 555
    Billets dans le blog
    9
    Par défaut
    non : avec mon modèle la requête sera par exemple

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    select AB.RC_ident   as num_rencontre
         , RC.RC_date    as date_rencontre
         , AR.AR_license as license_arbitre
         , PE.PE_nom     as nom_arbitre
         , time(AB.AB_tsdeb) as heure_deb
         , time(AB.AB_tsfin) as heure_fin
         , RO.RO_libelle as role_arbitre
    from AB_arbitrer as AB
    inner join PE_personne as PE
       on PE.PE_ident=AB.PE_ident
    inner join AR_arbitre  as AR
       on AR.PE_ident=AB.PE_ident
    inner join RC_rencontre as RC
       on RC.CO_ident=AB.CO_ident
      and RC.CS_ident=AB.CS_ident
      and RC.RC_ident=AB.RC_ident
    where RC.RC_ident=12345
    Et vous aurez, pour la rencontre n°12345, les noms de tous les arbitres, leur rôle ou fonction, l'heure de début et de fin d'intervention.

    Notez que le numéro de rencontre étant de type integer et donc numérique, il ne doit pas être encadré par des quotes
    S'il avait été de type char ou varchar, il aurait fallu utiliser des quotes simples ('12345') et non pas des guillemets ("12345") contrairement à ce que vous avez utilisé dans votre requête.

  19. #19
    Membre à l'essai
    Homme Profil pro
    Obervateur de nuage 2.3
    Inscrit en
    Mars 2020
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : Bahamas

    Informations professionnelles :
    Activité : Obervateur de nuage 2.3

    Informations forums :
    Inscription : Mars 2020
    Messages : 46
    Points : 23
    Points
    23
    Par défaut
    Merci pour tous vos précieux conseils.

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

Discussions similaires

  1. Soucis de formalisation dans modèle MCD
    Par vraifredo dans le forum Schéma
    Réponses: 11
    Dernier message: 14/03/2021, 18h33
  2. Réponses: 6
    Dernier message: 26/06/2013, 16h46
  3. Doute sur modèle relationel vers MCD
    Par afrodje dans le forum Schéma
    Réponses: 7
    Dernier message: 18/03/2009, 20h44
  4. Création MCD et question sur le modèle Physique
    Par shadeoner dans le forum Administration
    Réponses: 1
    Dernier message: 09/03/2009, 17h45
  5. [MCD]Problème de conception du modèle de données
    Par juju33 dans le forum Modélisation
    Réponses: 7
    Dernier message: 24/03/2007, 20h13

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