Bonjour à tous,
Je souhaite gérer ma collection de fichiers musique qui sont déjà sous excel
J'ai convertir le fichier en csv et fait un :
LOAD DATA LOCAL INFILE
pour obtenir la table import de structure :
ensuite j'envois les données dans diverses tables
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 idimport int(10) unsigned NOT NULL titrevar char(100) NULL interprete varchar(50) NULL album varchar(50) NULL annee year(4) NULL
par exemple table interpretes :
avec la requête suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 CREATE TABLE IF NOT EXISTS `mp3`.`interpretes` ( `id_interprete` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT, `interprete` VARCHAR(50) NULL, PRIMARY KEY (`id_interprete`)) ENGINE = INNODB; CREATE UNIQUE INDEX `id_interprete_UNIQUE` ON `mp3`.`interpretes` (`id_interprete` ASC); CREATE UNIQUE INDEX `interprete_UNIQUE` ON `mp3`.`interpretes` (`interprete` ASC);
Je me pose les questions suivantes :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 INSERT INTO interpretes (interprete) (SELECT interprete FROM IMPORT GROUP BY interprete)
est-ce correct de faire une requête imbriquée avec INSERT INTO, serait-il mieux de le faire avec une jointure de type LEFT OUTER JOIN
est-ce que j'ai raison de mettre une contrainte unique sur interprete dans le sens ou ma requête ne permettra pas les doublons, c'est pas redondant ?
Une fois que les tables de liaisons sont alimentées j'alimente une table_liste_titres
Une chose qui me choque aussi, c'est que la table import n'est liée à aucune autre, n'est-ce pas contraires à la philosophie des SGBDD ?
Une dernière chose, j'ai créé une table album_interprete en partant du principe que plusieurs interprétés peuvent avoir un même nom d'album :
est-ce que dans ce cas de figure je dois créer un champ auto incrémenté id_album_interprete pour rester cohérent ?
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
20
21
22 Table `mp3`.`album_interprete` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `mp3`.`album_interprete` ( `id_album` SMALLINT UNSIGNED NOT NULL, `id_interprete` SMALLINT UNSIGNED NOT NULL, PRIMARY KEY (`id_album`, `id_interprete`), CONSTRAINT `fk_albums_has_interpretes_albums1` FOREIGN KEY (`id_album`) REFERENCES `mp3`.`albums` (`id_album`) ON DELETE NO ACTION ON UPDATE NO ACTION, CONSTRAINT `fk_albums_has_interpretes_interpretes1` FOREIGN KEY (`id_interprete`) REFERENCES `mp3`.`interpretes` (`id_interprete`) ON DELETE NO ACTION ON UPDATE NO ACTION) ENGINE = INNODB; CREATE INDEX `fk_albums_has_interpretes_interpretes1_idx` ON `mp3`.`album_interprete` (`id_interprete` ASC); CREATE INDEX `fk_albums_has_interpretes_albums1_idx` ON `mp3`.`album_interprete` (`id_album` ASC);
Merci d'avances pour vos réponses et commentaires
Partager