MySQL/ relation identifiée/ clés etrangeres

Résolu/Fermé
123biwei Messages postés 24 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 3 novembre 2011 - 3 nov. 2011 à 03:10
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 - 3 nov. 2011 à 17:10
Bonjour à tous,

Je m'escuse par avance si mon vocabulaire informatique n'est pas precis et adapté, je ne suis pas issu d'une formation IT. J'espère quand même pouvoir faire comprendre.

Voila je débute sous DBDesigner4 pour créer une nouvelle base de donnée MySQL.
(Jusque la je creeais mes base directement sous phpMyAdmin)

Je ne suis pas vraiment sur de bien comprendre la difference entre une relation identifiée et non-identifiée. SI qqun peut m'éclairer en qq ligne je suis preneur.

Mais ma question est la suivante: pourquoi dans une relation identifiée DBDesigner inclut non seulement la clé etrangere parent, mais aussi grand parents, et toutes les clés ascendantes?

Example: 3 tables: Pays, Ville, Quartier. (relations 1:n, un pays a plusieurs villes qui a plusieurs quartiers).
Pourquoi DBDesigner me crèe:

PAYS
  idPays

VILLE
   idVille
   idPays (cle etrangere)

QUARTIER
  idQuartier
  idVIlle (cle etrangere)
  idPays (cle etrangere et celle la pourquoi elle est crée???? elle est obligatoire sous DBD mais je ne vois pas son utilité)


(Jusque la je prenais uniquement relation non identifiée. Mais les relations n:m sont uniquement identifiée sous DBD.)

Merci à tous!!


Bien cordialement,

PIerre.







3 réponses

vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
3 nov. 2011 à 16:19
bonjour,

en faite dans ce cas c'est normal qu'un quartier au un id ville et pays comme clé étrangere, car un nom de quartier peut exister dans différentes villes et pays

mais après tout dépend du contexte
0
123biwei Messages postés 24 Date d'inscription lundi 18 décembre 2006 Statut Membre Dernière intervention 3 novembre 2011 4
3 nov. 2011 à 17:06
Hello,

Merci BCP pour ta réponse, je la reçois en meme temps que je trouve de mon cote..
D'abord je ne suis pas d'accord, désolé ;-). (Mais je reste super reconnaissant de ton aide cela va de sois)
Du moment que la table 'quartier' comporte la clé étrangère 'Ville_id', il n'y a aucune ambiguite possible: le quartier est liée a une seule ville.

Ensuite je met mes reponses qui peuvent etre corrigées ou etre utilisées par la suite.

1/ Relation identifie: En gros c'est mettre toutes les clés parents dans les tables filles. L'idée principale est de limiter les jointures futures.
Example d'une base de donnée complexe ou une table client aurait comme fille une table commande > table facture > table payement > table livraison > table camion..

La table camion aura donc comme clé etrangere idClient, idFacture, idPayement, IdLivraison. Ca multiplie le nombre de cles par contre si on veut savoir a quel camion correspond quel client, pas besoin de faire un commande SQL à 4 jointures.

Enfin c'est ce que je comprend de la relation identifiée. Merci a tout ceux qui voudront bien me corriger si je me trompe.

2/ DBDesigner est remplacé par MySQL workbench, donc pas la peine de s'attarder trop sur ce logiciel.
Mais par default dans une reation n:m, DBD va creer un table intermediaire (la méthode classique) avec deux relations identifiées. Il faut manuelement changer le type de relation, puis virer les clé etrangeres inutiles.


A bientot,

Pierre
0
vordano Messages postés 1682 Date d'inscription mardi 12 juillet 2011 Statut Membre Dernière intervention 20 juillet 2012 316
3 nov. 2011 à 17:10
"Du moment que la table 'quartier' comporte la clé étrangère 'Ville_id', il n'y a aucune ambiguite possible: le quartier est liée a une seule ville. "
ah oui désolé j'avais pas pensé a ca :s la honte :(
0