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 :

Comment générer ce DCL en script MYSQL ?


Sujet :

MySQL

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2020
    Messages : 4
    Points : 7
    Points
    7
    Par défaut Comment générer ce DCL en script MYSQL ?
    Bonjour, j'aimerais savoir comment générer ce DCL en script MYSQL, je bloque sur l'association "Absenter" , je sais que cava être une table, mais c'est un peu compliqué de ma part.Nom : Sans titre.jpg
Affichages : 133
Taille : 41,9 Ko

  2. #2
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut BibouHB.

    En premier lieu, absence prend un "e" et non un "a".
    Il est inutile de mettre un "s" dans le nom de vos entités ou relations car on sait qu'il n'y a pas qu'une seule occurrence.

    Autant les entités "employé" et "groupe" sont facile à comprendre, autant l'entité "absence" est un peu plus difficile à comprendre.

    La relation "absenter" qui est une association à trois pattes n'a pas lieu d'être.
    Il vaut mieux passer par deux entités à deux pattes !

    Plusieurs questions me viennent à l'esprit :

    1) est-ce qu'un employé peut appartenir à plusieurs groupes ?
    Si la réponse est non alors l'employé suffit à déterminer le groupe.
    Si la réponse est oui alors il manque quelque chose qui permet de faire la distinction entre tel et tel groupe.
    Par exemple, la plage horaire. Du genre le lundi c'est le groupe 1, le mardi le groupe 2, ...

    Dans mon exemple, un employé appartient à un seul groupe.
    Et un groupe possède plusieurs employés.

    2) afin d'identifier l'employé et son groupe, j'ai introduit un matricule.
    Cela revient à créer une relation de type association entre l'employé et le groupe.

    3) l'entité "absence" est déterminé par le matricule et la plage horaire de son absence.
    Connaissant le matricule, on connait l'employé et son groupe d'appartenance.

    4) voici un exemple de ce qiue vous cherchez à faire :
    Code : 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
    --------------
    START TRANSACTION
    --------------
     
    --------------
    DROP DATABASE IF EXISTS `base`
    --------------
     
    --------------
    CREATE DATABASE IF NOT EXISTS `base`
            DEFAULT CHARACTER SET `latin1`
            DEFAULT COLLATE       `latin1_general_ci`
    --------------
     
    --------------
    DROP TABLE IF EXISTS `employe`
    --------------
     
    --------------
    CREATE TABLE `employe`
    (  `emp_id`  integer unsigned NOT NULL auto_increment primary key,
       `emp_nom` varchar(255) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
    --------------
     
    --------------
    INSERT INTO `employe` (`emp_nom`) VALUES  ('Employé Un'),('Employé Deux'),('Employé Trois')
    --------------
     
    --------------
    select * from `employe`
    --------------
     
    +--------+---------------+
    | emp_id | emp_nom       |
    +--------+---------------+
    |      1 | Employé Un    |
    |      2 | Employé Deux  |
    |      3 | Employé Trois |
    +--------+---------------+
    --------------
    DROP TABLE IF EXISTS `groupe`
    --------------
     
    --------------
    CREATE TABLE `groupe`
    (  `grp_id`  integer unsigned NOT NULL auto_increment primary key,
       `grp_nom` varchar(255) NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
    --------------
     
    --------------
    INSERT INTO `groupe` (`grp_nom`) VALUES  ('Groupe Un'),('Groupe Deux'),('Groupe Trois')
    --------------
     
    --------------
    select * from `groupe`
    --------------
     
    +--------+--------------+
    | grp_id | grp_nom      |
    +--------+--------------+
    |      1 | Groupe Un    |
    |      2 | Groupe Deux  |
    |      3 | Groupe Trois |
    +--------+--------------+
    --------------
    DROP TABLE IF EXISTS `appartient`
    --------------
     
    --------------
    CREATE TABLE `appartient`
    ( `app_matricule`  integer unsigned NOT NULL auto_increment primary key,
      `emp_id`         integer unsigned NOT NULL,
      `grp_id`         integer unsigned NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
    --------------
     
    --------------
    INSERT INTO `appartient` (`emp_id`,`grp_id`) VALUES (1,1),(2,2),(3,3)
    --------------
     
    --------------
    select * from `appartient`
    --------------
     
    +---------------+--------+--------+
    | app_matricule | emp_id | grp_id |
    +---------------+--------+--------+
    |             1 |      1 |      1 |
    |             2 |      2 |      2 |
    |             3 |      3 |      3 |
    +---------------+--------+--------+
    --------------
    DROP TABLE IF EXISTS `absent`
    --------------
     
    --------------
    CREATE TABLE `absent`
    ( `abs_id`         integer unsigned NOT NULL auto_increment primary key,
      `app_matricule`  integer unsigned NOT NULL,
      `abs_deb`        datetime         NOT NULL,
      `abs_fin`        datetime         NOT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=`latin1` COLLATE=`latin1_general_ci`
    --------------
     
    --------------
    INSERT INTO `absent` (`app_matricule`,`abs_deb`,`abs_fin`) VALUES
      (1, '2020-11-01 14:00:00', '2020-11-01 18:00:00'),
      (2, '2020-11-03 14:00:00', '2020-11-03 18:00:00'),
      (1, '2020-11-06 14:00:00', '2020-11-06 18:00:00'),
      (3, '2020-11-04 09:00:00', '2020-11-04 18:00:00')
    --------------
     
    --------------
    select * from `absent`
    --------------
     
    +--------+---------------+---------------------+---------------------+
    | abs_id | app_matricule | abs_deb             | abs_fin             |
    +--------+---------------+---------------------+---------------------+
    |      1 |             1 | 2020-11-01 14:00:00 | 2020-11-01 18:00:00 |
    |      2 |             2 | 2020-11-03 14:00:00 | 2020-11-03 18:00:00 |
    |      3 |             1 | 2020-11-06 14:00:00 | 2020-11-06 18:00:00 |
    |      4 |             3 | 2020-11-04 09:00:00 | 2020-11-04 18:00:00 |
    +--------+---------------+---------------------+---------------------+
    --------------
    select      t1.app_matricule,
                t3.emp_nom,
                t4.grp_nom,
                t1.abs_deb,
                t1.abs_fin
     
          from  `absent`    as t1
     
    inner join `appartient` as t2
            on  t2.app_matricule = t1.app_matricule
     
    inner join `employe` as t3
            on  t3.emp_id = t2.emp_id
     
    inner join `groupe` as t4
            on  t4.grp_id = t2.grp_id
    --------------
     
    +---------------+---------------+--------------+---------------------+---------------------+
    | app_matricule | emp_nom       | grp_nom      | abs_deb             | abs_fin             |
    +---------------+---------------+--------------+---------------------+---------------------+
    |             1 | Employé Un    | Groupe Un    | 2020-11-01 14:00:00 | 2020-11-01 18:00:00 |
    |             2 | Employé Deux  | Groupe Deux  | 2020-11-03 14:00:00 | 2020-11-03 18:00:00 |
    |             1 | Employé Un    | Groupe Un    | 2020-11-06 14:00:00 | 2020-11-06 18:00:00 |
    |             3 | Employé Trois | Groupe Trois | 2020-11-04 09:00:00 | 2020-11-04 18:00:00 |
    +---------------+---------------+--------------+---------------------+---------------------+
    --------------
    COMMIT
    --------------
     
    Appuyez sur une touche pour continuer...
    5) il faut enrichir cette base de données selon l'appartenance d'un employé à plusiurs groupes.

    Ceci n'est qu'une ébauche car il manque d'autres notions dont vous n'avez pas abordé.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2020
    Messages : 4
    Points : 7
    Points
    7
    Par défaut
    Salut à vous Artemus24, et merci de m'avoir répondu si rapidement.
    Avant de commencer, merci encore pour vos remarques et corrections.

    NB: il s'agit d'une partie d'un DCL de 23 Classe.

    1/ Oui un employé peut appartenir à plusieurs groupes, pour cause plage horaire.
    2/ Mon souci c'est la Relation à 3 patte " Absenter " elle doit contenir les clés primaires des classe : "Employé" ,"Groupe", "Absences" ? .
    3/ La classe " Groupe " et relier à une autre Classe " Formation "

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

    Dans le modèle conceptuel des données, chaque type d'entité (ou classe d'entité, bref, les rectangles) doit correspondre à un objet de gestion.
    Or, autant on comprend assez bien qu'un employé ou un groupe sont des objets de gestion autant une absence c'est beaucoup moins clair...
    Et encore faudrait il définir ce qu'est un groupe.

    La bonne démarche est de commencer par décrire les règles de gestion sous la forme (exemple) :

    R001a : pour une même plage horaire, un employé appartient à au plus un groupe
    R001b : pour un groupe et une plage horaire, il peut y avoir plusieurs employés
    R001c : dans une même plage horaire, il peut y avoir plusieurs groupes

    R002a : un groupe est associé à une et une seule formation
    R002b : une formation est associée à zéro à plusieurs groupes
    etc.

    Un employé peut appartenir à plusieurs groupes à cause des plages horaires, ok, mais y a -t-il des plages horaires chevauchantes ? Dans l'affirmative, un même employé peut il faire partie des groupes concernés.
    Les plages horaires sont elles de durée fixe ou variable ?
    Bref, plantez un peu le décor, définissez les termes, donnez des exemples et rédigez vos règles de gestion.

    Quand tout ça sera fait, téléchargez un logiciel de modélisation, il y en a de très bon gratuits et notamment Looping téléchargeable ici https://www.looping-mcd.fr/

    Modéliser avec un logiciel ad-hoc évite bien des erreurs et génère le script automatiquement

    EDIT : il ne faut pas confondre le DCL (Data Control Language) qui est la gestion des privilèges au moyen des ordres GRANT et REVOKE avec le DDL (Data Definition Language) qui est la gestion des objets de la base de données au moyen des ordres CREATE, DROP, ALTER, COMMENT ou RENAME. L'un comme l'autre font partie du SQL, mais ici, c'est du DDL qu'il s'agit

  5. #5
    Expert éminent sénior Avatar de Artemus24
    Homme Profil pro
    Agent secret au service du président Ulysses S. Grant !
    Inscrit en
    Février 2011
    Messages
    6 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Agent secret au service du président Ulysses S. Grant !
    Secteur : Finance

    Informations forums :
    Inscription : Février 2011
    Messages : 6 378
    Points : 19 055
    Points
    19 055
    Par défaut
    Salut à tous.

    @ BibouHB : Comme il n'y a rien de confidentiel au MP que j'ai reçu de votr part, je me permets de le mettre ci-après :
    Salut à vous MR.Artemus24, encore une fois merci pour votre réponse.

    Voila , j'ai besoin de convertir se Diagramme de classe en script MySql, pour mon projet de fin étude qui consiste à Développer un site web pour une Direction de Formation, malheureusement mes compétences sont limitées, et mon encadreur et hospitalisé pour cause Covid et les écoles sont fermé, et je dois avancé dans mon projet Alors tout aide est le bienvenu.

    Voici mon DCL.

    Image : https://drive.google.com/file/d/1Tgi...ew?usp=sharing

    Cordialement.
    Le coeur de votre modélisation est la définition du planning.
    Je crois comprendre qu'il s'agit d'une modélisation d'une formation interne à une entreprise.
    La planning qui est en fait une matrice par jour et heure (ls plages horaires), renseignera l'occupation des salles de cours par tel ou tel groupe.
    Il va de soit qu'une salle, pour tel jour à telle heure sera réservé par un seul groupe.

    De ce fait, le planning détermine (la dépendance fonctionnelle) la réservation de la salle, ainsi que l'occupation par tel groupe et la présence de tel formateur.

    L'entité "absence" sera rattaché à ce planning et donnera la liste des employés absent.
    Comment ? Pour tel jour à telle heure, nous connaissons le groupe qui est présent et de surcroit la liste des employés rattachés à ce groupe.
    Il suffit de reprendre l'identifiant de l'employé, pour tel jour à tel heure (donc du planning) pour dire que celui-ci sera absent.

    Inversement, si vous ne désirez pas renseigner pour chaque heure l'absence des employés, le mieux est d'indiquer la plage du début et la fin de cette absence (date et heure).
    Cela posera quelques problèmes sur ce que peut impliquer l'absence d'un ou plusieurs employés.
    En fait, ce que je ne comprends pas, est l'importance de la modélisation des absences dans votre formation.

    Toutes ces questions doivent être formalisées en créant la liste des règles de gestion de votre modélisation.
    Vous devez impérativement commencer par ce point central de votre modélisation.

    Si vous avez besoin d'aide, venez poser vos questions sur la modélisation dans le forum suivant :
    --> https://www.developpez.net/forums/f6...sation/schema/

    Le forum où vous vous trouvez est destiné à des questions techniques sur la faisabilité.

    @+
    Si vous êtes de mon aide, vous pouvez cliquer sur .
    Mon site : http://www.jcz.fr

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 27/03/2008, 13h09
  2. Réponses: 3
    Dernier message: 17/06/2007, 12h52
  3. comment générer le script sql
    Par loukili81 dans le forum Administration
    Réponses: 4
    Dernier message: 21/05/2007, 12h22
  4. Comment générer le script complet?
    Par unix27 dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 12/12/2006, 14h40
  5. Comment générer un script
    Par savoir dans le forum Access
    Réponses: 9
    Dernier message: 17/09/2005, 19h25

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