Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Débuter
Débuter Forum d'entraide pour débuter avec MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/10/2011, 18h27   #1
Membre habitué
 
Avatar de dafpp
 
Homme Pascal Diogo Antunes
Étudiant
Inscription : janvier 2008
Messages : 270
Détails du profil
Informations personnelles :
Nom : Homme Pascal Diogo Antunes
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2008
Messages : 270
Points : 128
Points : 128
Par défaut Les clefs étrangères dans sa BDD

Bonjour, je voudrai simplement savoir si déclarer sa donnée en tant que clef étrangère était vraiment utile?

bah oui:
Code :
1
2
3
SELECT *
FROM a, b
WHERE a.id = b.id;
marche très bien.

Quel est le réelle intérêt de déclarer une donnée en clef étrangère ou j'ai mal compris qqchose ?
dafpp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 21h32   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 959
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 959
Points : 17 791
Points : 17 791
Aucun, c'est totalement cosmétique. Si on met des clefs étrangères c'est pour le fun !
D'ailleurs beaucoup milite pour les retirer puisque ça sert à rien !!!































et si vous lisiez un peu avant de poser des questions ????

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 13/10/2011, 21h49   #3
Membre Expert
 
Inscription : août 2008
Messages : 1 271
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 1 271
Points : 1 929
Points : 1 929
Caustique comme réponse, mais ça se comprend
Aller dafpp un début de réponse dans :
Intégrité référentielle (FOREIGN KEY / REFERENCES)

Sinon fait aussi des recherche sur CASCADE, un mot clé très important et extrèmement pratique des contraintes d'intégrités référentielles.
skuatamad est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/10/2011, 23h33   #4
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Citation:
Envoyé par dafpp Voir le message
Bonjour, je voudrai simplement savoir si déclarer sa donnée en tant que clé étrangère était vraiment utile?

bah oui:
Code :
1
2
3
SELECT *
FROM a, b
WHERE a.id = b.id;
marche très bien.

Quel est le réelle intérêt de déclarer une donnée en clé étrangère ou j'ai mal compris qqchose ?
Saluton,
Dura lex sed lex, serait-elle la devise de ce bon SQLpro.

En cette fin de soirée je trouvais pourtant la candeur de ce post....rafraîchissante.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/10/2011, 00h27   #5
Membre habitué
 
Avatar de dafpp
 
Homme Pascal Diogo Antunes
Étudiant
Inscription : janvier 2008
Messages : 270
Détails du profil
Informations personnelles :
Nom : Homme Pascal Diogo Antunes
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2008
Messages : 270
Points : 128
Points : 128
je sais très bien ce que c'est une clef étrangère (désolé pour les clé et pas clef, on voit de tout sur le net, donc après on sait plus l’orthographe - même si ça paraissait plus logique pour clef... bref).

je voulais savoir ce qu'apportait vraiment d'indiquer foreign key, puisque un lien reste un lien, et si qu'on sait que a.id c'est la même chose que b.id, on a juste à sélectionner donc tout ce qui est égale. Je pensais par là en posant ma question s'il n'y avait pas quelque chose d'automatique, mais c'est pas le cas, donc résolu !
merci
dafpp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 09h31   #6
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Au passage, évitons de raviver la guerre des étoiles et, depuis 1982 (bientôt 20 ans ma doué!) la syntaxe normalisée pour les jointures est plutôt
Code :
1
2
3
SELECT les_noms_de_colonne_qui_vont_bien_plutôt_qu_étoile
FROM a
INNER JOIN b USING (id)
ou
Code :
1
2
3
4
SELECT les_noms_de_colonne_qui_vont_bien_plutôt_qu_étoile
FROM a
INNER JOIN b 
ON a.id=b.id
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 14/10/2011, 10h30   #7
Membre habitué
 
Avatar de dafpp
 
Homme Pascal Diogo Antunes
Étudiant
Inscription : janvier 2008
Messages : 270
Détails du profil
Informations personnelles :
Nom : Homme Pascal Diogo Antunes
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2008
Messages : 270
Points : 128
Points : 128
merci, j'en tiendrai bien compte

INNER JOIN ? je connaissais pas, je vais revoir tout ça.
C'est plus rapide que WHERE ? ça permet de joindre 2 tables par rapport à leur clef étrangère directement ?

edit: en effet, ,je viens de lire le cours de cyberzoide, qui est très bien expliqué, et qui indique que pour faire une jointure, il y a plus rapide:
- ce que tu as dis juste au dessus.

Merci à tous
dafpp est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 11h54   #8
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 328
Points : 18 328
Envoyer un message via MSN à CinePhil
Ce n'est, en principe, ni plus rapide ni plus lent mais c'est surtout plus lisbile et évite des erreurs dans les requêtes car avec l'ancienne syntaxe il est très facile d'oublier une condition de jointure. Je ne compte plus le nombre de requêtes en erreur postées ici, écrites avec l'ancienne syntaxe, que j'ai résolues simplement en récrivant les jointures correctement. Dans 90% des cas, il manquait une condition de jointure !

Pour tout savoir sur les jointures : c'est encore chez SQLPro.
__________________
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 !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 18h48   #9
Membre habitué
 
Avatar de dafpp
 
Homme Pascal Diogo Antunes
Étudiant
Inscription : janvier 2008
Messages : 270
Détails du profil
Informations personnelles :
Nom : Homme Pascal Diogo Antunes
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2008
Messages : 270
Points : 128
Points : 128
d'accord merci
dafpp est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h09.


 
 
 
 
Partenaires

Hébergement Web