Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en 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 23/08/2006, 19h30   #1
Membre du Club
 
Inscription : février 2006
Messages : 134
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2006
Messages : 134
Points : 48
Points : 48
Par défaut innobd clef etrangere

bonjour.
Voici deux tables
Code :
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 ?
mikebranque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/08/2006, 20h33   #2
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
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.
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2006, 15h20   #3
Membre du Club
 
Inscription : février 2006
Messages : 134
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2006
Messages : 134
Points : 48
Points : 48
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 :
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.
mikebranque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/08/2006, 17h22   #4
Rédacteur
 
Avatar de Biglo
 
Inscription : juillet 2002
Messages : 537
Détails du profil
Informations personnelles :
Localisation : France, Moselle (Lorraine)

Informations forums :
Inscription : juillet 2002
Messages : 537
Points : 561
Points : 561
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.
Biglo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2006, 11h06   #5
Membre du Club
 
Inscription : février 2006
Messages : 134
Détails du profil
Informations personnelles :
Localisation : France, Gironde (Aquitaine)

Informations forums :
Inscription : février 2006
Messages : 134
Points : 48
Points : 48
Merci beaucoups.
mikebranque est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/08/2006, 11h18   #6
Membre éclairé
 
Avatar de DBProg
 
Étudiant
Inscription : juillet 2006
Messages : 242
Détails du profil
Informations personnelles :
Âge : 27
Localisation : France, Moselle (Lorraine)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juillet 2006
Messages : 242
Points : 315
Points : 315
N'oublie pas le petit "Résolu"
__________________
La vitesse de la lumière étant supérieure à la vitesse du son, certaines personnes brillent encore tant qu'elles n'ont pas parlé
-----------------------------------------------------------
Retrouvez mes articles informatique sur mon Site Developpez.
Le reste, sur le Site perso !

DBProg 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 21h47.


 
 
 
 
Partenaires

Hébergement Web