-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCrearBD.sql
More file actions
428 lines (371 loc) · 15.4 KB
/
CrearBD.sql
File metadata and controls
428 lines (371 loc) · 15.4 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
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
-- ORACLE SQL DATABASE CREATION SCRIPT
--------------------- CREAR TABLAS INDEPENDIENTES ---------------------
-- CREAR TABLA DE pais
CREATE TABLE pais(
IdPais CHAR(2) NOT NULL,
nombre VARCHAR2(40) NOT NULL,
CONSTRAINT PK_pais PRIMARY KEY (IdPais)
);
COMMENT ON COLUMN pais.IdPais IS
'Segun ISO 3166-1. Ejemplo ''CR'' para Costa Rica, ''US'' para Estados Unidos, ''DE'' para Alemania';
COMMENT ON COLUMN pais.nombre IS
'Nombre del pais';
-- CREAR TABLA DE IDIOMAS
CREATE TABLE idioma(
IdIdioma CHAR(2) NOT NULL,
nombre VARCHAR2(25) NOT NULL,
CONSTRAINT PK_idioma PRIMARY KEY (IdIdioma)
);
COMMENT ON COLUMN idioma.IdIdioma IS
'Segun ISO 639-1. Ejemplo ''es'' para español, ''en'' para ingles, ''fr'' para frances';
COMMENT ON COLUMN idioma.nombre IS
'Español, Ingles, frances';
-- CREAR TABLA DE GENEROS
CREATE TABLE genero(
IdGenero NUMBER NOT NULL,
nombre VARCHAR2(25) NOT NULL,
CONSTRAINT PK_genero PRIMARY KEY (IdGenero)
);
COMMENT ON COLUMN genero.nombre IS
'Nombre del genero del video';
-- CREAR TABLA DE SAGAS
CREATE TABLE saga(
IdSaga NUMBER NOT NULL,
tituloGeneral VARCHAR2(60) NOT NULL,
abstract VARCHAR2(700) NOT NULL,
añoInicio NUMBER(4) NOT NULL,
materialOriginal VARCHAR2(60) NOT NULL,
CONSTRAINT PK_saga PRIMARY KEY (IdSaga)
);
COMMENT ON COLUMN saga.materialoriginal IS
'basada en (Novela, Cuento, Comic, Estudio, Biografia, Reportaje)';
-- CREAR TABLA DE MACROSERIES
CREATE TABLE macroserie(
IdMacroserie NUMBER NOT NULL,
tituloGeneral VARCHAR2(60) NOT NULL,
abstract VARCHAR2(700) NOT NULL,
añoInicio NUMBER(4) NOT NULL,
materialOriginal VARCHAR2(60) NOT NULL,
CONSTRAINT PK_macroserie PRIMARY KEY (IdMacroserie)
);
COMMENT ON COLUMN macroserie.materialoriginal IS
'basada en (Novela, Cuento, Comic, Estudio, Biografia, Reportaje)';
-- CREAR TABLA DE DOCUSERIES
CREATE TABLE docuserie(
IdDocuserie NUMBER NOT NULL,
tituloGeneral VARCHAR2(60) NOT NULL,
abstract VARCHAR2(700) NOT NULL,
añoInicio NUMBER(4) NOT NULL,
materialOriginal VARCHAR2(60) NOT NULL,
CONSTRAINT PK_docuserie PRIMARY KEY (IdDocuserie)
);
COMMENT ON COLUMN docuserie.materialoriginal IS
'basada en (Novela, Cuento, Comic, Estudio, Biografia, Reportaje)';
--------------------- CREAR TABLAS DEPENDIENTES 1 ---------------------
-- CREAR TABLA DE ARTISTAS
CREATE TABLE artista(
IdArtista NUMBER NOT NULL,
IdPais CHAR(2) NOT NULL,
nombre VARCHAR2(25) NOT NULL,
apellido VARCHAR2(25) NOT NULL,
fechanacimiento DATE NOT NULL,
sexo CHAR(1) NOT NULL,
CONSTRAINT PK_artista PRIMARY KEY (IdArtista),
CONSTRAINT FK_artista_pais FOREIGN KEY (IdPais) REFERENCES pais(IdPais)
);
COMMENT ON COLUMN artista.nombre IS
'Contempla primer y segundo nombre';
COMMENT ON COLUMN artista.apellido IS
'Contempla primer y segundo apellido';
COMMENT ON COLUMN artista.fechanacimiento IS
'Ejemplo ''24/08/83'' (''DD/MM/YY'')';
COMMENT ON COLUMN artista.sexo IS
'Masculino = ''M'', Femenino =''F''';
-- CREAR TABLA DE CLIENTES
CREATE TABLE cliente(
IdCliente NUMBER NOT NULL,
IdPais CHAR(2) NOT NULL,
nombre VARCHAR2(25) NOT NULL,
apellido VARCHAR2(25) NOT NULL,
correo VARCHAR2(50) NOT NULL,
contraseña VARCHAR2(25) NOT NULL,
telefono VARCHAR2(50) NOT NULL,
fechanacimiento DATE NOT NULL,
fecharegistro DATE NOT NULL,
sexo CHAR(1) NOT NULL,
direccion VARCHAR2(100) NOT NULL,
tipocuenta VARCHAR2(15) NOT NULL,
CONSTRAINT PK_cliente PRIMARY KEY (IdCliente),
CONSTRAINT FK_cliente_pais FOREIGN KEY (IdPais) REFERENCES pais(IdPais)
);
COMMENT ON COLUMN cliente.idcliente IS
'Identificacion nacional';
COMMENT ON COLUMN cliente.nombre IS
'Contempla primer y segundo nombre';
COMMENT ON COLUMN cliente.apellido IS
'Contempla primer y segundo apellido';
COMMENT ON COLUMN cliente.correo IS
'Ejemplo: ''jhidalgou@ucenfotec.ac.cr''';
COMMENT ON COLUMN cliente.contraseña IS
'Contraseña del cliente';
COMMENT ON COLUMN cliente.telefono IS
'Ejemplo: 87233016';
COMMENT ON COLUMN cliente.fechanacimiento IS
'Ejemplo ''24/08/83'' (''DD/MM/YY'')';
COMMENT ON COLUMN cliente.fecharegistro IS
'Fecha en la que se registro en la aplicacion';
COMMENT ON COLUMN cliente.sexo IS
'Masculino = ''M'', Femenino =''F''';
COMMENT ON COLUMN cliente.direccion IS
'Direccion exacta';
COMMENT ON COLUMN cliente.tipocuenta IS
'Tipo de cuenta que posee el cliente. Ejemplo: ''Gratuita'', ''Premium'', ''Familiar'', ''VIP''';
-- CREAR TABLA DE PELICULAS
CREATE TABLE pelicula(
IdPelicula NUMBER NOT NULL,
IdPais CHAR(2) NOT NULL,
IdSaga NUMBER,
titulo VARCHAR2(60) NOT NULL,
abstract VARCHAR2(700) NOT NULL,
añoestreno NUMBER(4) NOT NULL,
estudio VARCHAR2(25) NOT NULL,
clasificacion VARCHAR2(5) NOT NULL,
duracion NUMBER(3) NOT NULL,
audioDescription NUMBER(1) NOT NULL,
CONSTRAINT PK_pelicula PRIMARY KEY (IdPelicula),
CONSTRAINT FK_pelicula_pais FOREIGN KEY (IdPais) REFERENCES pais(IdPais),
CONSTRAINT FK_pelicula_saga FOREIGN KEY (IdSaga) REFERENCES saga(IdSaga)
);
COMMENT ON COLUMN pelicula.añoestreno IS
'Ejemplo: 2018';
COMMENT ON COLUMN pelicula.clasificacion IS
'Ejemplos: TP12+, PG';
COMMENT ON COLUMN pelicula.duracion IS
'Duración en minutos. Ejemplo 120 min';
-- CREAR TABLA DE DOCUMENTALES
CREATE TABLE documental(
IdDocumental NUMBER NOT NULL,
IdPais CHAR(2) NOT NULL,
IdDocuserie NUMBER,
titulo VARCHAR2(60) NOT NULL,
abstract VARCHAR2(700) NOT NULL,
añoestreno NUMBER(4) NOT NULL,
temporadas NUMBER(3) NOT NULL,
clasificacion VARCHAR2(5) NOT NULL,
audioDescription NUMBER(1) NOT NULL,
CONSTRAINT PK_documental PRIMARY KEY (IdDocumental),
CONSTRAINT FK_documental_pais FOREIGN KEY (IdPais) REFERENCES pais(IdPais),
CONSTRAINT FK_documental_docuserie FOREIGN KEY (IdDocuserie) REFERENCES docuserie(IdDocuserie)
);
COMMENT ON COLUMN documental.añoestreno IS
'Ejemplo: 2018';
COMMENT ON COLUMN documental.clasificacion IS
'Ejemplos: TP12+, PG';
-- CREAR TABLA DE SERIES
CREATE TABLE serie(
IdSerie NUMBER NOT NULL,
IdPais CHAR(2) NOT NULL,
IdMacroserie NUMBER,
titulo VARCHAR2(60) NOT NULL,
abstract VARCHAR2(700) NOT NULL,
añoestreno NUMBER(4) NOT NULL,
temporadas NUMBER(3) NOT NULL,
clasificacion VARCHAR2(5) NOT NULL,
audioDescription NUMBER(1) NOT NULL,
CONSTRAINT PK_serie PRIMARY KEY (IdSerie),
CONSTRAINT FK_serie_pais FOREIGN KEY (IdPais) REFERENCES pais(IdPais),
CONSTRAINT FK_serie_macroserie FOREIGN KEY (IdMacroserie) REFERENCES macroserie(IdMacroserie)
);
COMMENT ON COLUMN serie.añoestreno IS
'Ejemplo: 2018';
COMMENT ON COLUMN serie.clasificacion IS
'Ejemplos: TP12+, PG';
--------------------- CREAR TABLAS DEPENDIENTES 2 ---------------------
-- CREAR TABLA DE REPRODUCCIONES DE PELICULAS
CREATE TABLE reproduccionpelicula(
IdReproduccion NUMBER NOT NULL,
IdCliente NUMBER NOT NULL,
IdPelicula NUMBER NOT NULL,
fechaInicio DATE NOT NULL,
estado VARCHAR2(10) NOT NULL,
ultimaPosicion NUMBER(3) NOT NULL,
CONSTRAINT PK_reproduccion_pelicula PRIMARY KEY (IdReproduccion),
CONSTRAINT FK_reproduccion_pelicula_pelicula FOREIGN KEY (IdPelicula) REFERENCES pelicula(IdPelicula),
CONSTRAINT FK_reproduccion_pelicula_cliente FOREIGN KEY (IdCliente) REFERENCES cliente(IdCliente)
);
COMMENT ON COLUMN reproduccionpelicula.estado IS
'Ejemplo: Pausado, Terminado';
COMMENT ON COLUMN reproduccionpelicula.ultimaPosicion IS
'Medido en minutos. Ejemplo: 120';
-- CREAR TABLA DE REPRODUCCIONES DE DOCUMENTALES
CREATE TABLE reproducciondocumental(
IdReproduccion NUMBER NOT NULL,
IdCliente NUMBER NOT NULL,
IdDocumental NUMBER NOT NULL,
fechaInicio DATE NOT NULL,
estado VARCHAR2(10) NOT NULL,
ultimaPosicion NUMBER(3) NOT NULL,
CONSTRAINT PK_reproduccion_documental PRIMARY KEY (IdReproduccion),
CONSTRAINT FK_reproduccion_documental_documental FOREIGN KEY (IdDocumental) REFERENCES documental(IdDocumental),
CONSTRAINT FK_reproduccion_documental_cliente FOREIGN KEY (IdCliente) REFERENCES cliente(IdCliente)
);
COMMENT ON COLUMN reproducciondocumental.estado IS
'Ejemplo: Pausado, Terminado';
COMMENT ON COLUMN reproducciondocumental.ultimaPosicion IS
'Medido en minutos. Ejemplo: 16';
-- CREAR TABLA DE REPRODUCCIONES DE SERIES
CREATE TABLE reproduccionserie(
IdReproduccion NUMBER NOT NULL,
IdCliente NUMBER NOT NULL,
IdSerie NUMBER NOT NULL,
fechaInicio DATE NOT NULL,
estado VARCHAR2(10) NOT NULL,
ultimaPosicion NUMBER(3) NOT NULL,
CONSTRAINT PK_reproduccion_serie PRIMARY KEY (IdReproduccion),
CONSTRAINT FK_reproduccion_serie_serie FOREIGN KEY (IdSerie) REFERENCES serie(IdSerie),
CONSTRAINT FK_reproduccion_serie_cliente FOREIGN KEY (IdCliente) REFERENCES cliente(IdCliente)
);
COMMENT ON COLUMN reproduccionserie.estado IS
'Ejemplo: Pausado, Terminado';
COMMENT ON COLUMN reproduccionserie.ultimaPosicion IS
'Medido en minutos. Ejemplo: 16';
-- CREAR TABLA DE DESCARGAS DE PELICULAS
CREATE TABLE descargapelicula(
IdDescarga NUMBER NOT NULL,
IdCliente NUMBER NOT NULL,
IdPelicula NUMBER NOT NULL,
fechaDescarga DATE NOT NULL,
estado VARCHAR2(15) NOT NULL,
tamaño NUMBER NOT NULL,
CONSTRAINT PK_descarga_pelicula PRIMARY KEY (IdDescarga),
CONSTRAINT FK_descarga_pelicula_pelicula FOREIGN KEY (IdPelicula) REFERENCES pelicula(IdPelicula),
CONSTRAINT FK_descarga_pelicula_cliente FOREIGN KEY (IdCliente) REFERENCES cliente(IdCliente)
);
COMMENT ON COLUMN descargapelicula.estado IS
'Ejemplo: Descargando, pausado y finalizado';
COMMENT ON COLUMN descargapelicula.tamaño IS
'Medido en Megabytes';
-- CREAR TABLA DE DESCARGAS DE DOCUMENTALES
CREATE TABLE descargadocumental(
IdDescarga NUMBER NOT NULL,
IdCliente NUMBER NOT NULL,
IdDocumental NUMBER NOT NULL,
fechaDescarga DATE NOT NULL,
estado VARCHAR2(15) NOT NULL,
tamaño NUMBER NOT NULL,
CONSTRAINT PK_descarga_documental PRIMARY KEY (IdDescarga),
CONSTRAINT FK_descarga_documental_documental FOREIGN KEY (IdDocumental) REFERENCES documental(IdDocumental),
CONSTRAINT FK_descarga_documental_cliente FOREIGN KEY (IdCliente) REFERENCES cliente(IdCliente)
);
COMMENT ON COLUMN descargadocumental.estado IS
'Ejemplo: Descargando, pausado y finalizado';
COMMENT ON COLUMN descargadocumental.tamaño IS
'Medido en Megabytes';
-- CREAR TABLA DE DESCARGAS DE SERIES
CREATE TABLE descargaserie(
IdDescarga NUMBER NOT NULL,
IdCliente NUMBER NOT NULL,
IdSerie NUMBER NOT NULL,
fechaDescarga DATE NOT NULL,
estado VARCHAR2(15) NOT NULL,
tamaño NUMBER NOT NULL,
CONSTRAINT PK_descarga_serie PRIMARY KEY (IdDescarga),
CONSTRAINT FK_descarga_serie_serie FOREIGN KEY (IdSerie) REFERENCES serie(IdSerie),
CONSTRAINT FK_descarga_serie_cliente FOREIGN KEY (IdCliente) REFERENCES cliente(IdCliente)
);
COMMENT ON COLUMN descargaserie.estado IS
'Ejemplo: Descargando, pausado y finalizado';
COMMENT ON COLUMN descargaserie.tamaño IS
'Medido en Megabytes';
--------------------- CREAR TABLAS DE RELACIONES M-N ---------------------
-- CREAR TABLA DE RELACION DE GENEROS Y PELICULAS
CREATE TABLE genero_pelicula(
IdGenero NUMBER NOT NULL,
IdPelicula NUMBER NOT NULL,
CONSTRAINT PK_genero_pelicula PRIMARY KEY (IdGenero, IdPelicula),
CONSTRAINT FK_genero_pelicula_genero FOREIGN KEY (IdGenero) REFERENCES genero(IdGenero),
CONSTRAINT FK_genero_pelicula_pelicula FOREIGN KEY (IdPelicula) REFERENCES pelicula(IdPelicula)
);
-- CREAR TABLA DE RELACION DE GENEROS Y DOCUMENTALES
CREATE TABLE genero_documental(
IdGenero NUMBER NOT NULL,
IdDocumental NUMBER NOT NULL,
CONSTRAINT PK_genero_documental PRIMARY KEY (IdGenero, IdDocumental),
CONSTRAINT FK_genero_documental_genero FOREIGN KEY (IdGenero) REFERENCES genero(IdGenero),
CONSTRAINT FK_genero_documental_documental FOREIGN KEY (IdDocumental) REFERENCES documental(IdDocumental)
);
-- CREAR TABLA DE RELACION DE GENEROS Y SERIES
CREATE TABLE genero_serie(
IdGenero NUMBER NOT NULL,
IdSerie NUMBER NOT NULL,
CONSTRAINT PK_genero_serie PRIMARY KEY (IdGenero, IdSerie),
CONSTRAINT FK_genero_serie_genero FOREIGN KEY (IdGenero) REFERENCES genero(IdGenero),
CONSTRAINT FK_genero_serie_serie FOREIGN KEY (IdSerie) REFERENCES serie(IdSerie)
);
-- CREAR TABLA DE RELACION DE ARTISTAS Y PELICULAS (REPARTO)
CREATE TABLE repartopelicula(
IdArtista NUMBER NOT NULL,
IdPelicula NUMBER NOT NULL,
rol VARCHAR2(25) NOT NULL,
CONSTRAINT PK_reparto_pelicula PRIMARY KEY (IdArtista, IdPelicula, rol),
CONSTRAINT FK_reparto_pelicula_artista FOREIGN KEY (IdArtista) REFERENCES artista(IdArtista),
CONSTRAINT FK_reparto_pelicula_pelicula FOREIGN KEY (IdPelicula) REFERENCES pelicula(IdPelicula)
);
COMMENT ON COLUMN repartopelicula.rol IS
'Ejemplo: narrador, actor, director, productor';
-- CREAR TABLA DE RELACION DE ARTISTAS Y DOCUMENTALES (REPARTO)
CREATE TABLE repartodocumental(
IdArtista NUMBER NOT NULL,
IdDocumental NUMBER NOT NULL,
rol VARCHAR2(25) NOT NULL,
CONSTRAINT PK_reparto_documental PRIMARY KEY (IdArtista, IdDocumental, rol),
CONSTRAINT FK_reparto_documental_artista FOREIGN KEY (IdArtista) REFERENCES artista(IdArtista),
CONSTRAINT FK_reparto_documental_documental FOREIGN KEY (IdDocumental) REFERENCES documental(IdDocumental)
);
COMMENT ON COLUMN repartodocumental.rol IS
'Ejemplo: narrador, actor, director, productor';
-- CREAR TABLA DE RELACION DE ARTISTAS Y SERIES (REPARTO)
CREATE TABLE repartoserie(
IdArtista NUMBER NOT NULL,
IdSerie NUMBER NOT NULL,
rol VARCHAR2(25) NOT NULL,
CONSTRAINT PK_reparto_serie PRIMARY KEY (IdArtista, IdSerie, rol),
CONSTRAINT FK_reparto_serie_artista FOREIGN KEY (IdArtista) REFERENCES artista(IdArtista),
CONSTRAINT FK_reparto_serie_serie FOREIGN KEY (IdSerie) REFERENCES serie(IdSerie)
);
COMMENT ON COLUMN repartoserie.rol IS
'Ejemplo: narrador, actor, director, productor';
-- CREAR TABLA DE RELACION DE IDIOMAS Y PELICULAS
CREATE TABLE idioma_pelicula(
IdIdioma CHAR(2) NOT NULL,
IdPelicula NUMBER NOT NULL,
tipo VARCHAR2(25) NOT NULL,
CONSTRAINT PK_idioma_pelicula PRIMARY KEY (IdIdioma, IdPelicula, tipo),
CONSTRAINT FK_idioma_pelicula_idioma FOREIGN KEY (IdIdioma) REFERENCES idioma(IdIdioma),
CONSTRAINT FK_idioma_pelicula_pelicula FOREIGN KEY (IdPelicula) REFERENCES pelicula(IdPelicula)
);
COMMENT ON COLUMN idioma_pelicula.tipo IS
'Ejemplo: original, doblado, subtitulado';
-- CREAR TABLA DE RELACION DE IDIOMAS Y DOCUMENTALES
CREATE TABLE idioma_documental(
IdIdioma CHAR(2) NOT NULL,
IdDocumental NUMBER NOT NULL,
tipo VARCHAR2(25) NOT NULL,
CONSTRAINT PK_idioma_documental PRIMARY KEY (IdIdioma, IdDocumental, tipo),
CONSTRAINT FK_idioma_documental_idioma FOREIGN KEY (IdIdioma) REFERENCES idioma(IdIdioma),
CONSTRAINT FK_idioma_documental_documental FOREIGN KEY (IdDocumental) REFERENCES documental(IdDocumental)
);
COMMENT ON COLUMN idioma_documental.tipo IS
'Ejemplo: original, doblado, subtitulado';
-- CREAR TABLA DE RELACION DE IDIOMAS Y SERIES
CREATE TABLE idioma_serie(
IdIdioma CHAR(2) NOT NULL,
IdSerie NUMBER NOT NULL,
tipo VARCHAR2(25) NOT NULL,
CONSTRAINT PK_idioma_serie PRIMARY KEY (IdIdioma, IdSerie, tipo),
CONSTRAINT FK_idioma_serie_idioma FOREIGN KEY (IdIdioma) REFERENCES idioma(IdIdioma),
CONSTRAINT FK_idioma_serie_serie FOREIGN KEY (IdSerie) REFERENCES serie(IdSerie)
);
COMMENT ON COLUMN idioma_serie.tipo IS
'Ejemplo: original, doblado, subtitulado';
SELECT * FROM cat;