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.
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.
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 :
5) il faut enrichir cette base de données selon l'appartenance d'un employé à plusiurs groupes.
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...
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
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 "
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
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 :
Le coeur de votre modélisation est la définition du planning.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.
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager