Ajout d'un champ "Auteur(s)" aux publications.
[auf_savoirs_en_partage_django.git] / auf_savoirs_en_partage / sql / 2010-11-26.sql
1 -- Le chercheur n'a pas besoin d'une colonne "actif". C'est la "personne" qui a
2 -- le champ "actif".
3
4 ALTER TABLE chercheurs_chercheur DROP COLUMN actif;
5
6 -- On déplace les thèses dans leur propre table pour les isoler des
7 -- publications.
8
9 CREATE TABLE `chercheurs_these` (
10 `chercheur_id` integer NOT NULL PRIMARY KEY,
11 `titre` varchar(255) NOT NULL,
12 `annee` integer NOT NULL,
13 `directeur` varchar(255) NOT NULL,
14 `etablissement` varchar(255) NOT NULL,
15 `nb_pages` integer,
16 `url` varchar(255) NOT NULL
17 )
18 ;
19 ALTER TABLE `chercheurs_these` ADD CONSTRAINT `chercheur_id_refs_id_727f1a45` FOREIGN KEY (`chercheur_id`) REFERENCES `chercheurs_chercheur` (`id`);
20
21 INSERT INTO chercheurs_these (chercheur_id, titre, annee, directeur, etablissement, nb_pages, url)
22 SELECT c.id, p.titre, p.annee, p.editeur, p.lieu_edition, NULLIF(p.nb_pages, ''), p.url
23 FROM chercheurs_publication p
24 INNER JOIN chercheurs_chercheur c ON c.these = p.id;
25
26 DELETE p FROM chercheurs_publication p
27 INNER JOIN chercheurs_chercheur c ON c.these = p.id;
28
29 ALTER TABLE chercheurs_chercheur DROP COLUMN these;
30
31 -- Les publications auront maintenant une foreign key vers les chercheurs
32 -- plutôt que le contraire.
33
34 ALTER TABLE chercheurs_publication ADD COLUMN `chercheur_id` integer NOT NULL AFTER id;
35 ALTER TABLE `chercheurs_publication` ADD CONSTRAINT `chercheur_id_refs_id_4bd3fee4` FOREIGN KEY (`chercheur_id`) REFERENCES `chercheurs_chercheur` (`id`);
36
37 UPDATE chercheurs_publication p
38 INNER JOIN chercheurs_chercheur c ON p.id IN (c.publication1, c.publication2, c.publication3, c.publication4)
39 SET p.chercheur_id = c.id;
40
41 ALTER TABLE chercheurs_chercheur
42 DROP COLUMN publication1,
43 DROP COLUMN publication2,
44 DROP COLUMN publication3,
45 DROP COLUMN publication4;
46
47 -- On ne peut pas à la fois forcer une clé unique sur le courriel et conserver
48 -- les comptes inactifs dans la table.
49
50 ALTER TABLE chercheurs_personne
51 DROP KEY courriel,
52 ADD KEY courriel (courriel);
53
54 -- Certains chercheurs ont un nom qui commence par un espace
55
56 UPDATE chercheurs_personne SET nom = TRIM(nom), prenom = TRIM(prenom);
57 UPDATE chercheurs_chercheur SET etablissement_autre_nom = TRIM(etablissement_autre_nom);
58 UPDATE chercheurs_chercheur SET diplome = '' WHERE diplome = '.';
59 UPDATE chercheurs_chercheur SET etablissement_autre_nom = '' WHERE etablissement_autre_nom = '.';
60 UPDATE chercheurs_chercheur SET theme_recherche = '' WHERE theme_recherche = '.';
61
62 ALTER TABLE `chercheurs_publication` ADD COLUMN `auteurs` varchar(255) NOT NULL AFTER id;