|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre du Club
![]() Inscription : novembre 2006 Messages : 270 ![]() |
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 :
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? |
||
|
|
00
|
|
|
#2 |
![]() ![]() |
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 ! |
|
00
|
|
|
#3 |
|
Membre du Club
![]() Inscription : novembre 2006 Messages : 270 ![]() |
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? |
|
|
00
|
|
|
#4 |
![]() ![]() |
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 ! |
|
00
|
Copyright © 2000-2012 - www.developpez.com