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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Quel schéma relationnel est le bon ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Quel schéma relationnel est le bon ?

n°1809311
Thelvyn777
Woman or PC ........ both !
Posté le 07-11-2008 à 11:32:18  profilanswer
 

Bonjour,
 
Exemple simple : soit 2 tables
table 1 : EMPLOYES [id_employe, nom, prenom, agence_de_rattachement (stocke un id_ag) , lieu_de_travail (stocke un id_ag), Responsable(stocke unid_employe)]
table 2 : AGENCES [d_ag, nom_agence]
 
Supposons que 1 employe ne peut travailler et appartenir qu'à 1 agence mais que celle puisse être différente
(ex: Je travaille dans l'agence B, mais je dépend du siège qui est l'agence A)
 
1) Ai-je le droit de dans le cadre d'une BDD relationnelle de faire pointer ma table EMPLOYES deux fois sur la même table agence, car mon responsable me dit que je ne respecte pas la norme ? Il me dit qu'il faudrait une table AGENCE_TRAVAIL et une table AGENCE_RATTACHEMENT histoire que la table employe ne pointe pas sur la même table  
Est ce vrai ?
 
2) De la même façon ai-je le droit de stocker pour le Responsable  l'id_employe (du Responsable) venant de la même table ? boucle sur elle même


Message édité par Thelvyn777 le 21-11-2008 à 11:51:12
mood
Publicité
Posté le 07-11-2008 à 11:32:18  profilanswer
 

n°1809333
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-11-2008 à 12:15:14  profilanswer
 

1 employé peut être rattaché à plusieurs agences, et une agence peut contenir plusieurs employés => relation plusieurs-à-plusieurs => il te faut une table intermédiaire entre les deux qui contiendra 2 champs (id de l'agence et id de l'employé).
toute autre façon de faire est de la pure bidouille qui ne respecte pas la norme.


---------------
J'ai un string dans l'array (Paris Hilton)
n°1809360
olivthill
Posté le 07-11-2008 à 13:07:39  profilanswer
 

Tout à fait d'accord. Voir les normes http://fr.wikipedia.org/wiki/Forme [...] ionnelles) .

n°1809531
Thelvyn777
Woman or PC ........ both !
Posté le 07-11-2008 à 15:57:24  profilanswer
 

Harkonnen a écrit :

1 employé peut être rattaché à plusieurs agences, et une agence peut contenir plusieurs employés => relation plusieurs-à-plusieurs => il te faut une table intermédiaire entre les deux qui contiendra 2 champs (id de l'agence et id de l'employé).
toute autre façon de faire est de la pure bidouille qui ne respecte pas la norme.


 
Je sais mais j'ai pris un cas simple en supposant que je n'ai que du 1-1  (dans ma vraie base j'ai bien au n-n avec table intermédiaire ) mais là n'est pas mon hésitation.
Je cherche à savoir si je pouvais stocker dans ma table EMPLOYE deux fois l' "id_agence" mais dans des champs différents (je suppose que je n'ai que du 1-1)
 
exemple de requete :
 

Code :
  1. SELECT e.nom,e.prenom,a1.agence_de_rattachement,a2.lieu_de_travail
  2. FROM employe AS e
  3. LEFT JOIN agence AS a1 ON e.agence_de_rattachement=a1.id_ag
  4. LEFT JOIN agence AS a2 ON e.lieu_de_travail=a2.id_ag


 
Est-ce correct ?

Message cité 1 fois
Message édité par Thelvyn777 le 07-11-2008 à 16:11:04
n°1809566
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 07-11-2008 à 16:22:20  profilanswer
 

Thelvyn777 a écrit :

 

Est-ce correct ?


pas du tout, tu ne peux faire de jointures entre 2 tables que sur un seul champ

Message cité 1 fois
Message édité par Harkonnen le 07-11-2008 à 16:22:33

---------------
J'ai un string dans l'array (Paris Hilton)
n°1809573
Thelvyn777
Woman or PC ........ both !
Posté le 07-11-2008 à 16:28:54  profilanswer
 

Harkonnen a écrit :


pas du tout, tu ne peux faire de jointures entre 2 tables que sur un seul champ


 
Pourtant ce n'est pas ce qui dit ce post
http://forum.hardware.fr/hfr/Progr [...] 6838_1.htm
 
1) sinon alors comment faire ? créer une 2èmes table AGENCE reprenant les mêmes données (=> donc redondance)
2) passer par une table intermédiaire ? mais cela ne change pas le fait  que la requete doit se faire deux fois sur la même table puisque pour les 2 champs il faut passer par la table TABLE pour obtenir le nom
3) j'ai deux LEFT JOIN dans requete dc 2 jointures ?


Message édité par Thelvyn777 le 07-11-2008 à 16:31:36
n°1811446
Thelvyn777
Woman or PC ........ both !
Posté le 13-11-2008 à 09:54:56  profilanswer
 

Quelqu'un aurait il un autre avis ?

n°1811455
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 13-11-2008 à 10:10:08  profilanswer
 

Peut être que si tu expliquais clairement ce que tu souhaites obtenir, aurais tu plus de réponses ? Parce que tu demandes "mais alors, comment faire ?", mais comment faire quoi ?


---------------
J'ai un string dans l'array (Paris Hilton)
n°1811518
rufo
Pas me confondre avec Lycos!
Posté le 13-11-2008 à 12:15:17  profilanswer
 

Petite précision : on peut faire des doubles jointures sur une même tables dans certains cas :
1) il y a 2 relations différentes entre 2 tables (ex : dans une GED, pour un document, y'a un auteur et un valideur, tous 2 issus de la même table "personnes" )
2) dans le cas de calculs/stats (ex : dans l'historique des changements d'état de tickets d'un help-desk, trouver tous les tickets qui ont été réouverts, c'est-à-dire, des ID d'états < à d'autres mais ayant une date de log > à ces autres ID d'états.


---------------
Astres, outil de help-desk GPL : http://sourceforge.net/projects/astres, ICARE, gestion de conf : http://sourceforge.net/projects/icare, Outil Planeta Calandreta : https://framalibre.org/content/planeta-calandreta
n°1814875
Thelvyn777
Woman or PC ........ both !
Posté le 21-11-2008 à 11:49:29  profilanswer
 

Harkonnen a écrit :

Peut être que si tu expliquais clairement ce que tu souhaites obtenir, aurais tu plus de réponses ? Parce que tu demandes "mais alors, comment faire ?", mais comment faire quoi ?


 
Ce que je veux vraiment faire:
Gérer les affectations employés, agences, véhicules, missions de notre société de Transports
Nous devons pouvoir traiter les cas ou  :
- Employé A de l'agence B roule dans un véhicule C de l'agence D
- Employé A de l'agence B n'a pas forcement un véhicule d'affecté
- Véhicule C de l'agence D n'a pas forcement un employé d'affecté
- Un employé peut avoir une mission différente suivant s'il est dans l'agence A ou B
 
Ce que j'ai fait:
Table employes : id_emp, nom, prénom
Table véhicules : id_vh, immat
Table agences : id_ag, nom_ag
Table missions : id_miss, intitulé
Table aff_vh_ag : id_aff, id_vh, id_ag : table pour la jointure entre véhicules et agences
Table aff_emp_ag : id_aff, id_emp, id_ag, id_miss : table pour la jointure entre employes et agences,missions
Table aff_emp_vh : id_aff, id_emp, id_vh : table pour la jointure entre véhicules et employes
Ce qui fait que j'ai une double jointure sur les table agences,véhicule,chauffeur
Hors mon responsable me dit que ce schéma relationnel n'est pas bon
 
Ce qu'il me propose:
Table employes : id_employe, nom, prenom
Table véhicules : id_vh, immat
Table agences : id_ag, nom_ag
Table aff : id_aff, id_emp, id_ag, id_vh,id_miss
mais dans ce cas il est difficile de gérer les affectations lorsque  Employe A de l'agence B roule dans un véhicule C de l'agence D
De plus j'ai l'impression qu'on mélange tout: ex dans la même table là on a missions et véhicules alors que pour moi ça n'a aucun lien
 
Qui a raison ? Ou y a t il une autre solution

mood
Publicité
Posté le 21-11-2008 à 11:49:29  profilanswer
 

n°1817235
smilaou
Posté le 26-11-2008 à 17:56:18  profilanswer
 

Si tu y arrives pas c'est qu'il te manque une table.
Dis toi les choses le plus simplement possible. => 3eme forme normale...
 
Table employes : id_employe, nom, prenom  
Table véhicules : id_vh, immat  
Table agences : id_ag, nom_ag  
 
Une voiture appartient à une agence.
Un employé est membre d'une agence.
Un employé utilise une voiture.
 
Ton champs id_miss je ne vois pas du tout à quoi ça correspond.


Message édité par smilaou le 26-11-2008 à 17:57:32

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

  Quel schéma relationnel est le bon ?

 

Sujets relatifs
Binding entre un schéma XSD et un ensemble de classes C++Obtenir les schema a partir d'une BDD
Diagramme classe, BDD relationnel, formes normalesdiagramme de classe uml TO bdd relationnel
probleme XSD - XML schemaconception schema BDD
comment créer un schema relationnel avec Open Office[MySQL]Changement d'un schéma relationnel
Logiciel pour faire un beau schema relationnel ?Schema Relationnel
Plus de sujets relatifs à : Quel schéma relationnel est le bon ?


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