-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathscript.sql
162 lines (145 loc) · 4.71 KB
/
script.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
CREATE TABLE Client(
id_client SERIAL,
nomClient VARCHAR(255) NOT NULL,
telClient INTEGER NOT NULL,
PRIMARY KEY(id_client)
);
CREATE TABLE Personne(
id_personne SERIAL,
nom VARCHAR(255) NOT NULL,
prenom VARCHAR(50) NOT NULL,
mail VARCHAR(255) NOT NULL,
motDePasse VARCHAR(255) NOT NULL,
telephone INTEGER NOT NULL,
PRIMARY KEY(id_personne)
);
CREATE TABLE TypeVoie(
id SERIAL,
libelle VARCHAR(255) NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE Localite(
idLocalite SERIAL,
cp INTEGER NOT NULL,
ville VARCHAR(255) NOT NULL,
PRIMARY KEY(idLocalite)
);
CREATE TABLE TYPE(
idType SERIAL,
libelle VARCHAR(255) NOT NULL,
PRIMARY KEY(idType)
);
CREATE TABLE COMMERCIAL(
id_personne INTEGER,
PRIMARY KEY(id_personne),
FOREIGN KEY(id_personne) REFERENCES Personne(id_personne)
);
CREATE TABLE INTERLOCUTEUR(
id_personne INTEGER,
PRIMARY KEY(id_personne),
FOREIGN KEY(id_personne) REFERENCES Personne(id_personne)
);
CREATE TABLE GESTIONNAIRE(
id_personne INTEGER,
PRIMARY KEY(id_personne),
FOREIGN KEY(id_personne) REFERENCES Personne(id_personne)
);
CREATE TABLE PRESTATAIRE(
id_personne INTEGER,
PRIMARY KEY(id_personne),
FOREIGN KEY(id_personne) REFERENCES Personne(id_personne)
);
CREATE TABLE Adresse(
id_adresse SERIAL,
numero INTEGER NOT NULL,
nomVoie VARCHAR(255) NOT NULL,
idLocalite INTEGER NOT NULL,
id INTEGER NOT NULL,
PRIMARY KEY(id_adresse),
FOREIGN KEY(idLocalite) REFERENCES Localite(idLocalite),
FOREIGN KEY(id) REFERENCES TypeVoie(id)
);
CREATE TABLE Composante(
id_composante SERIAL,
nomComposante VARCHAR(255) NOT NULL,
id_adresse INTEGER NOT NULL,
id_client INTEGER NOT NULL,
PRIMARY KEY(id_composante),
FOREIGN KEY(id_adresse) REFERENCES Adresse(id_adresse),
FOREIGN KEY(id_client) REFERENCES Client(id_client)
);
CREATE TABLE BDL(
id_composante INTEGER,
id_personne_1 INTEGER,
annee INTEGER,
mois VARCHAR(255) ,
signatureInterlocuteur VARCHAR(255) NOT NULL,
signaturePrestataire VARCHAR(255) NOT NULL,
commentaire VARCHAR(255) NOT NULL,
id_personne INTEGER,
id_personne_2 INTEGER NOT NULL,
PRIMARY KEY(id_composante, id_personne_1, annee, mois),
FOREIGN KEY(id_composante) REFERENCES Composante(id_composante),
FOREIGN KEY(id_personne_1) REFERENCES PRESTATAIRE(id_personne),
FOREIGN KEY(id_personne) REFERENCES GESTIONNAIRE(id_personne),
FOREIGN KEY(id_personne_2) REFERENCES INTERLOCUTEUR(id_personne)
);
CREATE TABLE Periode(
id_composante INTEGER,
id_personne INTEGER,
annee INTEGER,
mois VARCHAR(255) ,
jourDuMois INTEGER,
PRIMARY KEY(id_composante, id_personne, annee, mois, jourDuMois),
FOREIGN KEY(id_composante, id_personne, annee, mois) REFERENCES BDL(id_composante, id_personne_1, annee, mois)
);
CREATE TABLE Journee(
id_composante INTEGER,
id_personne INTEGER,
annee INTEGER,
mois VARCHAR(255) ,
jourDuMois INTEGER,
PRIMARY KEY(id_composante, id_personne, annee, mois, jourDuMois),
FOREIGN KEY(id_composante, id_personne, annee, mois, jourDuMois) REFERENCES Periode(id_composante, id_personne, annee, mois, jourDuMois)
);
CREATE TABLE DEMIJOURNEE(
idType_1 INTEGER,
idType SERIAL,
matin BOOLEAN NOT NULL,
id_composante INTEGER NOT NULL,
id_personne INTEGER NOT NULL,
annee INTEGER NOT NULL,
mois VARCHAR(255) NOT NULL,
jourDuMois INTEGER NOT NULL,
PRIMARY KEY(idType_1, idType),
UNIQUE(jourDuMois),
FOREIGN KEY(idType_1) REFERENCES TYPE(idType),
FOREIGN KEY(id_composante, id_personne, annee, mois, jourDuMois) REFERENCES Periode(id_composante, id_personne, annee, mois, jourDuMois)
);
CREATE TABLE CRENEAU(
Numero SERIAL,
heure_arrivee TIME NOT NULL,
heure_depart TIME NOT NULL,
id_composante INTEGER NOT NULL,
id_personne INTEGER NOT NULL,
annee INTEGER NOT NULL,
mois VARCHAR(255) NOT NULL,
jourDuMois INTEGER NOT NULL,
PRIMARY KEY(Numero),
UNIQUE(jourDuMois),
FOREIGN KEY(id_composante, id_personne, annee, mois, jourDuMois) REFERENCES Periode(id_composante, id_personne, annee, mois, jourDuMois)
);
CREATE TABLE AFFECTE(
id_composante INTEGER,
id_personne INTEGER,
PRIMARY KEY(id_composante, id_personne),
FOREIGN KEY(id_composante) REFERENCES Composante(id_composante),
FOREIGN KEY(id_personne) REFERENCES COMMERCIAL(id_personne)
);
CREATE TABLE REPRESENTE(
id_composante INTEGER,
id_personne INTEGER,
PRIMARY KEY(id_composante, id_personne),
FOREIGN KEY(id_composante) REFERENCES Composante(id_composante),
FOREIGN KEY(id_personne) REFERENCES INTERLOCUTEUR(id_personne)
);