|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Chauvin Baptiste Inscription : décembre 2009 Messages : 59 ![]() |
Bonjour tout le monde,
Je modifie actuellement une base existante pour une association qui gère de l'événementiel. Malheureusement je ne peux pas faire toutes les modifications que je veux, juste adapter l'existant pour s'adapter aux nouveaux outils. Je le précise car je n'ai pas eu l'autorisation de modifier la base à ma convenance... même si mes demandes étaient parfois justifiées. Ceci à donc compliquer un peu ma démarche. Mon soucis est le suivant: J'ai une table 'PROJETS' qui regroupe des données sur des événements en cours (comprendre festivals, concerts, expositions, etc..). Au début de l'association ces événements étaient organisés uniquement par des gens travaillant pour l'organisme, mais depuis quelques temps certains secteurs sont ouverts aux intervenants extérieurs. Dans la base existante une table regroupe donc les fiches des travailleurs internes, ces données sont spécifiques aux "employés" de l'association et les responsables ne souhaitent pas entrer de personnes extérieures dans cette table. Je me retrouve donc avec une table 'INTERNES' et une table 'EXTERNES' en fonctions que les intervenant sont, ou non , membre de l'association. Je peux gérer cet état de fait même si je trouve que ce n'est pas très correcte comme façon de procéder. Par contre je me retrouve face à un problème dans la modélisation que je n'arrive pas à gérer. En effet pour chaque projet il y a des responsables de secteurs, par exemple un responsable 'Repro', un responsable 'Marketing', un responsable 'Finance', etc... Ces personnes peuvent être internes ou externes, mais pas les deux à la fois, je dois donc faire en sorte que se soit l'un ou l'autre (voir schéma). ![]() Cela fonctionne pour une personne (donc un responsable) l'héritage fait parfaitement son travail, mais comme je dois avoir 6 responsables par projets, ce système bloque. En effet j'ai essayé de mettre 6 héritages entre les deux tables 'INTERNES' et 'EXTERNES' qui pointent tous vers 'PROJETS' mais apparemment la base de données n'accepte pas ce genre de blague. Je ne sais pas comment faire pour avoir mes 6 FK qui pointent soit vers 'INTERNES' soit vers 'EXTERNES', je ne suis pas assez calé au niveau modélisation. Voyez comment faire pour gérer ce problème de FK ? (je rappèle que je ne peux pas fusionner les deux tables 'INTERNES' et 'EXTERNES') Thanks |
|
|
00
|
|
|
#2 | ||
![]() ![]() |
Citation:
Citation:
L'héritage, que tu mentionnes dans ton message mais à mon avis pas à bon escient, se modélise ainsi : INTERNE -(1,1)----Etre----0,1- PERSONNE EXTERNE -(1,1)----Etre----0,1---------| Normalement, ça donne les tables suivantes : PERSONNE (prs_id, [colonnes communes à toutes les personnes]) INTERNE (int_id_personne, [colonnes spécifiques aux internes]) EXTERNE (ext_id_personne, [colonnes spécifiques aux externes]) Ensuite, puisque tu as plusieurs personnes à associer aux projets, tu as l'association suivante : PERSONNE -0,n----Travailler----0,n- PROJET Et donc une simple table associative à créer pour enregistrer toutes les personnes travaillant sur un projet. La difficulté que tu vas probablement rencontrer est que tu as sans doute déjà des données dans les tables INTERNES et EXTERNES donc potentiellement des identifiants identiques dans les deux tables. Tu vas peut-être alors devoir : - soit mettre à jour les données pour éviter ces identifiants identiques ; - soit créer une colonne ancien_id dans ces tables filles. Voilà les pistes vers lesquelles je me tournerais ; difficile d'en dire plus sans connaître l'existant en matière de programmes utilisant la BDD et le nombre de requête que cela impliquerait de changer, le volume de données à éventuellement modifier... Intéressant challenge en tout cas !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
||
|
10
|
|
|
#3 |
|
Expert Confirmé
![]() Inscription : juillet 2007 Messages : 2 178 ![]() |
Bonjour BLJ.CHAUVIN,
Je ne connais pas bien le formalisme que tu utilises mais, comme la question m'intéresse, je me permets d'intervenir. Je ne pense qu'il s'agisse, en l’occurrence, d'héritage mais, plutôt, d'une association à mettre en place, non ? Car : Interne ---(0,n)---[participe au projet]---(1,n)--- Projet Externe ---(0,n)---[participe au projet]---(1,n)--- Projet ==> donc, association. Suggestion : Projets_Int_Ext(#id_projet, #id_Int_Ext, ...) Avec : Interne ---(0,1)---[participe au projet]---(1,1)--- Projet_Int_Ext Externe ---(0,1)---[participe au projet]---(1,1)--- Projet_Int_Ext Projet ---(1,n)---[possède les intervenants]---(1,1)--- Projet_Int_Ext Avec le soutien de CinePhil et/ou Fsmrel... ou pas.
__________________
Dis-nous et à bientôt, Richard. ---------------------------------------------------------------------------------------------- . et permettent aux forumeurs de cibler leur recherche dans une discussion : n'hésitez pas à voter !
|
|
|
01
|
Copyright © 2000-2012 - www.developpez.com