[MySQL] Probleme de conception pour une table (un peu long mais pas trop)
Le
Khône

Salut
Je dois modéliser une bdd de gestion d'acte (mariage, décès, etc.)
et c'est le cas des mariages qui est problématique.
En effet, un acte peut regrouper plusieurs mariages et une personne
peut se marier plusieurs fois
J'ai fais ça comme ça :
tables :
PERSONNE
id_personne
nom_personne
prenom_personne
ACTE
id_acte
texte_acte
id_type_acte (qui me permet de savoir si on est dans le cas d'un mariage ou
autre)
ACTE_PERSONNE
id_acte
id_personne
MARIAGE
id_acte
id_personne_1
id_personne_2
Mes questions :
1) Vous auriez fait ça comme ça ?
2) Dans le cas où vous avez répondu oui au 1, comment faire cette requête :
je connais un id_personne, je sais également que cette personne est liée à
un
acte de mariage dont je connais l'id, et j'aimerai connaitre l'id de la
deuxieme personne
de ce mariage. Est-il possible de le faire autrement que comme ça :
SELECT id_personne_1, id_personne_2
FROM MARIAGE
WHERE id_acte = 2 (par exemple)
AND ((id_personne_1 = 3) OR (id_personne_2 = 3))
et d'être ensuite obligé de comparer le résultat à l'id de la personne de
départ pour savoir
laquelle des deux colonnes je recherchai.
Note : on crée une clé sur trois colonnes dans la table MARIAGE
Merci à ceux qui liront
Khône
Je dois modéliser une bdd de gestion d'acte (mariage, décès, etc.)
et c'est le cas des mariages qui est problématique.
En effet, un acte peut regrouper plusieurs mariages et une personne
peut se marier plusieurs fois
J'ai fais ça comme ça :
tables :
PERSONNE
id_personne
nom_personne
prenom_personne
ACTE
id_acte
texte_acte
id_type_acte (qui me permet de savoir si on est dans le cas d'un mariage ou
autre)
ACTE_PERSONNE
id_acte
id_personne
MARIAGE
id_acte
id_personne_1
id_personne_2
Mes questions :
1) Vous auriez fait ça comme ça ?
2) Dans le cas où vous avez répondu oui au 1, comment faire cette requête :
je connais un id_personne, je sais également que cette personne est liée à
un
acte de mariage dont je connais l'id, et j'aimerai connaitre l'id de la
deuxieme personne
de ce mariage. Est-il possible de le faire autrement que comme ça :
SELECT id_personne_1, id_personne_2
FROM MARIAGE
WHERE id_acte = 2 (par exemple)
AND ((id_personne_1 = 3) OR (id_personne_2 = 3))
et d'être ensuite obligé de comparer le résultat à l'id de la personne de
départ pour savoir
laquelle des deux colonnes je recherchai.
Note : on crée une clé sur trois colonnes dans la table MARIAGE
Merci à ceux qui liront
Khône
peut etre :)
sauf qu'on se demande ou est la cle auto incrémentée de id_acte !!!
serait plus logique de faire un
PERSONNE
id_personne
ACTE
id_acte_description
texte_acte
MARIAGE
id_mariage
id_acte_description
id_personne_1
id_personne_2
tout dépend biensur de ce qu'il ca y avoir dans 'texte_acte'. Ce texte est
il le meme pour tous les mariages???
:
Ouai ou alors faut pouvoir identifier la personne via le sex par exemple.
et tu modifies ta table mariage par:
PERSONNE
id_personne
sexe
...
MARIAGE
id_mariage
id_acte_description
id_personne_homme
id_personne_femme
voila...
evidement cela ne te permet plus de trouver tous les actes d'une personne...
bref. faudrai en connaitre un peu plus sur le besoin...
quelle est l'unité de base qui est manipulée?
une personne
un acte
un type d'acte
...
Etienne
c'est peut tres pas une super structure que je t'ai proposée.
Finalement je pense que le mieux serait encore
ACTE
id_acte (auto)
texte_acte
PERSONNE
id_personne (auto)
nom_personne
prenom_personne
ACTEUR
id_acte
id_personne
id_type_acte
voila.
ca c'est beaucoup mieux...
pour ta requete, ca donne
SELECT id_personne FROM acteur WHERE id_acte = 2 AND id_personne <> 3;
Voila
PS : eventuellement, tu peux basculer id_type_acte dans la table ACTE.
le laisser dans ACTEUR permet d'associer deux fois une meme personne a un
meme acte en lui donnént un rôle différent...
je sais pas trop si ca te sert.
Etienne
sauf que ...
Un acte peut être un mariage ou un bapteme ou une naissance, etc.
Pire, quand un acte est un mariage, il peut en fait faire référence
à plusieurs.
Donc un acte peut être lié à 1, n personnes et vice versa
Simplement, j'aimerai pouvoir modéliser les actes tous de la même
manière et pour le cas spécifique d'un ou plusieurs mariages, savoir
qui s'est marié avec qui ...
Le coup du sexe n'est pas inintéressant
je comprends pas, l'acte étant entièrement déterminé par id_acte
Khône
ui c'est bien le but de la table ACTEUR
Ben ca aussi ca marche...
m'enfin effectivement passe le id_type_acte dans la table ACTE
ce qui donne
ACTE
id_acte (auto)
texte_acte
id_type_acte
PERSONNE
id_personne (auto)
nom_personne
prenom_personne
ACTEUR
id_acte
id_personne
id_role
Ben dans le deuxieme chema tu n'a meme plus besoin du sexe...
je détaille id_role
1 = est le mari
2 = est la femme
3 = est le pere
4 = est la mere
5 = est l'enfant
soit les données suivantes
ACTE
1 | mariage blabla | 1
2 | mariage blabla | 1
3 | naissance blabla | 2
PERSONNE
1 | DUGLAND | Bob
2 | DUPONT | Julie
3 | SMITH | Karine
4 | DUGLAND | Pauline
ACTEUR
1 | 1 | 1
1 | 2 | 2
2 | 1 | 1
2 | 3 | 2
3 | 1 | 3
3 | 3 | 4
3 | 4 | 5
voila donc l'acte 1 permet de dire que Bob DUGLAND et marié avec Julie
DUPONT
l'acte 2 permet de dire que Bob DUGLAND et marié avec Karine SMITH
l'acte 3 permet de dire que Bob DUGLAND et Karine SMITH ont eu un enfant qui
est Pauline DUGLAND
voila. les requetes ne sont pas complexe...
Etienne
id_personne
nom_personne
prenom_personne
date_naissance
date_deces
CONTRAT (dont mariage, PACS...)
id_contrat
texte_contrat
id_pers1
id_pers2
id_type_contrat (qui me permet de savoir si on est dans le cas d'un mariage ou
autre)
date_debut
lieu_debut
date_fin
lieu_fin
suffit.
Prévoir un trigger pour que les actes ne se recouvrent pas pour une même personne.
A +
Khône a écrit:
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
mariage ou
ouai mais tu fais quoi pour les deces, ou naissance ???
deces -> une seule personne impliqué
naissance -> 3 personnes impliquée non?
Etienne
A +
Etienne SOBOLE a écrit:
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
personnes : date naissance, date deces.
Ah oui bonne remarque...
mais dans ce cas, tu dois prévoir pour chaque personne un père et une mère.
et dans ce cas pourquoi pas un conjoint???
le bleme c'est surtout le manque de souplesse de ton schema (me semble t-il)
ca n'anticipe pas l'arrivé de "nouveaux" actes...!
Enfin bon, moi je dis ca...
Etienne
"Fred BROUARD - SQLpro" de news: 40c5d9c2$0$306$
personnes : date naissance, date deces.
message
Le terme le plus approprié étant géniteur, plutôt que père et mère...
En effet tu peut avoir eut un géniteur x et être élevé par y. Dans ce cas il y a un contrat civil...
A +
Etienne SOBOLE a écrit:
--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************