db-update-2020-09-08.sql
2.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
-- Ajout d'une nouvelle table projets
use database;
-- On execute TOUT ou RIEN, c'est plus simple
START TRANSACTION;
-- Creation de la table projets
CREATE TABLE projets (
id int(11) PRIMARY KEY NOT NULL AUTO_INCREMENT,
nom varchar(45) NOT NULL UNIQUE,
description text NULL,
groupes_thematique_id int(11) NULL,
chef_science_id int(11) NULL,
chef_projet_id int(11) NULL,
date_start date NULL,
date_stop date NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- Si on voulait plutôt pointer les FK sur users(username) au lieu de users(id) :
-- chef_science_id varchar(45) NULL
-- chef_projet_id varchar(45) NULL
-- Ajout des contraintes d’unicité sur la (les) clé de la table users : nom, mais aussi username (ca serait mieux que nom)
-- Dans tous les cas, cette contrainte d’unicité se justifie, mais elle est aussi NECESSAIRE si on veut que ces champs soient
-- des clés (primaires) de la table users et que des FK puissent pointer dessus
ALTER TABLE users ADD UNIQUE(username);
ALTER TABLE users ADD UNIQUE(nom);
-- Ajout des contraintes FK pour cette table
ALTER TABLE projets
ADD CONSTRAINT fk_projets_groupes_thematique_id FOREIGN KEY(groupes_thematique_id) REFERENCES groupes_thematiques(id) on DELETE set null,
ADD CONSTRAINT fk_projets_chef_science_id FOREIGN KEY(chef_science_id) REFERENCES users(id) on DELETE no ACTION,
ADD CONSTRAINT fk_projets_chef_projet_id FOREIGN KEY(chef_projet_id) REFERENCES users(id) on DELETE no ACTION;
-- TODO: on pourrait aussi utiliser le champ username au lieu de id (modif future ?) :
-- ADD CONSTRAINT fk_projets_chef_science_id FOREIGN KEY(chef_science_id) REFERENCES users(username) on DELETE no ACTION,
-- ADD CONSTRAINT fk_projets_chef_projet_id FOREIGN KEY(chef_projet_id) REFERENCES users(username) on DELETE no ACTION;
-- Ajout dans la table materiels d’une FK vers cette nouvelle table
ALTER TABLE materiels
ADD projet_id INT( 11 ) NULL after groupes_metier_id,
ADD CONSTRAINT fk_materiels_projet_id FOREIGN KEY (projet_id) REFERENCES projets(id) on DELETE set null;
COMMIT;