Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2862 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] comment configurer ma base pour mon projet [resolu]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySQL] comment configurer ma base pour mon projet [resolu]

n°596454
Pizz
Vive les Tomates !
Posté le 24-12-2003 à 14:04:00  profilanswer
 

salut,
 
je dois réaliser une petite gestion du personnel d'une entreprise en php.
 
mais je suis bloqué sur "comment configurer ma bdd ?"
 
Sachant, que je dois faire un espèce de classement de fiches sur les employés d'une entreprise. Mais l'entreprise comporte plusieurs départements et est cindée en plusieurs lieux. Et évidemment, certains employés font parties de plusieurs départements, d'autres travaillent sur des lieux différents et d'autres, les deux.
 
Je dois pouvoir faire des recherches sur qui travaille dans un ou des lieux précis, qui travaille dans un ou des départements précis, qui travaille dans un ou des lieux précis et départements précis ... et aussi ajouter/supprimer des employés.
 
chaque employé a une petite description : nom, prenom, tel, photo, ...
 
Merci de votre aide  :jap:


Message édité par Pizz le 26-12-2003 à 23:02:30

---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
mood
Publicité
Posté le 24-12-2003 à 14:04:00  profilanswer
 

n°596456
Combi_A_Ve​ndre
Posté le 24-12-2003 à 14:19:33  profilanswer
 

Si tu ne sais pas faire un design de base de données, pourquoi ne pas chercher un truc tout fait?


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
n°596459
Pizz
Vive les Tomates !
Posté le 24-12-2003 à 14:23:54  profilanswer
 

Combi_A_Vendre a écrit :

Si tu ne sais pas faire un design de base de données, pourquoi ne pas chercher un truc tout fait?


 
parce que je ne sais pas qu'il y a des trucs tout fait ;)
 
et j'aimerai apprendre à faire un design "compliqué" :p
 
j'arrive à faire mon projet avec seulement une table si un employé correspondait à seulement un département et à seulement un lieu, mais si tout se croise, je ne vois pas comment je peux faire :(
 


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°596465
Combi_A_Ve​ndre
Posté le 24-12-2003 à 14:30:05  profilanswer
 

Et bien c'est une bonne idée de vouloir faire ça tout seul. Bon courage. Tu dois apprendre à utiliser les bases de données.
http://sgbd.developpez.com/cours/#sgbd


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
n°596466
Pizz
Vive les Tomates !
Posté le 24-12-2003 à 14:32:49  profilanswer
 

Combi_A_Vendre a écrit :

Et bien c'est une bonne idée de vouloir faire ça tout seul. Bon courage. Tu dois apprendre à utiliser les bases de données.
http://sgbd.developpez.com/cours/#sgbd


 
merci :)
 
mais si qqn a une idée ou "la solution", je suis preneur  :jap:


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°596471
Combi_A_Ve​ndre
Posté le 24-12-2003 à 14:48:32  profilanswer
 

Pour resumer, il te faut :
- une table "employés" (avec un numéro de liste de départements)
- une table "départements"
- une table "listeDepartements"
 
La table listeDepartements contient les informations suivantes :
- numéro de liste
- Id de l'employé
- Id du service
 
Il n'y a pas de "solution", ton problème est trop vaste.
 
Tu connais le SQL?
 
vw


Message édité par Combi_A_Vendre le 24-12-2003 à 14:52:09

---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
n°596477
drasche
Posté le 24-12-2003 à 14:56:55  profilanswer
 

+1 avec Combi.
 
Le problème d'un design est d'identifier les informations qui se répètent (exemple: les employés, les lieux, les départements), et d'identifier les relations possibles entre ces informations (on parle d'entités, ça se traduit par une table).  Il y a les relations 1 à 1, 1 à n, et n à n.
 
Lorsque qu'une relation implique n éléments d'un côté et n éléments de l'autre (donc n à n :D), on crée effectivement une table pour relier les deux, sinon (1 à n et parfois 1 à 1) on se contente d'un champ de référence (clé étrangère) dans la table côté 'n' (dans le cas d'une relation de type 1-n) avec l'info de la table côté '1' pour remplir ce champ. Le B.A.BA. du design quoi.
 
(ok c'est vite écrit mais je suis pressé :D)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
n°596480
art_dupond
je suis neuneu... oui oui !!
Posté le 24-12-2003 à 14:58:05  profilanswer
 

tu pourrais employer des tables intersections
 
 
employé - département
employé - lieu
 
(à quoi correspond un lieu ?)


---------------
oui oui
n°596487
Pizz
Vive les Tomates !
Posté le 24-12-2003 à 15:20:39  profilanswer
 

pour etre plus précis :
. les employés : toto, marc, jean, pierre
. les départements : éducation, direction, publicité
. les lieux : paris, moscou, rome
 
toto travaille dans l'éducation à paris.
marc travaille dans l'éducation et la publicité à moscou.
jean travaille dans la direction et dans l'éducation à rome et à paris.
pierre travaille dans la publicité à paris et à rome.
 
 
je connais les relations 1 à 1, 1 à n ... (j'ai fait une petite formation en access), mais je ne sais pas comment faire avec MySQL (je débute).
 
Je vais commencer par lire les tutos :)
 
 
sinon, le livre MySQL et PHP (O'Reilly) est un bon livre pour apprendre et comprendre à faire des tables comme j'en ai besoin pour mon petit projet ?


Message édité par Pizz le 24-12-2003 à 15:21:39

---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°596491
Pizz
Vive les Tomates !
Posté le 24-12-2003 à 15:24:54  profilanswer
 

en fait, je sais utiliser une simple base de données avec 2 tables : chanteurs et chansons par exemple. Qui chante quoi, qui a chanté ça ... ajout/suppression de chanteurs et/ou de chansons.
 
et c tout :)
 
si c'était aussi simple, sans "croisements" dans les tables, ça irait, mais là, je suis perdu.
 


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
mood
Publicité
Posté le 24-12-2003 à 15:24:54  profilanswer
 

n°596498
Combi_A_Ve​ndre
Posté le 24-12-2003 à 15:38:36  profilanswer
 

Tu sais faire les tables comme je te les ai donné?


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
n°596507
Combi_A_Ve​ndre
Posté le 24-12-2003 à 16:00:37  profilanswer
 

Pour avoir la liste des services par personnes :
SELECT departement.nom FROM departement WHERE departement.id = ( SELECT departement.id FROM listeDepartement WHERE listeDepartement.IdEmploye = (SELECT employe.IdEmploye WHERE employe.nom = "toto" )))
 
Voilà, je ne suis pas certain de la syntaxe, mais c'est ce genre de requete.
Il y a peut etre moyen autrement (avec des join) mais je ne sais pas comment faire.


---------------
The best way to accelerate a computer running windows is at 9.8m.s-2
n°596722
Pizz
Vive les Tomates !
Posté le 25-12-2003 à 10:25:13  profilanswer
 

Combi_A_Vendre a écrit :

Tu sais faire les tables comme je te les ai donné?


 
je vais faire tout ça demain, merci  :jap:  


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°597029
jagstang
Pa Capona ಠ_ಠ
Posté le 26-12-2003 à 00:15:58  profilanswer
 

un livre sur MySQL ne te servira pas à grand chose. il te faut apprendre à modéliser une bdd tout d'abord

n°597049
bossamiral​2
Ctrl+Alt+Del
Posté le 26-12-2003 à 01:14:19  profilanswer
 

Pizz a écrit :


 
je vais faire tout ça demain, merci  :jap:  
 


 
euh perso, je commencerais pas scinder le problème.
 
 
La première que tu appelles employées.
tu crées une première table avec :
Idemployées
Nom  
Prénom  
etc... ( toutes les informations personnelles que tu veux)
 
deuxième table des services :
Idservice
Nom du service ou département
etc ... autre information
 
Troisième Table des affectations :
Idemployées
Idservice
 
( Dans ce cas tu autorises les doublons) Il te faut juste vérifier a l'enregistrement dans cette table que l'affectation Idemployées, Idservice n'exite pas comme doublons.
Pour une recherche c'est hyperfacile car tu recherches idemployées et il te ressort tout les idservices correspondant.
 
Perso si tu as beaucoup de données a géré, je splitterais aussi les tables en différente database.


---------------
Les touches de l'avenir
n°597114
bill.fr
Posté le 26-12-2003 à 10:21:53  profilanswer
 

Je taillerai ainsi (sans savoir trop, puisque les détails que tu donnes sont limités)
 
Table EMPLOYE
EMP_ID NUMBER(9) NOT NULL PRIMARY KEY
EMP_NOM VARCHAR2(40) NOT NULL
plus les autres détails...
 
Table DEPARTEMENT
DPT_ID NUMBER(3) NOT NULL PRIMARY KEY
DPT_NOM VARCHAR2(40) NOT NULL
plus les autres détails...
 
Table SITE
SIT_ID NUMBER(3) NOT NULL PRIMARY KEY
SIT_NOM VARCHAR2(40) NOT NULL
plus les autres détails
 
 
 
Les liaisons entre tables :
 
Table LOCALISATION
EMP_ID NUMBER(9) NOT NULL PRIMARY KEY
SIT_ID NUMBER(3) NOT NULL PRIMARY KEY
 
Table AFFECTATION
EMP_ID NUMBER(9) NOT NULL PRIMARY KEY
DTP_ID NUMBER(3) NOT NULL PRIMARY KEY
 
 
Chaque employé est dans N sites (enreg. dans localisation)
Chaque employé est dans N départements (enreg. dans affectation)
 
Ensuite tu peux greffer par exemple une table de détails sur l'employé, ou bien une table pour la hiérarchie, etc...
 
 
Bon ca m'amuse de faire ça, mais en théorie, t'as pas appris ça à l'école ?


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
n°597126
Pizz
Vive les Tomates !
Posté le 26-12-2003 à 11:44:05  profilanswer
 

bill.fr a écrit :

Je taillerai ainsi (sans savoir trop, puisque les détails que tu donnes sont limités)
 
...
 
Bon ca m'amuse de faire ça, mais en théorie, t'as pas appris ça à l'école ?


 
Non, je n'ai pas appris ça à l'école. C'est pourquoi j'aimerai apprendre :)
 
 
sinon, pour plus de détails :
 
il y a environ 150 employés, 20 départements, 10 sites.
pour les départements et les sites, je n'ai besoin que du nom.
et cet exemple qui reprend tous les cas :


. les employés : toto, marc, jean, pierre  
. les départements : éducation, direction, publicité  
. les lieux : paris, moscou, rome  
 
toto travaille dans l'éducation à paris.  
marc travaille dans l'éducation et la publicité à moscou.  
jean travaille dans la direction et dans l'éducation à rome et à paris.  
pierre travaille dans la publicité à paris et à rome.  


 
bon, je me lance  :)


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°597174
Pizz
Vive les Tomates !
Posté le 26-12-2003 à 13:53:42  profilanswer
 

merci à vous tous, je viens de comprendre comment je devais faire grâce aux tables intersections.
 
maintenant que j'ai compris, il ne reste plus qu'à programmer tout ça en php :) (ça c'est encore autre chose :o)
 


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°597177
bill.fr
Posté le 26-12-2003 à 14:06:47  profilanswer
 

Thou arest welcome, dear old fellow...


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
n°597179
jagstang
Pa Capona ಠ_ಠ
Posté le 26-12-2003 à 14:15:44  profilanswer
 

avant de programmer, montre un peu ta base quand même :) ça t'évitera peut-être des surprises :)


Message édité par jagstang le 26-12-2003 à 14:15:59
n°597180
Pizz
Vive les Tomates !
Posté le 26-12-2003 à 14:23:01  profilanswer
 

JagStang a écrit :

avant de programmer, montre un peu ta base quand même :) ça t'évitera peut-être des surprises :)  


 
question conne de débutant confirmé : comment on montre une base ?  :whistle:


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°597181
bill.fr
Posté le 26-12-2003 à 14:23:13  profilanswer
 

+1 :) Montre toujours, ca peut servir. On aura sans doute des conseils
 
Edit : Montrer : décris tes tables (un peu comme ce que j'ai fait juste au dessus)


Message édité par bill.fr le 26-12-2003 à 14:23:56

---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
n°597183
Pizz
Vive les Tomates !
Posté le 26-12-2003 à 14:27:11  profilanswer
 

CREATE TABLE `employes` (
`emp_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,  
`emp_nom` VARCHAR(20) NOT NULL,  
`emp_mail` VARCHAR(20) NOT NULL
);  
 
CREATE TABLE `departements` (
`dep_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,  
`dep_nom` VARCHAR(20) NOT NULL
);  
 
CREATE TABLE `sites` (
`site_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY,  
`site_nom` VARCHAR(20) NOT NULL
);  
 
CREATE TABLE `localisation` (
`emp_id` INT NOT NULL,  
`site_id` INT NOT NULL,
PRIMARY KEY (`emp_id`, `site_id`)
);  
 
CREATE TABLE `affectation` (
`emp_id` INT NOT NULL,  
`dep_id` INT NOT NULL,
PRIMARY KEY (`emp_id`, `dep_id`)
);


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
n°597190
bill.fr
Posté le 26-12-2003 à 14:43:04  profilanswer
 

Ca parait pas mal.
 
T'as bien saisi comment utiliser les tables de liaison entre les 3 principales ?
 
en gros :
 
EMPLOYES
1 - Dédé
2 - Gérard
3 - Paulo
 
DEPARTEMENTS
1 - Direction
2 - Production
3 - Commercial
 
SITES
1 - Lille
2 - Marseille
3 - Paris
 
Donc si Dédé est à Lille et Marseille, en production
LOCALISATION
EMP : 1 - SIT : 1
EMP : 1 - SIT : 2
 
AFFECTATION
EMP : 1 - DPT : 2
 
Par contre avec ce modèle de données tu ne peux pas dire que Dédé est en production à Lille et en Commercial à Marseille, les sites sont indépendants des départements.
 
Si tu veux pouvoir faire ça il faut une table qui regroupe les 2 autres :
 
Table OU_QUI_QUOI (j'ai pas d'idée de nom de table là)
EMP_ID, SIT_ID, DPT_ID
 
avec pour l'exemple cité
EMP : 1 - SIT : 1 - DPT : 2 (dédé à lille en production)
EMP : 1 - SIT : 2 - DPT : 3 (dédé à marseille en commercial)
 
Je suis clair ? Bref si sites et localisations sont indépendants, t'as tout bon, sinon repense le modèle...
(autrement dit si les employés ont les mêmes fonctions sur tous les sites auxquels ils sont associés c'est bon)


---------------
On ne vit qu'une fois, mais pour qui sait vivre, une seule fois suffit (Merril Stubbing)
n°597194
Pizz
Vive les Tomates !
Posté le 26-12-2003 à 14:49:54  profilanswer
 

merci :jap:
 
oui, j'ai bien saisi les tables de liaisions.
 
normalement, aucun employé n'a une autre fonction dans des sites différents (enfin c'est comme ça (pour le moment) dans le cahier des charges).
 
 
encore merci !
 


---------------
C'est quand on a le nez dans la tomate qu'on voit mieux la tomate !
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySQL] comment configurer ma base pour mon projet [resolu]

 

Sujets relatifs
[PHP] Alternative mysql_fetch_row ?ouverture base access en mode creation
probleme d'installation de jbuilder9 [résolu][MySQL] replace a une seule occurence ?
Intégration d'une base de donner format PDFChoix d'un répertoire avec JFileChooser [resolu]
Bonjour, j'ai quelques ptites questions en PHP et MySQL :o[MySQL] petit probleme d'update
[MySQL] Eviter les doublons dans une table ?UPDATE en MySQL
Plus de sujets relatifs à : [MySQL] comment configurer ma base pour mon projet [resolu]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR