-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtables.sql
187 lines (163 loc) · 6.35 KB
/
tables.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
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
/******************************
** File: TABLES.SQL
** Desc: Fichier contenant les tables et les contraintes en SQL.
** Auth: AZZOUG Aghilas
** Date: 10/2020
*******************************/
-- Création de table "utlisateurs". Table qui permet à garder les utilisateurs
-- et ses données. Présence de newsletter ; pour determiner si un user accepte de recevoir
-- des notifications ou pas (news)
CREATE TABLE utilisateurs
(
id_utilisateur NUMBER NOT NULL,
login VARCHAR2(60) NOT NULL,
motdepass VARCHAR2(60) NOT NULL,
nom VARCHAR2(20),
prenom VARCHAR2(20),
email VARCHAR2(50) NOT NULL,
dateNaissance DATE,
newsletter CHAR(1) DEFAULT '0',
nombreDeVideoAimee NUMBER NOT NULL,
nationalite VARCHAR(30)
);
-- Création de table "types". Table qui permet à garder les types/catégories des
-- émssions.
CREATE TABLE types
(
id_type NUMBER NOT NULL,
nom_type VARCHAR2(30)
);
-- Création de table "emission". Table qui permet de connaitre des information sur le contenu
-- des émssions et catehorie ...
create table emission(
id_emission integer not null,
nom_emission varchar(60) not null,
id_type NUMBER NOT NULL
);
-- Création de table "video". Table qui permet de voir les information sur
-- la video.
CREATE TABLE video
(
id_video NUMBER NOT NULL,
id_emission integer not null,
titre VARCHAR2(100),
description_video VARCHAR2(500),
multilangue CHAR(1) DEFAULT '0',
localisation VARCHAR2(250),
date_p_duffision DATE NOT NULL,
duree NUMBER NOT NULL,
format_image VARCHAR(10) NOT NULL
);
-- Mise en place la table videoArchives
-- vu la nécessité de vouloir récuperer les videos vues
-- qui furent supprimés dans replay
CREATE TABLE historique
( id_historique NUMBER NOT NULL,
id_video NUMBER NOT NULL,
nom_video VARCHAR2(100),
id_utilisateur NUMBER NOT NULL,
date_visionnage DATE NOT NULL
);
-- Mise en place la table Favoris pour pouvoir
-- avoir une listes des videos likées (aimées)
-- elle sera liée à la page associée au user
CREATE TABLE favoris
(
id_utilisateur NUMBER NOT NULL,
id_video NUMBER NOT NULL,
PRIMARY KEY(id_utilisateur,id_video)
);
-- Mise en place la table preference pour
-- que le user puisse indiquer ses preferences de categories(types)
CREATE TABLE preferences
(
id_utilisateur NUMBER NOT NULL,
id_type NUMBER NOT NULL,
PRIMARY KEY(id_utilisateur,id_type)
);
-- Création de table "follow". Table qui permet de voir les utilisateurs
-- abonnés à cette emission
CREATE TABLE follow
(
id_utilisateur NUMBER NOT NULL,
id_emission NUMBER NOT NULL
);
-- cette table servira pour la partie 2
-- Création de table "videoArchivee
-- elle permet de faire le transfère des videos supprimées
-- pour enfin de les récupérer, seront en dehors du replay
CREATE TABLE videoArchivee
(
id_video NUMBER NOT NULL,
id_emission integer not null,
titre VARCHAR2(100),
description_video VARCHAR2(500),
multilangue CHAR(1) DEFAULT '0',
localisation VARCHAR2(250),
date_p_duffision DATE NOT NULL,
duree NUMBER NOT NULL,
format_image VARCHAR(10) NOT NULL
);
/*----------------------------------------------------------------------------
CONTRAINTES
-----------------------------------------------------------------------------*/
/*user*/
ALTER TABLE utilisateurs
ADD CONSTRAINT utilisateurs_pk PRIMARY KEY (id_utilisateur);
ALTER TABLE utilisateurs
ADD CONSTRAINT utilisateurs_u UNIQUE (login);
ALTER TABLE utilisateurs
ADD CONSTRAINT EMAIL_U UNIQUE (email);
ALTER TABLE utilisateurs
ADD CONSTRAINT CK_EMAIL CHECK (email LIKE '%_@_%');
ALTER TABLE utilisateurs
ADD CONSTRAINT CK_nombreDeVideoAimee CHECK((nombreDeVideoAimee >= 0) AND (nombreDeVideoAimee < 301));
/*emission*/
ALTER TABLE emission
ADD CONSTRAINT emission_pk PRIMARY KEY (id_emission);
/*cette contrainte réferencie la colonne idtype dans la table emissions*/
ALTER TABLE emission
ADD CONSTRAINT emission_nom_emission_u UNIQUE (nom_emission);
ALTER TABLE emission
ADD CONSTRAINT fk_emission_types FOREIGN KEY (id_type) REFERENCES types ON DELETE CASCADE;
/*######ALTER TABLE emission ADD CONSTRAINT emission_ck CHECK (allowSimult BETWEEN 0 AND 1);*/
/*Types*/
ALTER TABLE types
ADD CONSTRAINT type_pk PRIMARY KEY (id_type);
/*video*/
ALTER TABLE video
ADD CONSTRAINT video_pk PRIMARY KEY (id_video);
ALTER TABLE video
ADD CONSTRAINT video_titre_u UNIQUE(titre);
ALTER TABLE video
ADD CONSTRAINT fk_video_emission FOREIGN KEY (id_emission) REFERENCES emission ON DELETE CASCADE;
/*historique*/
ALTER TABLE historique
ADD CONSTRAINT historique_pk PRIMARY KEY (id_historique);
ALTER TABLE historique
ADD CONSTRAINT fk_historique_video FOREIGN KEY (id_video) REFERENCES video;
ALTER TABLE historique
ADD CONSTRAINT fk_historique_utilisateur FOREIGN KEY (id_utilisateur) REFERENCES utilisateurs;
/*favoris*/
ALTER TABLE favoris
ADD CONSTRAINT fk_favoris_utilisateurs FOREIGN KEY (id_utilisateur) REFERENCES utilisateurs;
ALTER TABLE favoris
ADD CONSTRAINT fk_favoris_video FOREIGN KEY (id_video) REFERENCES video;
/*preferences*/
ALTER TABLE preferences
ADD CONSTRAINT fk_utilisateurs_types_u FOREIGN KEY (id_utilisateur) REFERENCES utilisateurs;
ALTER TABLE preferences
ADD CONSTRAINT fk_utilisateurs_types FOREIGN KEY (id_type) REFERENCES types;
/*follow*/
ALTER TABLE follow
ADD CONSTRAINT utilisateurs_follow_pk PRIMARY KEY (id_utilisateur, id_emission);
CREATE SEQUENCE seq_utilisateurs start with 1 increment by 1;
CREATE SEQUENCE seq_emission start with 1 increment by 1;
CREATE SEQUENCE seq_types start with 1 increment by 1;
CREATE SEQUENCE seq_video start with 1 increment by 1;
CREATE SEQUENCE seq_historique start with 1 increment by 1;
/* 0o_______o0__________________0o_________________o0___________________0_o__________________
comme pas demandé, j'en ai fait que de sexmples, mais aps sur tout
~~~la comparaison date de creation de chaine doit etre inferieur a celle creation de video
~~~date de historique superieur de creation de video
~~~unicité dans les id */