-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreer-sql.sql
77 lines (70 loc) · 2.63 KB
/
creer-sql.sql
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/* PERSONNE */
DROP TABLE IF EXISTS Personne CASCADE;
CREATE TABLE Personne (
nom VARCHAR(255) NOT NULL,
dateNaissance DATE NOT NULL,
lieuNaissance VARCHAR(255),
sexe INTEGER NOT NULL CHECK(sexe = 0 OR sexe = 1),
CONSTRAINT personnePK PRIMARY KEY (nom)
);
/* FILM */
DROP TABLE IF EXISTS Film CASCADE;
CREATE TABLE Film (
titre VARCHAR(255) NOT NULL,
dateSortie DATE NOT NULL,
description VARCHAR(255),
duree INTEGER,
realisateur VARCHAR(255) NOT NULL,
CONSTRAINT filmPK PRIMARY KEY (titre, dateSortie),
CONSTRAINT filmFK FOREIGN KEY (realisateur) REFERENCES Personne(nom)
);
/* ROLE_FILM */
DROP TABLE IF EXISTS RoleFilm CASCADE;
CREATE TABLE RoleFilm (
nomActeur VARCHAR(255) NOT NULL,
roleActeur VARCHAR(255) NOT NULL,
filmTitre VARCHAR(255) NOT NULL,
anneeSortie DATE NOT NULL,
CONSTRAINT roleFilmPK PRIMARY KEY (nomActeur, filmTitre, anneeSortie),
CONSTRAINT roleFilmTitreFK FOREIGN KEY (filmTitre, anneeSortie) REFERENCES Film(titre, dateSortie),
CONSTRAINT roleFilmActeurFK FOREIGN KEY (nomActeur) REFERENCES Personne(nom)
);
/* SERIE */
DROP TABLE IF EXISTS Serie CASCADE;
CREATE TABLE Serie (
titre VARCHAR(255) NOT NULL,
anneeSortie DATE NOT NULL,
realisateur VARCHAR(255) NOT NULL,
description VARCHAR(255),
nbSaison INTEGER NOT NULL,
CONSTRAINT seriePK PRIMARY KEY (titre, anneeSortie),
CONSTRAINT serieFK FOREIGN KEY (realisateur) REFERENCES Personne(nom)
);
/* EPISODE */
DROP TABLE IF EXISTS Episode CASCADE;
CREATE TABLE Episode (
titre VARCHAR(255) NOT NULL,
titreSerie VARCHAR(255) NOT NULL,
anneeSortieSerie DATE NOT NULL,
noSaison INTEGER NOT NULL,
noEpisode INTEGER NOT NULL,
description VARCHAR(255),
dateDiffusion DATE NOT NULL,
CONSTRAINT episodePK PRIMARY KEY (titreSerie, anneeSortieSerie, noSaison, noEpisode),
CONSTRAINT episodeFK FOREIGN KEY (titreSerie, anneeSortieSerie) REFERENCES Serie(titre, anneeSortie),
CONSTRAINT noSaisonCHK CHECK(noSaison > 0),
CONSTRAINT noEpisodeCHK CHECK (noEpisode > 0)
);
/* ROLE_EPISODE */
DROP TABLE IF EXISTS RoleEpisode CASCADE;
CREATE TABLE RoleEpisode(
nomActeur VARCHAR(255) NOT NULL,
roleActeur VARCHAR(255) NOT NULL,
titreSerie VARCHAR(255) NOT NULL,
noSaison INTEGER NOT NULL,
noEpisode INTEGER NOT NULL,
anneeSortieSerie DATE NOT NULL,
CONSTRAINT roleEpisodePK PRIMARY KEY (nomActeur, titreSerie, anneeSortieSerie, noSaison, noEpisode),
CONSTRAINT roleEpisodeFK1 FOREIGN KEY (nomActeur) REFERENCES Personne(nom),
CONSTRAINT roleEpisodeFK2 FOREIGN KEY (titreSerie, noSaison, noEpisode, anneeSortieSerie) REFERENCES Episode(titreSerie, noSaison, noEpisode, anneeSortieSerie)
);