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

SQL Procédural MySQL Discussion :

innobd clef etrangere


Sujet :

SQL Procédural MySQL

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2006
    Messages : 134
    Points : 81
    Points
    81
    Par défaut innobd clef etrangere
    bonjour.
    Voici deux tables
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE AUTEUR (id INT NOT NULL, NOM TXT NOT NULL,
                                   PRIMARY KEY (id))
                                   TYPE=INNODB;
     
    CREAYE TABLE livre ( id INT NOT NULL, titre TXT NOT NULL, 
                                id_auteur INT NOT NULL)
                               PRIMARY KEY (id),
                               FOREIGN KEY (id_auteur)
                               REFERENCES auteur(id)) TYPE=INNODB;
    Je me demande ce qu'apporte le fait de préciser que livre.id_auteur référence auteur.id ? La base va t-elle fonctoinnée differement ?

  2. #2
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    Salut,

    Grâce à InnoDB, oui cela fonctionnera différemment que sans clé étrangère.

    Par exemple : tu ne pourras pas insérer de livres avec un identifiant d'auteur qui n'existe pas (= qui n'est pas dans le table Auteur). De même, tu ne pourras pas supprimer un auteur s'il est référencé dans Livre... à moins de spécifier une suppression en cascade.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2006
    Messages : 134
    Points : 81
    Points
    81
    Par défaut
    Merci pour ta réponse.
    Il est indiqué dans la doc que pour utiliser les contraintes de clefs étrangère :
    il doit y avoir un INDEX où les clés étrangères sont listées comme première colonne
    Dans mon exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    CREATE TABLE AUTEUR (id INT NOT NULL, NOM TXT NOT NULL,
                                   PRIMARY KEY (id))
                                   TYPE=INNODB;
     
    CREAYE TABLE livre ( id INT NOT NULL, titre TXT NOT NULL, 
                                id_auteur INT NOT NULL)
                               PRIMARY KEY (id),
                               FOREIGN KEY (id_auteur)
                               REFERENCES auteur(id)) TYPE=INNODB;
    faut il créer les index sur id et id_utilisateur ou est ce que mysql crée forcement un index sur une clef primaire ?

    Merci.

  4. #4
    Membre éprouvé
    Avatar de Biglo
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France, Moselle (Lorraine)

    Informations forums :
    Inscription : Juillet 2002
    Messages : 537
    Points : 984
    Points
    984
    Par défaut
    MySQL crée automatiquement un index pour les clés primaires : l'index PRIMARY. Donc pas de problème dans ton cas où la clé étrangère référence une clé primaire.

    Pas besoin de créer non plus un index sud id_auteur, MySQL le fait automatiquement. Ce qui n'est pas le cas sur tous les SGBD, il me semble.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    134
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Février 2006
    Messages : 134
    Points : 81
    Points
    81
    Par défaut
    Merci beaucoups.

  6. #6
    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
    N'oublie pas le petit "Résolu"

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

Discussions similaires

  1. Connaîtres toute les clefs etrangeres.
    Par iguanevif dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 21/10/2007, 15h07
  2. rajout clef étrangère
    Par neoboy dans le forum Outils
    Réponses: 19
    Dernier message: 22/08/2007, 16h04
  3. Problème de clefs étrangères
    Par rieppe dans le forum SQL Procédural
    Réponses: 7
    Dernier message: 26/07/2006, 09h36
  4. clefs etrangeres en mysql
    Par loveflower dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 10/11/2004, 19h48
  5. Modification de clefs etrangeres impossible
    Par mboitet dans le forum SQL
    Réponses: 1
    Dernier message: 19/08/2004, 17h11

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