-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNutritia_Creation.sql
More file actions
349 lines (300 loc) · 9.64 KB
/
Nutritia_Creation.sql
File metadata and controls
349 lines (300 loc) · 9.64 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
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
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
# Création de la base de données Nutritia.
CREATE DATABASE IF NOT EXISTS `420-5A5-A15_Nutritia`
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
USE `420-5A5-A15_Nutritia`;
# Création de la structure des tables de la base de données Nutritia.
DROP TABLE IF EXISTS DonsMembres;
DROP TABLE IF EXISTS AlimentsValeursNutritionnelles;
DROP TABLE IF EXISTS ValeursNutritionnelles;
DROP TABLE IF EXISTS PlatsAliments;
DROP TABLE IF EXISTS Aliments;
DROP TABLE IF EXISTS CategoriesAlimentaires;
DROP TABLE IF EXISTS UnitesMesure;
DROP TABLE IF EXISTS MenusPlats;
DROP TAble if EXISTS SuiviPlats;
DROP TABLE IF EXISTS Plats;
DROP TABLE IF EXISTS TypesPlats;
DROP TABLE IF EXISTS Menus;
DROP TABLE IF EXISTS PreferencesMembres;
DROP TABLE IF EXISTS ObjectifsMembres;
DROP TABLE IF EXISTS RestrictionsAlimentairesMembres;
DROP TABLE IF EXISTS Membres;
DROP TABLE IF EXISTS Preferences;
DROP TABLE IF EXISTS Objectifs;
DROP TABLE IF EXISTS RestrictionsAlimentaires;
DROP TABLE IF EXISTS VersionsLogiciel;
DROP TABLE IF EXISTS Dons;
DROP TABLE IF EXISTS ModesPaiement;
DROP TABLE IF EXISTS Langues;
CREATE TABLE IF NOT EXISTS Langues
( idLangue INT PRIMARY KEY AUTO_INCREMENT
, nom VARCHAR(50) NOT NULL
, IETF VARCHAR(6) NOT NULL
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE Langues
ADD CONSTRAINT Langues_nom_UK
UNIQUE (nom);
ALTER TABLE Langues
ADD CONSTRAINT Langues_IETF_UK
UNIQUE (IETF);
CREATE TABLE IF NOT EXISTS VersionsLogiciel
( idVersionLogiciel INT PRIMARY KEY AUTO_INCREMENT
, version VARCHAR(7) NOT NULL
, changelog VARCHAR(500)
, downloadLink VARCHAR(100) NOT NULL DEFAULT 'https://github.com/Nutritia/nutritia/releases'
, datePublication TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE VersionsLogiciel
ADD CONSTRAINT VersionsLogiciel_version_UK
UNIQUE (version);
ALTER TABLE VersionsLogiciel
ADD CONSTRAINT VersionsLogiciel_datePublication_UK
UNIQUE (datePublication);
CREATE TABLE IF NOT EXISTS RestrictionsAlimentaires
( idRestrictionAlimentaire INT AUTO_INCREMENT
, restrictionAlimentaire VARCHAR(30) NOT NULL UNIQUE
, PRIMARY KEY(idRestrictionAlimentaire)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS Objectifs
( idObjectif INT AUTO_INCREMENT
, objectif VARCHAR(30) NOT NULL UNIQUE
, PRIMARY KEY(idObjectif)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS Preferences
( idPreference INT AUTO_INCREMENT
, preference VARCHAR(30) NOT NULL UNIQUE
, PRIMARY KEY(idPreference)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS Membres
( idMembre INT AUTO_INCREMENT
, idLangue INT NOT NULL
, nom VARCHAR(30) NOT NULL
, prenom VARCHAR(30) NOT NULL
, taille DOUBLE NOT NULL
, masse DOUBLE NOT NULL
, dateNaissance DATE NOT NULL
, nomUtilisateur VARCHAR(15) NOT NULL UNIQUE
, motPasse VARCHAR(15) NOT NULL
, estAdmin BOOL NOT NULL DEFAULT FALSE
, estBanni BOOL NOT NULL DEFAULT FALSE
, derniereMaj TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
, PRIMARY KEY(idMembre)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE Membres
ADD CONSTRAINT Membres_Langues_FK
FOREIGN KEY (idLangue) REFERENCES Langues (idLangue);
CREATE TABLE IF NOT EXISTS RestrictionsAlimentairesMembres
( idRestrictionAlimentaireMembre INT AUTO_INCREMENT
, idRestrictionAlimentaire INT NOT NULL
, idMembre INT NOT NULL
, PRIMARY KEY(idRestrictionAlimentaireMembre)
, FOREIGN KEY(idRestrictionAlimentaire)
REFERENCES RestrictionsAlimentaires(idRestrictionAlimentaire)
, FOREIGN KEY(idMembre)
REFERENCES Membres(idMembre)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS ObjectifsMembres
( idObjectifMembre INT AUTO_INCREMENT
, idObjectif INT NOT NULL
, idMembre INT NOT NULL
, PRIMARY KEY(idObjectifMembre)
, FOREIGN KEY(idObjectif)
REFERENCES Objectifs(idObjectif)
, FOREIGN KEY(idMembre)
REFERENCES Membres(idMembre)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS PreferencesMembres
( idPreferenceMembre INT AUTO_INCREMENT
, idPreference INT NOT NULL
, idMembre INT NOT NULL
, PRIMARY KEY(idPreferenceMembre)
, FOREIGN KEY(idPreference)
REFERENCES Preferences(idPreference)
, FOREIGN KEY(idMembre)
REFERENCES Membres(idMembre)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS Menus
( idMenu INT AUTO_INCREMENT
, idMembre INT NOT NULL
, nom VARCHAR(15) NOT NULL
, nbPersonnes INT NOT NULL
, dateMenu DATETIME NOT NULL
, PRIMARY KEY(idMenu)
, FOREIGN KEY(idMembre)
REFERENCES Membres(idMembre)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE Menus
ADD CONSTRAINT Menus_idMembre_nom_UK
UNIQUE (idMembre, nom);
CREATE TABLE IF NOT EXISTS TypesPlats
( idTypePlat INT AUTO_INCREMENT
, typePlat VARCHAR(15) UNIQUE
, PRIMARY KEY(idTypePlat)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS Plats
( idPlat INT AUTO_INCREMENT
, idMembre INT NOT NULL
, idTypePlat INT NOT NULL
, nom VARCHAR(50) NOT NULL UNIQUE
, description VARCHAR(255) NOT NULL DEFAULT 'Aucune description'
, imageUrl VARCHAR(100)
, note DOUBLE
, nbVotes INT NOT NULL DEFAULT 0
, derniereMaj TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
, PRIMARY KEY(idPlat)
, FOREIGN KEY(idMembre)
REFERENCES Membres(idMembre)
, FOREIGN KEY(idTypePlat)
REFERENCES TypesPlats(idTypePlat)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS SuiviPlats
( idSuiviPlat INT AUTO_INCREMENT
, idMembre INT NOT NULL
, idPlat INT NOT NULL
, estTricherie BOOLEAN NOT NULL
, PRIMARY KEY(idSuiviPlat)
, FOREIGN KEY(idMembre)
REFERENCES Membres(idMembre)
, FOREIGN KEY(idPlat)
REFERENCES Plats(idPlat)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS MenusPlats
( idMenuPlat INT AUTO_INCREMENT
, idMenu INT NOT NULL
, idPlat INT NOT NULL
, PRIMARY KEY(idMenuPlat)
, FOREIGN KEY(idMenu)
REFERENCES Menus(idMenu)
, FOREIGN KEY(idPlat)
REFERENCES Plats(idPlat)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS UnitesMesure
( idUniteMesure INT AUTO_INCREMENT
, uniteMesure VARCHAR(15) NOT NULL UNIQUE
, symbole VARCHAR(3) NOT NULL UNIQUE
, PRIMARY KEY(idUniteMesure)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS CategoriesAlimentaires
( idCategorieAlimentaire INT AUTO_INCREMENT
, categorieAlimentaire VARCHAR(30) NOT NULL UNIQUE
, PRIMARY KEY(idCategorieAlimentaire)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS Aliments
( idAliment INT AUTO_INCREMENT
, idUniteMesure INT NOT NULL
, idCategorieAlimentaire INT NOT NULL
, nom VARCHAR(30) NOT NULL UNIQUE
, mesure INT NOT NULL
, imageUrl VARCHAR(200)
, PRIMARY KEY(idAliment)
, FOREIGN KEY(idUniteMesure)
REFERENCES UnitesMesure(idUniteMesure)
, FOREIGN KEY(idCategorieAlimentaire)
REFERENCES CategoriesAlimentaires(idCategorieAlimentaire)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS PlatsAliments
( idPlatAliment INT AUTO_INCREMENT
, idPlat INT NOT NULL
, idAliment INT NOT NULL
, quantite DOUBLE NOT NULL
, PRIMARY KEY(idPlatAliment)
, FOREIGN KEY(idPlat)
REFERENCES Plats(idPlat)
, FOREIGN KEY(idAliment)
REFERENCES Aliments(idAliment)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS ValeursNutritionnelles
( idValeurNutritionnelle INT AUTO_INCREMENT
, idUniteMesure INT NOT NULL
, valeurNutritionnelle VARCHAR(15) NOT NULL UNIQUE
, PRIMARY KEY(idValeurNutritionnelle)
, FOREIGN KEY(idUniteMesure)
REFERENCES UnitesMesure(idUniteMesure)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS AlimentsValeursNutritionnelles
( idAlimentValeurNutritionnelle INT AUTO_INCREMENT
, idAliment INT NOT NULL
, idValeurNutritionnelle INT NOT NULL
, quantite DOUBLE NOT NULL
, PRIMARY KEY(idAlimentValeurNutritionnelle)
, FOREIGN KEY(idAliment)
REFERENCES Aliments(idAliment)
, FOREIGN KEY(idValeurNutritionnelle)
REFERENCES ValeursNutritionnelles(idValeurNutritionnelle)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
CREATE TABLE IF NOT EXISTS ModesPaiement
( idModePaiement INT PRIMARY KEY AUTO_INCREMENT
, nom VARCHAR(20)
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE ModesPaiement
ADD CONSTRAINT ModesPaiement_nom_UK
UNIQUE (nom);
CREATE TABLE IF NOT EXISTS Dons
( idDon INT PRIMARY KEY AUTO_INCREMENT
, idModePaiement INT NOT NULL
, noTransaction VARCHAR(255) NOT NULL
, nom VARCHAR(50) NOT NULL
, montant FLOAT NOT NULL DEFAULT 0
, dateDon TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE Dons
ADD CONSTRAINT Dons_ModesPaiement_FK
FOREIGN KEY (idModePaiement) REFERENCES ModesPaiement (idModePaiement);
ALTER TABLE Dons
ADD CONSTRAINT Dons_noTransaction_UK
UNIQUE(noTransaction);
CREATE TABLE IF NOT EXISTS DonsMembres
( idDonsMembres INT PRIMARY KEY AUTO_INCREMENT
, idMembre INT NOT NULL
, idDon INT NOT NULL
)
CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ALTER TABLE DonsMembres
ADD CONSTRAINT DonsMembres_Membres
FOREIGN KEY (idMembre) REFERENCES Membres (idMembre);
ALTER TABLE DonsMembres
ADD CONSTRAINT DonsMembres_Dons
FOREIGN KEY (idDon) REFERENCES Dons (idDon);
ALTER TABLE DonsMembres
ADD CONSTRAINT Dons_Membre_Don_UK
UNIQUE (idMembre, idDon);
CREATE OR REPLACE VIEW CurrentVersion AS
SELECT version, datePublication, downloadLink, changeLog
From VersionsLogiciel
ORDER BY version DESC
LIMIT 1;
CREATE OR REPLACE VIEW AllDons AS
SELECT noTransaction, d.nom AS Auteur, montant, dateDon, m.nom AS ModePaiement
FROM Dons d
INNER JOIN ModesPaiement m ON m.idModePaiement = d.idModePaiement;
CREATE OR REPLACE VIEW LastModifiedMember AS
SELECT MAX(derniereMaj) AS derniereMaj
FROM Membres;
CREATE OR REPLACE VIEW LastTimeDon AS
SELECT MAX(dateDon) AS derniereMaj
FROM Dons;
CREATE OR REPLACE VIEW LastModifiedPlat AS
SELECT MAX(derniereMaj) AS derniereMaj
FROM Plats;