Bonjour,
j'ai lu sur une doc mysql que si je crée une base de donnée mysql en InnoDb, il faut que je rajoute moi même les index sur les clés étrangères.
Est ce obligatoire ?
Par exemple, j'ai deux tables :
La ligne INDEX est-elle obligatoire ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 CREATE TABLE IF NOT EXISTS groupe ( idGroupe INTEGER NOT NULL AUTO_INCREMENT, NomGroupe VARCHAR(30) NOT NULL, PRIMARY KEY(idGroupe) )ENGINE=InnoDB; CREATE TABLE IF NOT EXISTS utilisateur ( idUtilisateur INTEGER NOT NULL AUTO_INCREMENT, fk_Groupe INTEGER NOT NULL, Nom VARCHAR(20) NOT NULL, Prenom VARCHAR(20) NOT NULL, Mail VARCHAR(30) NULL, Telephone VARCHAR(20) NULL, Fax VARCHAR(30) NULL, PRIMARY KEY(idUtilisateur), INDEX (fk_Groupe), FOREIGN KEY (fk_Groupe) REFERENCES grouep(idGroupe) ON UPDATE CASCADE ON DELETE CASCADE )ENGINE=InnoDB;
J'aimerai aussi avoir une autre réponse est ce obligatoire de 'nommer' les index/contraintes en remplaçant par exemple les lignes suivantes :
INDEX (fk_Groupe) et FOREIGN KEY (fk_Groupe) REFERENCES grouep(idGroupe) ON UPDATE CASCADE ON DELETE CASCADE
par :
INDEX ind_fk_Groupe(fk_Groupe) et CONSTRAINT fk_groupe FOREIGN KEY (fk_Groupe) REFERENCES grouep(idGroupe) ON UPDATE CASCADE ON DELETE CASCADE
Le nom des index/contraintes doivent-ils être unique dans le schéma de la base de données ou bien dans la table seulement ?
Ex si je rajoute la ligne suivante :
INDEX ind_fk_Groupe(fk_Groupe) dans une autre table il va y avoir une erreur de remontée du fait que ce nom est déjà utilisé dans la table utilisateur ?
Merci beaucoup.
Partager