Bonjour,
J'ai besoin de développer une relation polymorphique et de stocker le
type de la table de référence et l'id dans deux tables différentes
(comme ca, ca ne doit pas être très clair).
Voilà l'exemple :
table PERSONNES
- id
-...
table VILLES
- id
- nom
- tel_mairie
- adresse_mairie
table PAYS
- id
- nom
table MANDATS
- id
- nom
- lieu_type = VILLE ou PAYS
table ELUS
- id
- personne_id
- mandat_id
- lieu_id -> fait référence à la table VILLES ou PAYS en fonction du
lieu_type du mandat associé
un exemple ce qu'il peut y avoir dans les tables :
- mandat vas contenir des enregistrement du genre
(0,maire,villes)
(1,conseiller municipal,villes)
(2,ministre,pays)
(3,président,pays)
- elu va contenir des enregistrement du genre :
(0,jacques machin,maire,poitiers)
(1,michel ducoin,maire,chatellerault)
(2,jacques vigneret,conseiller municipal,angouleme)
(3,monique dufour,ministre,france)
(4,martine dugalet,presidente,irlande)
NB: j'ai remplacé personne_id,mandat_id,ville_id par
personne.nom,mandat.nom,ville.nom
la table mandat me sert à obtenir la liste des mandats possibles pour
les afficher dans un formulaire où l'on choisira les mandats de chaque
personne.
donc les solutions que je vois sont :
1) ce que j'ai décrit ci-dessus mais je ne sais pas comment l'implémenter
2) ajouter (dupliquer) type_lieu dans la table elus (c'est peut être le
plus simple même ce n'est pas très propre?)
2) grouper les tables elus et mandats :
MANDATS
- id
- nom
- lieu_id
- lieu_type
- personne_id
auxquels cas je stockerai la liste des mandats possibles en créant des
mandats associés à aucune personne (ce sera la liste des mandats que
j'affiche dans le formulaire)
Quelles solutions vous parait être la meilleure ?
Comment peut-on implémenter une relation polymorphique dans laquelle on doit lire le type de lieu_id dans une autre table ?
Merci à tous
|
il y a 17 heures 12 min
il y a 1 semaine 16 heures
il y a 1 semaine 1 jour
il y a 1 semaine 1 jour
il y a 1 semaine 1 jour
il y a 1 semaine 6 jours
il y a 2 semaines 12 heures
il y a 2 semaines 3 jours
il y a 3 semaines 4 heures
il y a 3 semaines 1 jour