-
Notifications
You must be signed in to change notification settings - Fork 0
/
estructura_bd.sql
205 lines (135 loc) · 3.7 KB
/
estructura_bd.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
/* creación de la base de datos */
DROP DATABASE IF EXISTS gdce;
CREATE DATABASE gdce;
USE gdce;
/* creación de las tablas */
-- tabla portátiles
CREATE OR REPLACE TABLE portatiles(
id_portatil integer AUTO_INCREMENT,
codigo varchar(4) NOT NULL,
marca varchar(24),
modelo varchar(24),
estado varchar(24) NOT NULL,
procesador varchar(24),
memoria_ram integer(4),
capacidad integer(8),
dispositivo_almacenamiento varchar(24),
id_almacen integer,
PRIMARY KEY (id_portatil)
);
-- tabla aplicaciones
CREATE OR REPLACE TABLE aplicaciones(
id_aplicacion integer AUTO_INCREMENT,
aplicacion varchar(32) NOT NULL,
id_portatil integer,
PRIMARY KEY (id_aplicacion)
);
-- tabla cargadores
CREATE OR REPLACE TABLE cargadores(
id_cargador integer AUTO_INCREMENT,
codigo varchar(4) NOT NULL,
potencia integer(4),
estado varchar(24) NOT NULL,
id_almacen integer,
PRIMARY KEY (id_cargador)
);
-- tabla cargan
CREATE OR REPLACE TABLE cargan(
id_carga integer AUTO_INCREMENT,
id_portatil integer,
id_cargador integer,
PRIMARY KEY(id_carga)
);
-- tabla almacenes
CREATE OR REPLACE TABLE almacenes(
id_almacen integer AUTO_INCREMENT,
aula varchar(4) NOT NULL,
capacidad integer(4),
PRIMARY KEY (id_almacen)
);
-- tabla alumnos
CREATE OR REPLACE TABLE alumnos(
id_alumno integer AUTO_INCREMENT,
dni varchar(9) NOT NULL,
nombre varchar(24) NOT NULL,
apellidos varchar(48),
estado_matricula varchar(16) NOT NULL,
id_portatil integer,
PRIMARY KEY (id_alumno)
);
-- tabla cursos
CREATE OR REPLACE TABLE cursos(
id_curso integer AUTO_INCREMENT,
nombre varchar(96) NOT NULL,
sigla varchar(8),
curso varchar(16) NOT NULL,
turno varchar(8) NOT NULL,
aula varchar(4) NOT NULL,
tutor varchar(24) NOT NULL,
PRIMARY KEY (id_curso)
);
-- tabla cursan
CREATE OR REPLACE TABLE cursan(
id_cursa integer AUTO_INCREMENT,
curso_academico varchar(8) NOT NULL,
id_alumno integer,
id_curso integer,
PRIMARY KEY (id_cursa)
);
/* creación de restricciones */
-- restricciones de portátiles
ALTER TABLE portatiles
ADD CONSTRAINT uk_codigo
UNIQUE KEY (codigo),
ADD CONSTRAINT fk_portatiles_almacenes
FOREIGN KEY (id_almacen)
REFERENCES almacenes(id_almacen);
-- restricciones de aplicaciones
ALTER TABLE aplicaciones
ADD CONSTRAINT uk_aplicacion_portatil
UNIQUE KEY (aplicacion, id_portatil),
ADD CONSTRAINT fk_aplicaciones_portatiles
FOREIGN KEY (id_portatil)
REFERENCES portatiles(id_portatil);
-- restricciones de cargadores
ALTER TABLE cargadores
ADD CONSTRAINT uk_codigo
UNIQUE KEY (codigo),
ADD CONSTRAINT fk_cargadores_almacenes
FOREIGN KEY (id_almacen)
REFERENCES almacenes(id_almacen);
-- restricciones de cargadores
ALTER TABLE cargan
ADD CONSTRAINT uk_portatil_cargador
UNIQUE KEY (id_portatil, id_cargador),
ADD CONSTRAINT fk_cargan_portatiles
FOREIGN KEY (id_portatil)
REFERENCES portatiles(id_portatil),
ADD CONSTRAINT fk_cargan_cargadores
FOREIGN KEY (id_cargador)
REFERENCES cargadores(id_cargador);
-- restricciones de almacenes
ALTER TABLE almacenes
ADD CONSTRAINT uk_aula
UNIQUE KEY (aula);
-- restricciones de alumnos
ALTER TABLE alumnos
ADD CONSTRAINT uk_dni
UNIQUE KEY (dni),
ADD CONSTRAINT fk_alumnos_portatiles
FOREIGN KEY (id_portatil)
REFERENCES portatiles(id_portatil);
-- restricciones de cursos
ALTER TABLE cursos
ADD CONSTRAINT uk_nombre_curso
UNIQUE KEY (nombre, curso);
-- restricciones de cursan
ALTER TABLE cursan
ADD CONSTRAINT uk_alumno_curso
UNIQUE KEY (id_alumno, id_curso),
ADD CONSTRAINT fk_cursan_alumnos
FOREIGN KEY (id_alumno)
REFERENCES alumnos(id_alumno),
ADD CONSTRAINT fk_cursan_cursos
FOREIGN KEY (id_curso)
REFERENCES cursos(id_curso);