Précédent   Forum des professionnels en informatique > Bases de données > MySQL
MySQL Forum d'entraide MySQL. Avant de poster -> FAQ MySQL, Tutoriels 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 20/07/2011, 11h48   #1
Membre du Club
 
Inscription : novembre 2006
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 270
Points : 43
Points : 43
Par défaut Quel est l'utilité du mot clé "KEY" tout seul?

Bonjour,

Je suis en train de mettre en place une base de données MySQL avec le moteur innoDB.
J'ai regardé un fichier de dump et je me suis rendu compte qu'il y avait l'utilsation de "KEY".
J'aurais aimé savoir à quoi ça sert de le rajouter, parce que je connais "PRIMARY KEY" et "FOREIGN KEY", mais "KEY" tout court non!

Voici un exemple:
Code sql :
1
2
3
4
5
6
7
8
9
10
11
 
DROP TABLE IF EXISTS `utilisateur`;
CREATE TABLE `utilisateur` (
  `id_utilisateur` int(11) NOT NULL AUTO_INCREMENT,
  `id_secteur` int(11) NOT NULL,
  `nom` varchar(80) NOT NULL,
  `prenom` varchar(60) NOT NULL,
  PRIMARY KEY (`id_utilisateur`),
  KEY `FK_utilisateur_ON_id_secteur` (`id_secteur`),
  CONSTRAINT `FK_utilisateur_ON_id_secteur` FOREIGN KEY (`id_secteur`) REFERENCES `secteur` (`id_secteur`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

En regardant un dump d'une base un peu plus grosse, je me suis rendu compte qu'il n'y à pas systématiquement une key pour une clé étrangère.
Du coup je n'arrive pas à cerner l'intérêt de ce mot?
Donc deux petites questions:
1) A quoi sert il concrètement?
2) Quand le mettre?

Quelqu'un peut il m'éclairicir svp?
takinelinfo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 12h01   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 008
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 008
Points : 18 279
Points : 18 279
Envoyer un message via MSN à CinePhil
KEY tout seul est un index et les clés étrangères doivent être des colonnes indexées.

Lorsque la clé étrangère est portée par une colonne qui est également clé primaire, il n'y a pas besoin d'ajouter un index sur cette colonne, d'où probablement l'absence de KEY que tu as pu constater ici ou là.
__________________
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 20/07/2011, 14h18   #3
Membre du Club
 
Inscription : novembre 2006
Messages : 270
Détails du profil
Informations forums :
Inscription : novembre 2006
Messages : 270
Points : 43
Points : 43
Ok, merci pour cette explication claire et concise.
Peut être que ça dépend du SGBD mais je dirais donc que MySQL les créé automatiquement puisque je l'ai ai au moment de l'export alors que dans mon CREATE je ne les ai pas spécifié.

Y a t'il une utilité à le rajouter dans le script de création de la base ou non?
takinelinfo est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/07/2011, 14h24   #4
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 008
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 008
Points : 18 279
Points : 18 279
Envoyer un message via MSN à CinePhil
Le principe est que les colonnes support de clés étrangères doivent être indexées.

Si tu génères le script à partir d'un outil de modélisation tel que MySQL Workbench, je pense que la création des index sera automatiquement ajoutée pour toute clé étrangère.

Mais si tu écris ton script de création à la main, ce que je trouve bien fastidieux, je pense qu'il faut que tu ajoutes toi-même ces index avant la création de la clé étrangère sous peine de voir ton script planter car je ne suis pas sûr que MySQL fasse l'indexation tout seul. À voir dans la doc.
__________________
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
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h39.


 
 
 
 
Partenaires

Hébergement Web