IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

[MySQL] Utilisation des Foreign Key


Sujet :

Langage SQL

  1. #1
    Membre habitué
    Avatar de Regnak
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 165
    Points
    165
    Par défaut [MySQL] Utilisation des Foreign Key
    Depuis sa version 5( heu je crois), MySQL permet l'utilisation des clées étrangères, notamment avec les tables MyIsam. On m'a dit qu'utiliser celles ci dans le but de faire des INNER JOIN était dangereux pour la stabilité de la table, que pour eéaliser une jointure avec MySQL, il fallait mieux en rester aux WHERE avec les clés primaires.

    est ce vrai ??
    Peut on prendre ce risque dans une application qui risque d'avoir beaucoup d'utilisateurs (codée avec PHP) ?

  2. #2
    Xo
    Xo est déconnecté
    Expert confirmé
    Avatar de Xo
    Inscrit en
    Janvier 2005
    Messages
    2 701
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 701
    Points : 4 238
    Points
    4 238
    Par défaut
    L'utilisation des clés étrangères est certainement beaucoup plus ancienne que la version 5

    Pour les nouveautés de la version 5, voir : Les nouveautés de MySQL 5.0

    Ensuite, tu parles de jointures : bien entendu, il est préférable de réaliser tes jointures via un mot-clé normalisé comme INNER JOIN plutôt que dans le WHERE : cf cet article : Les jointures, ou comment interroger plusieurs tables

    On m'a dit qu'utiliser celles ci dans le but de faire des INNER JOIN était dangereux pour la stabilité de la table, que pour eéaliser une jointure avec MySQL, il fallait mieux en rester aux WHERE avec les clés primaires.
    ... Heu, c'est un beau ramassis de bêtises que tu nous sors là !

    Tu mélanges des notions, les clés étrangères sont faites pour préserver l'intégrité de tes données, et les requêtes pour interroger tes données. Il est évidement préférable de faire des jointures sur des champs référencés via des clés étrangères pour la cohérence de ta requête.

  3. #3
    Membre habitué
    Avatar de Regnak
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 165
    Points
    165
    Par défaut
    Donc on est d'accord, c'est n'importe quoi ??
    En aucun cas ma table ne risque d'être plus altérée ?

  4. #4
    Membre confirmé
    Avatar de DBProg
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    242
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 242
    Points : 579
    Points
    579
    Par défaut
    Citation Envoyé par Regnak
    Donc on est d'accord, c'est n'importe quoi ??
    En aucun cas ma table ne risque d'être plus altérée ?
    - C'est n'importe quoi
    - En aucun cas non ! Et c'est même préférable de le faire, pour pas dire obligé

  5. #5
    Modérateur
    Avatar de al1_24
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2002
    Messages
    9 099
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 9 099
    Points : 28 397
    Points
    28 397
    Par défaut
    Citation Envoyé par Regnak
    On m'a dit qu'utiliser celles ci dans le but de faire des INNER JOIN était dangereux pour la stabilité de la table, que pour eéaliser une jointure avec MySQL, il fallait mieux en rester aux WHERE avec les clés primaires.
    est ce vrai ??
    Ce qui serait intéressant, c'est de savoir où tu avais eu ce type d'informations...

  6. #6
    Membre habitué
    Avatar de Regnak
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2006
    Messages
    130
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2006
    Messages : 130
    Points : 165
    Points
    165
    Par défaut
    Ce osnt certains de mes amis qui en paralaient
    Comme ils n'avaient pas trop l'air d'être sur d'eux sur ce coup, et que je ne trouvais pas de réponse sur internet, j'ai décidé de poser la question...
    Et j'ai bien fait !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Liste des foreign key des tables d'une base de données
    Par lalyly dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 29/05/2006, 11h25
  2. Liste des foreigns key non indexés
    Par soazig dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/05/2006, 17h50
  3. utilisation des angel keys
    Par zidenne dans le forum Autres Logiciels
    Réponses: 2
    Dernier message: 13/01/2006, 14h11
  4. [mysql]table avec foreign key
    Par samjung dans le forum Langage SQL
    Réponses: 24
    Dernier message: 24/11/2005, 14h42
  5. [MYSQL] utilisation des TZ sous delphi possible?
    Par douill dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/03/2005, 17h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo