-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathschemaCreate.sql
319 lines (272 loc) · 8.34 KB
/
schemaCreate.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
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
/*
Universidad Simón Bolívar
Laboratorio de Bases de Datos (CI3391)
Trimestre: Enero - Marzo 2016
Profesores: - Darwin Rocha
- José Tomás Cadenas
Segundo proyecto: Traducción del Modelo ER-ERE a Relacional
e implementaciones de la relaciones en SQL.
Integrantes: - Guillermo Betancourt, carnet 11-10103
- Gabriel Giménez, carnet 12-11006
Descripción:
En el presente script schemaCreate.sql se crean las tablas
de las relaciones obtenidas de la traducción del Modelo ER-ERE
de la primera fase del proyecto al Modelo Relacional.
*/
CREATE TABLE ASIGNATURA (
codigo VARCHAR(6) NOT NULL,
es_cadena BOOLEAN NOT NULL,
categoria VARCHAR(5) NULL,
grado VARCHAR(10) NOT NULL,
obligatoriedad VARCHAR(11) NOT NULL,
unidad_creditos NUMERIC(1) NOT NULL,
h_teoria NUMERIC(2) NOT NULL,
h_practica NUMERIC(2) NOT NULL,
h_lab NUMERIC(2) NOT NULL,
id_preoferta SERIAL NOT NULL,
id_dep SERIAL NOT NULL,
CONSTRAINT PK_ASIGNATURA PRIMARY KEY(codigo)
);
CREATE TABLE PLAN_ESTUDIO (
id_plan SERIAL NOT NULL,
CONSTRAINT PK_PLAN_ESTUDIO PRIMARY KEY(id_plan)
);
CREATE TABLE TRIMESTRE (
meses VARCHAR(20) NOT NULL,
anio NUMERIC(4) NOT NULL,
CONSTRAINT PK_TRIMESTRE PRIMARY KEY(meses, anio)
);
CREATE TABLE OFERTA (
id_oferta SERIAL NOT NULL,
id_preoferta SERIAL NOT NULL,
estatus VARCHAR(10) NOT NULL,
max_est INT NOT NULL,
literal CHAR(1) NOT NULL,
req_reserva BOOLEAN NOT NULL,
CONSTRAINT PK_OFERTA PRIMARY KEY(id_oferta)
);
CREATE TABLE teoria (
id_oferta SERIAL NOT NULL,
horario VARCHAR(5) NOT NULL,
CONSTRAINT PK_teoria PRIMARY KEY(id_oferta, horario)
);
CREATE TABLE laboratorio (
id_oferta SERIAL NOT NULL,
horario VARCHAR(5) NOT NULL,
CONSTRAINT PK_laboratorio PRIMARY KEY(id_oferta, horario)
);
CREATE TABLE practica (
id_oferta SERIAL NOT NULL,
horario VARCHAR(5) NOT NULL,
CONSTRAINT PK_practica PRIMARY KEY(id_oferta, horario)
);
CREATE TABLE PREOFERTA (
id_preoferta SERIAL NOT NULL,
dem_est INT NOT NULL,
CONSTRAINT PK_PREOFERTA PRIMARY KEY(id_preoferta)
);
CREATE TABLE PD (
cedula NUMERIC(8) NOT NULL,
CONSTRAINT PK_PD PRIMARY KEY(cedula)
);
CREATE TABLE nombres (
cedula NUMERIC(8) NOT NULL,
nombres VARCHAR(20) NOT NULL,
CONSTRAINT PK_nombres PRIMARY KEY(cedula,nombres)
);
CREATE TABLE apellidos (
cedula NUMERIC(8) NOT NULL,
apellidos VARCHAR(20) NOT NULL,
CONSTRAINT PK_apellidos PRIMARY KEY(cedula,apellidos)
);
CREATE TABLE telefonos (
cedula NUMERIC(8) NOT NULL,
telefonos VARCHAR(20) NOT NULL,
CONSTRAINT PK_telefonos PRIMARY KEY(cedula,telefonos)
);
CREATE TABLE emails (
cedula NUMERIC(8) NOT NULL,
emails VARCHAR(50) NOT NULL,
CONSTRAINT PK_emails PRIMARY KEY(cedula, emails)
);
CREATE TABLE ESTUDIANTE (
cedula NUMERIC(8) NOT NULL,
carnet VARCHAR(7) NOT NULL,
ult_trim_insc_meses VARCHAR(20) NULL,
ult_trim_insc_anio NUMERIC(4) NULL,
indice NUMERIC(5,4) NULL,
grado VARCHAR(10) NOT NULL,
otro_trabajo BOOLEAN NOT NULL,
CONSTRAINT PK_ESTUDIANTE PRIMARY KEY(cedula, carnet),
CONSTRAINT INDICE_TRES_PUNTO_CINCO CHECK (indice >= 3.5)
);
CREATE TABLE EXTERNO (
cedula NUMERIC(8) NOT NULL,
CONSTRAINT PK_EXTERNO PRIMARY KEY(cedula)
);
CREATE TABLE AD (
cedula NUMERIC(8) NOT NULL,
CONSTRAINT PK_AD PRIMARY KEY(cedula)
);
CREATE TABLE credenciales (
cedula NUMERIC(8) NOT NULL,
credenciales VARCHAR(30) NOT NULL,
CONSTRAINT PK_credenciales PRIMARY KEY(cedula,credenciales)
);
CREATE TABLE PROFESOR (
cedula NUMERIC(8) NOT NULL,
id_dep SERIAL NOT NULL,
jubilado BOOLEAN NOT NULL,
CONSTRAINT PK_PROFESOR PRIMARY KEY(cedula, id_dep)
);
CREATE TABLE TITULO (
id_titulo SERIAL NOT NULL,
nivel VARCHAR(5) NOT NULL,
especialidad VARCHAR(100) NOT NULL,
CONSTRAINT PK_TITULO PRIMARY KEY(id_titulo)
);
CREATE TABLE DEPARTAMENTO (
id_dep SERIAL NOT NULL,
CONSTRAINT PK_DEPARTAMENTO PRIMARY KEY(id_dep)
);
CREATE TABLE CONTRATO (
cedula NUMERIC(8) NOT NULL,
id_contrato SERIAL NOT NULL,
titulo VARCHAR(30) NOT NULL,
duracion VARCHAR(10) NOT NULL,
inicio DATE NOT NULL,
CONSTRAINT PK_CONTRATO PRIMARY KEY(cedula, id_contrato)
);
CREATE TABLE PREPARADOR (
cedula NUMERIC(8) NOT NULL,
id_contrato SERIAL NOT NULL,
tipo VARCHAR(20) NOT NULL,
CONSTRAINT PK_PREPARADOR PRIMARY KEY(cedula)
);
CREATE TABLE AYUDANTE (
cedula NUMERIC(8) NOT NULL,
id_contrato SERIAL NOT NULL,
CONSTRAINT PK_AYUDANTE PRIMARY KEY(cedula, id_contrato)
);
CREATE TABLE supervision (
cedula NUMERIC(8) NOT NULL,
id_contrato SERIAL NOT NULL,
supervision DATE NOT NULL,
CONSTRAINT PK_supervision PRIMARY KEY(cedula, id_contrato, supervision)
);
CREATE TABLE CPROFESOR (
cedula NUMERIC(8) NOT NULL,
id_contrato SERIAL NOT NULL,
tipo VARCHAR(30) NOT NULL,
horas NUMERIC(2) NOT NULL,
CONSTRAINT PK_CPROFESOR PRIMARY KEY(cedula, id_contrato)
);
CREATE TABLE PE (
cedula NUMERIC(8) NOT NULL,
id_contrato SERIAL NOT NULL,
categoria VARCHAR(10) NOT NULL,
CONSTRAINT PK_PE PRIMARY KEY(cedula, id_contrato)
);
CREATE TABLE PC (
cedula NUMERIC(8) NOT NULL,
id_contrato SERIAL NOT NULL,
nivel VARCHAR(5) NOT NULL,
CONSTRAINT PK_PC PRIMARY KEY(cedula, id_contrato)
);
CREATE TABLE SP (
cedula NUMERIC(8) NOT NULL,
id_contrato SERIAL NOT NULL,
nivel VARCHAR(5) NULL,
ad_honorem BOOLEAN NOT NULL,
horas NUMERIC(2) NOT NULL,
auxiliar BOOLEAN NOT NULL,
CONSTRAINT PK_SP PRIMARY KEY(cedula, id_contrato)
);
CREATE TABLE SECCION (
codigo VARCHAR(6) NOT NULL,
meses VARCHAR(20) NOT NULL,
anio NUMERIC(4) NOT NULL,
numero INT NOT NULL,
nro_estudiantes INT NOT NULL,
est_aprobados INT NULL,
CONSTRAINT PK_SECCION PRIMARY KEY(codigo,meses,anio,numero)
);
CREATE TABLE teoriaSECCION (
codigo VARCHAR(6) NOT NULL,
meses VARCHAR(20) NOT NULL,
anio NUMERIC(4) NOT NULL,
numero INT NOT NULL,
horario VARCHAR(5) NOT NULL,
CONSTRAINT PK_teoriaSECCION PRIMARY KEY(codigo, meses, anio, numero, horario)
);
CREATE TABLE laboratorioSECCION (
codigo VARCHAR(6) NOT NULL,
meses VARCHAR(20) NOT NULL,
anio NUMERIC(4) NOT NULL,
numero INT NOT NULL,
horario VARCHAR(5) NOT NULL,
CONSTRAINT PK_laboratorioSECCION PRIMARY KEY(codigo, meses, anio, numero, horario)
);
CREATE TABLE practicaSECCION (
codigo VARCHAR(6) NOT NULL,
meses VARCHAR(20) NOT NULL,
anio NUMERIC(4) NOT NULL,
numero INT NOT NULL,
horario VARCHAR(5) NOT NULL,
CONSTRAINT PK_practicaSECCION PRIMARY KEY(codigo, meses, anio, numero, horario)
);
CREATE TABLE JUSTIFICACION (
cedula NUMERIC(8) NOT NULL,
id_justificacion INT NOT NULL,
fecha DATE NOT NULL,
tipo VARCHAR(40) NOT NULL,
fecha_inicio DATE NULL,
fecha_fin DATE NULL,
nro_renovacion INT NULL,
CONSTRAINT PK_JUSTIFICACION PRIMARY KEY(cedula,id_justificacion)
);
/* Relaciones a Relacional */
CREATE TABLE Requisito (
codigo VARCHAR(6) NOT NULL,
codigo_req VARCHAR(6) NOT NULL,
id_plan SERIAL NOT NULL,
CONSTRAINT PK_Requisito PRIMARY KEY(codigo, codigo_req, id_plan)
);
CREATE TABLE Correquisito (
codigo VARCHAR(6) NOT NULL,
codigo_req VARCHAR(6) NOT NULL,
id_plan SERIAL NOT NULL,
CONSTRAINT PK_Correquisito PRIMARY KEY(codigo, codigo_req, id_plan)
);
CREATE TABLE Ha_cursado (
codigo VARCHAR(6) NOT NULL,
cedula NUMERIC(8) NOT NULL,
carnet VARCHAR(7) NOT NULL,
CONSTRAINT PK_Ha_cursado PRIMARY KEY(codigo, cedula, carnet)
);
CREATE TABLE Coordina (
cedula NUMERIC(8) NOT NULL,
meses VARCHAR(20) NOT NULL,
anio NUMERIC(4) NOT NULL,
codigo VARCHAR(6) NOT NULL,
CONSTRAINT PK_Coordina PRIMARY KEY(cedula, meses, anio, codigo)
);
CREATE TABLE Posee (
cedula NUMERIC(8) NOT NULL,
id_dep SERIAL NOT NULL,
id_titulo SERIAL NOT NULL,
CONSTRAINT PK_Posee PRIMARY KEY(cedula, id_titulo, id_dep)
);
CREATE TABLE Prefiere (
cedula NUMERIC(8) NOT NULL,
id_oferta SERIAL NOT NULL,
CONSTRAINT PK_Prefiere PRIMARY KEY(cedula, id_oferta)
);
CREATE TABLE Dicta (
cedula NUMERIC(8) NOT NULL,
meses VARCHAR(20) NOT NULL,
anio NUMERIC(4) NOT NULL,
codigo VARCHAR(6) NOT NULL,
numero INT NOT NULL,
CONSTRAINT PK_Dicta PRIMARY KEY(cedula, meses, anio, codigo, numero)
);