Documentos de Académico
Documentos de Profesional
Documentos de Cultura
BASE DE DATOS II
Lab 8: Base de Datos Dinámica
Objetivo
El objetivo del siguiente laboratorio es aprender a crear bases de datos dinamicas, donde la
información almacenada se modifica con el tiempo, permitiendo operaciones como actualización,
borrado y edición de datos, además de las operaciones fundamentales de consulta.
Índice de Contenidos
1. Contenido Teórico 1
1.1. Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2. Bar Administrador 1
2.1. Enunciado del problema . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
2.2. Análisis de los tipos de entidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
2.3. Análisis de los tipos de interrelación . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.4. Modelo Relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4.1. Tabla Persona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4.2. Tabla Ventas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.4.3. Tabla Factura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.4. Tabla Boleta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.5. Tabla Mobiliario . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.6. Tabla Botella . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.4.7. Tabla Productos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
3. Creación de la BD 5
Referencias 40
4. Conclusiones 41
Índice de Figuras
1. Esquema Entidad-Relación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2. Modelo Relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1. Contenido Teórico
1.1. Introducción
Las bases de datos pueden clasificarse de varias maneras, de acuerdo al criterio elegido para su
clasificación: Según la variabilidad de los datos almacenados
Bases de datos estáticas: son bases de datos de sólo lectura, utilizadas primordialmen-
te para almacenar datos históricos que posteriormente se pueden utilizar para estudiar el
comportamiento de un conjunto de datos a través del tiempo,realizar proyecciones y tomar
decisiones.
Bases de datos dinámicas: son bases de datos donde los datos almacenados se modifican
con el tiempo, permitiendo operaciones como actualización y adición de datos, además de
las operaciones fundamentales de consulta. Un ejemplo de esto puede ser la base de datos
utilizada en un sistema de información de una tienda de abarrotes, una farmacia, un videoclub,
etc.
2. Bar Administrador
2.1. Enunciado del problema
Se desea considerar la informacion correspondiente a un restobar ubicado en la av. Dolores. El
dueño del restobar no tiene un sistema para almacenar la informacion de su local, el lleva un control
del local por medio de una agenda, en el cual lleva el registro de los empleados, clientes,productos
e inmbiliario. Para la mejor difusión del bar se diseña una página web.
Por cada persona se debe llevar el registro de:Nombre, Apellido Paterno, Apellido Ma-
terno y DNI,
Un empleado puede ser permanente u ocasional, esto dependera de cuan bien realize su
trabajo.
Un empleado permanente puede tomar el cargo de: bartender, vigilante ,gerente , me-
sero, personal de limpieza, cajero.
Por cada venta se debe llevar el registro de: id, descripción y cantidad.
Una venta puede contener N productos. Se debe llevar el control del: precio, id y descrip-
ción.
El restobar tiene un almacen, el cuál almacena las botellas, estas pueden ser de: Pisco,
Wiski, Ron, Cerveza, Vodka, Vinos, entre otros.
PRODUCTOS: representa al objeto del mundo real "Bebidas", y que representa al producto
estrella del restobar.Para este tipo de entidad se van a considerar los atributos: precio,id y
desripción.
VENTAS: representa al objeto del mundo real a çada una de las ventas que se realizan en
el restobar que para su identificación necesitan los atributos : id, descripción y cantidad.
2
ALMACEN : representa al objeto del mundo real .Almacen", este es el lugar donde se alma-
cenan las bebidas del local y se encarga de brindarnos información del stock de los productos
que ofrece el restobar.
USUARIO :representa al objeto del mundo real Üsuario",conjunto de personas que usan
habitualente el servicio y se registraron a la pagina web para recibir mas información de
promociones y actividades en el restobar.
Observamos las tablas Vinos, Vodka, Ron, Cerveza, Pisco, Wiskis, las cuales heredan los atri-
butos de la tabla Ventas, pero cada una de ellas tiene su respectivo codigo por producto.
3. Creación de la BD
1 AUTOCOMMIT := 0;
2 START TRANSACTION;
3 time_zone := "+00:00";
4
5
6 /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
7 /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
8 /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
9 /*!40101 SET NAMES utf8mb4 */;
10
11 --
12 -- Base de datos: ‘trabajofinal‘
13 --
14
15 --
16 -- Procedimientos
17 --
18 CREATE OR REPLACE PROCEDURE agregar_mobiliario_Electronico_EquipoMusica (
,→ id_mobiliario NUMBER, nombre VARCHAR2, descripcion VARCHAR2, cantidad NUMBER)
,→ is
19 begin
20 insert into mobiliario values(id_mobiliario,nombre,descripcion,cantidad);
21 insert into electronico values(id_mobiliario);
22 insert into equipomusica values(id_mobiliario);
23 end$$
24
25 CREATE OR REPLACE PROCEDURE agregar_mobiliario_Electronico_Licuadoras (id_mobiliario
,→ NUMBER, nombre VARCHAR2, descripcion VARCHAR2, cantidad NUMBER) is
26 begin
27 insert into mobiliario values(id_mobiliario,nombre,descripcion,cantidad);
28 insert into electronico values(id_mobiliario);
29 insert into Licuadora values(id_mobiliario);
30 end$$
31
32 CREATE OR REPLACE PROCEDURE agregar_mobiliario_Electronico_Luces (id_mobiliario
,→ NUMBER, nombre VARCHAR2, descripcion VARCHAR2, cantidad NUMBER) is
33 begin
34 insert into mobiliario values(id_mobiliario,nombre,descripcion,cantidad);
35 insert into electronico values(id_mobiliario);
36 insert into luces values(id_mobiliario,nombre);
37 end$$
38
39 CREATE OR REPLACE PROCEDURE agregar_mobiliario_Electronico_otros (id_mobiliario
,→ NUMBER, nombre VARCHAR2, descripcion VARCHAR2, cantidad NUMBER) is
40 begin
41 insert into mobiliario values(id_mobiliario,nombre,descripcion,cantidad);
42 insert into electronico values(id_mobiliario);
43 insert into e_otros values(id_mobiliario);
44 end$$
45
46 CREATE OR REPLACE PROCEDURE agregar_mobiliario_Electronico_Refrigeradora (
,→ id_mobiliario NUMBER, nombre VARCHAR2, descripcion VARCHAR2, cantidad NUMBER)
,→ is
47 begin
48 insert into mobiliario values(id_mobiliario,nombre,descripcion,cantidad);
49 insert into electronico values(id_mobiliario);
137 end$$
138
275
276 --
277 -- Volcado de datos para la tabla ‘almacen‘
278 --
279
280 INSERT INTO almacen (id_almacen, id_bar, descripcion) VALUES
281 (1, 69, ’almacen’);
282
283 -- --------------------------------------------------------
284
285 --
286 -- Estructura de tabla para la tabla ‘anfitriona‘
287 --
288
289 CREATE TABLE anfitriona (
290 dni number(10) NOT NULL
291 );
292
293 --
294 -- Volcado de datos para la tabla ‘anfitriona‘
295 --
296
297 INSERT INTO anfitriona (dni) VALUES
298 (78965836);
299
300 -- --------------------------------------------------------
301
302 --
303 -- Estructura de tabla para la tabla ‘bar‘
304 --
305
327 );
328
329 -- --------------------------------------------------------
330
331 --
332 -- Estructura de tabla para la tabla ‘botella‘
333 --
334
379 SELECT 1605, 1, 1, 750, ’Jack Daniel’, 10 FROM dual UNION ALL
380 SELECT 1701, 1, 1, 750, ’Pilsen’, 10 FROM dual UNION ALL
381 SELECT 1702, 1, 1, 750, ’Pilsen’, 10 FROM dual UNION ALL
382 SELECT 1703, 1, 1, 750, ’Arequipeña’, 10 FROM dual UNION ALL
383 SELECT 1704, 1, 1, 750, ’Cusqueña’, 10 FROM dual UNION ALL
384 SELECT 1705, 1, 1, 750, ’Corona’, 10 FROM dual UNION ALL
385 SELECT 1706, 1, 1, 1000, ’La Cholita’, 50 FROM dual;
386
387 -- --------------------------------------------------------
388
389 --
390 -- Estructura de tabla para la tabla ‘cajero‘
391 --
392
393 CREATE TABLE cajero (
394 dni number(10) NOT NULL
395 );
396
397 --
398 -- Volcado de datos para la tabla ‘cajero‘
399 --
400
401 INSERT INTO cajero (dni) VALUES
402 (26452895);
403
404 -- --------------------------------------------------------
405
406 --
407 -- Estructura de tabla para la tabla ‘cerveza‘
408 --
409
431
432 CREATE TABLE cliente (
433 dni_cliente number(10) NOT NULL
434 );
435
436 --
437 -- Volcado de datos para la tabla ‘cliente‘
438 --
439
440 INSERT INTO cliente (dni_cliente)
441 SELECT 99999999 FROM dual UNION ALL
442 SELECT 123456789 FROM dual;
443
444 -- --------------------------------------------------------
445
446 --
447 -- Estructura de tabla para la tabla ‘cocktail‘
448 --
449
483 --
484
508 -- --------------------------------------------------------
509
510 --
511 -- Estructura de tabla para la tabla ‘dj‘
512 --
513
535 -- --------------------------------------------------------
536
537 --
538 -- Estructura de tabla para la tabla ‘empleado‘
539 --
540
541 CREATE TABLE empleado (
542 dni_empleado number(10) NOT NULL,
543 salario binary_double DEFAULT NULL
544 );
545
546 --
547 -- Volcado de datos para la tabla ‘empleado‘
548 --
549
550 INSERT INTO empleado (dni_empleado, salario)
551 SELECT 26452895, 3000 FROM dual UNION ALL
552 SELECT 77022169, 5000 FROM dual UNION ALL
553 SELECT 78965836, 50 FROM dual UNION ALL
554 SELECT 88965485, 4500 FROM dual;
555
556 -- --------------------------------------------------------
557
558 --
559 -- Estructura de tabla para la tabla ‘equipomusica‘
560 --
561
562 CREATE TABLE equipomusica (
563 id_mobiliario number(10) NOT NULL
564 );
565
566 -- --------------------------------------------------------
567
568 --
569 -- Estructura de tabla para la tabla ‘e_otros‘
570 --
571
572 CREATE TABLE e_otros (
573 id_mobiliario number(10) NOT NULL
574 );
575
576 -- --------------------------------------------------------
577
578 --
579 -- Estructura de tabla para la tabla ‘gerente‘
580 --
581
582 CREATE TABLE gerente (
583 dni number(10) NOT NULL
584 );
585
586 --
595 --
596 -- Estructura de tabla para la tabla ‘licuadora‘
597 --
598
599 CREATE TABLE licuadora (
600 id_mobiliario number(10) NOT NULL
601 );
602
603 -- --------------------------------------------------------
604
605 --
606 -- Estructura de tabla para la tabla ‘luces‘
607 --
608
609 CREATE TABLE luces (
610 id_mobiliario number(10) NOT NULL,
611 nombre varchar2(50) DEFAULT NULL
612 );
613
614 -- --------------------------------------------------------
615
616 --
617 -- Estructura de tabla para la tabla ‘mesas‘
618 --
619
620 CREATE TABLE mesas (
621 id_mobiliario number(10) NOT NULL
622 );
623
624 -- --------------------------------------------------------
625
626 --
627 -- Estructura de tabla para la tabla ‘mesero‘
628 --
629
630 CREATE TABLE mesero (
631 dni number(10) NOT NULL
632 );
633
634 -- --------------------------------------------------------
635
636 --
637 -- Estructura de tabla para la tabla ‘mobiliario‘
638 --
639
640 CREATE TABLE mobiliario (
641 id_mobiliario number(10) NOT NULL,
642 nombre varchar2(50) DEFAULT NULL,
643 descripcion varchar2(100) DEFAULT NULL,
644 cantidad number(10) DEFAULT NULL
645 );
646
647 --
648 -- Volcado de datos para la tabla ‘mobiliario‘
649 --
650
651 INSERT INTO mobiliario (id_mobiliario, nombre, descripcion, cantidad)
652 SELECT 1, ’copasmartini’, ’5ml’, 100 FROM dual UNION ALL
653 SELECT 1111, ’kenas’, ’Especial para vodka’, 142 FROM dual UNION ALL
654 SELECT 2222, ’copasherry’, ’20ml para vino’, 55 FROM dual UNION ALL
655 SELECT 5001, ’Lenovo’, ’Familiar’, 2 FROM dual;
656
657 --
658 -- Disparadores ‘mobiliario‘
659
660 CREATE OR REPLACE TRIGGER tgr_delete_mobiliario AFTER DELETE ON mobiliario FOR
,→ EACH ROW begin
661 delete from noelectronico where id_mobiliario = OLD.id_mobiliario;
662 delete from electronico where id_mobiliario = OLD.id_mobiliario;
663 delete from cristaleria where id_mobiliario = OLD.id_mobiliario;
664 delete from mesas where id_mobiliario = OLD.id_mobiliario;
665 delete from Sillas where id_mobiliario = OLD.id_mobiliario;
666 delete from ne_otros where id_mobiliario = OLD.id_mobiliario;
667 delete from EquipoMusica where id_mobiliario = OLD.id_mobiliario;
668 delete from Refrigeradora where id_mobiliario = OLD.id_mobiliario;
669 delete from licuadoras where id_mobiliario = OLD.id_mobiliario;
670 delete from vitrinas where id_mobiliario = OLD.id_mobiliario;
671 delete from tv where id_mobiliario = OLD.id_mobiliario;
672 delete from luces where id_mobiliario = OLD.id_mobiliario;
673 delete from e_otros where id_mobiliario = OLD.id_mobiliario;
674 end;
675 $$
676
677 -- --------------------------------------------------------
678
679 --
680 -- Estructura de tabla para la tabla ‘ne_otros‘
681 --
682
683 CREATE TABLE ne_otros (
684 id_mobiliario number(10) NOT NULL
685 );
686
687 -- --------------------------------------------------------
688
689 --
738 --
739 -- Estructura de tabla para la tabla ‘permanente‘
740 --
741
755 -- --------------------------------------------------------
756
757 --
758 -- Estructura de tabla para la tabla ‘persona‘
759 --
760
790 -- --------------------------------------------------------
791
792 --
793 -- Estructura de tabla para la tabla ‘pisco‘
794 --
795
813 --
814 -- Estructura de tabla para la tabla ‘producto‘
815 --
816
817 CREATE TABLE producto (
818 id_producto number(10) NOT NULL,
819 precio_u binary_double DEFAULT NULL,
820 descripcion varchar2(100) DEFAULT NULL
821 );
822
823 --
824 -- Volcado de datos para la tabla ‘producto‘
825 --
826
827 INSERT INTO producto (id_producto, precio_u, descripcion)
828 SELECT 100, 9, ’bebida’ FROM dual UNION ALL
829 SELECT 101, 10, ’bebida’ FROM dual UNION ALL
830 SELECT 102, 7, ’bebida’ FROM dual UNION ALL
831 SELECT 103, 7, ’bebida’ FROM dual UNION ALL
832 SELECT 104, 6, ’bebida’ FROM dual UNION ALL
833 SELECT 105, 6, ’bebida’ FROM dual UNION ALL
834 SELECT 106, 7, ’bebida’ FROM dual UNION ALL
835 SELECT 107, 5, ’bebida’ FROM dual UNION ALL
836 SELECT 108, 5, ’bebida’ FROM dual UNION ALL
837 SELECT 1100, 90, ’Ron blanco destilado’ FROM dual UNION ALL
838 SELECT 1101, 90, ’Appleton Special cañade azucar’ FROM dual UNION ALL
839 SELECT 1102, 90, ’Ron Bacardi destilado’ FROM dual UNION ALL
840 SELECT 1103, 70, ’Ron Cartavio Black ’ FROM dual UNION ALL
841 SELECT 1104, 80, ’Ron Cartavio 5 Años anejado’ FROM dual UNION ALL
842 SELECT 1105, 140, ’Ron Cartavio Solera 12 Años añejado’ FROM dual UNION ALL
843 SELECT 1201, 60, ’Pisco de la casa’ FROM dual UNION ALL
844 SELECT 1202, 70, ’Pisco Casta de Leon’ FROM dual UNION ALL
845 SELECT 1203, 80, ’Pisco Hacienda del Abuelo’ FROM dual UNION ALL
846 SELECT 1204, 90, ’ Pisco Majes’ FROM dual UNION ALL
847 SELECT 1205, 100, ’ Pisco Biondi Acholado’ FROM dual UNION ALL
848 SELECT 1301, 80, ’Vodka Russkaya classico’ FROM dual UNION ALL
849 SELECT 1302, 90, ’Vodka Skyy’ FROM dual UNION ALL
850 SELECT 1303, 100, ’Vodka Absolut’ FROM dual UNION ALL
851 SELECT 1304, 150, ’Vodka Absolut 100 Premiun’ FROM dual UNION ALL
852 SELECT 1305, 70, ’ Vodka Lithuanian’ FROM dual UNION ALL
853 SELECT 1401, 120, ’ Tequila Jose Cuervo S’ FROM dual UNION ALL
854 SELECT 1402, 90, ’Tequila jose curvo Reposado’ FROM dual UNION ALL
855 SELECT 1403, 90, ’Tequila Blanco Jimador’ FROM dual UNION ALL
856 SELECT 1404, 120, ’Tequila Olmeca Blanco’ FROM dual UNION ALL
857 SELECT 1405, 100, ’Tequila Sauza Gold importado’ FROM dual UNION ALL
858 SELECT 1501, 60, ’Vino Santiago Queirolo’ FROM dual UNION ALL
859 SELECT 1502, 60, ’Vino Intipalka Malbec’ FROM dual UNION ALL
860 SELECT 1503, 80, ’Vino Borgoña Marques de Riscal’ FROM dual UNION ALL
861 SELECT 1504, 100, ’Vino Blanco Nieto Senetiner Estate Bottled Chardonnay’ FROM dual UNION
,→ ALL
862 SELECT 1505, 80, ’Vino Tinto Los Intocables Finca Las-Moras-Black-Malbec’ FROM dual UNION
,→ ALL
863 SELECT 1601, 130, ’Whisky Johnnie Walker Black Label’ FROM dual UNION ALL
864 SELECT 1602, 160, ’Whisky Johnnie Walker Red Label’ FROM dual UNION ALL
865 SELECT 1603, 120, ’Whisky Something Special Scotch’ FROM dual UNION ALL
866 SELECT 1604, 120, ’Whisky Ballantines Finest Blended Scotch’ FROM dual UNION ALL
867 SELECT 1605, 160, ’Whisky Jack Daniels Old Nro. 7 ’ FROM dual UNION ALL
868 SELECT 1701, 10, ’Cerveza Pilsen Callao’ FROM dual UNION ALL
869 SELECT 1702, 10, ’Cerveza Pilsen Trujillo’ FROM dual UNION ALL
870 SELECT 1703, 15, ’Cerveza Arequipeña’ FROM dual UNION ALL
871 SELECT 1704, 15, ’Cerveza Cusqueña Red Lager’ FROM dual UNION ALL
872 SELECT 1705, 12, ’Cerveza Corona light’ FROM dual UNION ALL
873 SELECT 1706, 15, ’Cerveza Artesanal Puno’ FROM dual;
874
875 -- --------------------------------------------------------
876
877 --
878 -- Estructura de tabla para la tabla ‘refrigeradora‘
879 --
880
881 CREATE TABLE refrigeradora (
882 id_mobiliario number(10) NOT NULL
883 );
884
885 --
886 -- Volcado de datos para la tabla ‘refrigeradora‘
887 --
888
889 INSERT INTO refrigeradora (id_mobiliario) VALUES
890 (5001);
891
892 -- --------------------------------------------------------
893
894 --
895 -- Estructura de tabla para la tabla ‘ron‘
896 --
897
973 -- --------------------------------------------------------
974
975 --
976 -- Estructura de tabla para la tabla ‘tv‘
977 --
978
996 --
997 -- Volcado de datos para la tabla ‘usuario‘
998 --
999
1051
1052 --
1053 -- Volcado de datos para la tabla ‘vinos‘
1054 --
1055
1056 INSERT INTO vinos (id_botella)
1057 SELECT 1501 FROM dual UNION ALL
1058 SELECT 1502 FROM dual UNION ALL
1059 SELECT 1503 FROM dual UNION ALL
1060 SELECT 1504 FROM dual UNION ALL
1061 SELECT 1505 FROM dual;
1062
1063 -- --------------------------------------------------------
1064
1065 --
1066 -- Estructura de tabla para la tabla ‘vitrinas‘
1067 --
1068
1069 CREATE TABLE vitrinas (
1070 id_mobiliario number(10) NOT NULL
1071 );
1072
1073 -- --------------------------------------------------------
1074
1075 --
1076 -- Estructura de tabla para la tabla ‘vodka‘
1077 --
1078
1079 CREATE TABLE vodka (
1080 id_botella number(10) NOT NULL
1081 );
1082
1083 --
1084 -- Volcado de datos para la tabla ‘vodka‘
1085 --
1086
1103
1104 --
1105 -- Volcado de datos para la tabla ‘wiski‘
1106 --
1107
1108 INSERT INTO wiski (id_botella)
1109 SELECT 1601 FROM dual UNION ALL
1110 SELECT 1602 FROM dual UNION ALL
1111 SELECT 1603 FROM dual UNION ALL
1112 SELECT 1604 FROM dual UNION ALL
1113 SELECT 1605 FROM dual;
1114
1115 --
1116 -- Índices para tablas volcadas
1117 --
1118
1119 --
1120 -- Indices de la tabla ‘almacen‘
1121 --
1122 ALTER TABLE almacen
1123 ADD PRIMARY KEY (id_almacen),
1124 ADD KEY ‘id_bar‘ (id_bar);
1125
1126 --
1127 -- Indices de la tabla ‘anfitriona‘
1128 --
1129 ALTER TABLE anfitriona
1130 ADD PRIMARY KEY (dni);
1131
1132 --
1133 -- Indices de la tabla ‘bar‘
1134 --
1135 ALTER TABLE bar
1136 ADD PRIMARY KEY (id_bar);
1137
1138 --
1139 -- Indices de la tabla ‘bartender‘
1140 --
1141 ALTER TABLE bartender
1142 ADD PRIMARY KEY (dni);
1143
1144 --
1145 -- Indices de la tabla ‘botella‘
1146 --
1147 ALTER TABLE botella
1148 ADD PRIMARY KEY (id_botella),
1149 ADD KEY ‘id_almacen‘ (id_almacen),
1150 ADD KEY ‘id_distribuidor‘ (id_distribuidor);
1151
1152 --
1153 -- Indices de la tabla ‘cajero‘
1154 --
1259
1260 --
1261 -- Indices de la tabla ‘noelectronico‘
1262 --
1263 ALTER TABLE noelectronico
1264 ADD PRIMARY KEY (id_mobiliario);
1265
1266 --
1267 -- Indices de la tabla ‘ocacional‘
1268 --
1269 ALTER TABLE ocacional
1270 ADD PRIMARY KEY (dni);
1271
1272 --
1273 -- Indices de la tabla ‘otrosproductos‘
1274 --
1275 ALTER TABLE otrosproductos
1276 ADD PRIMARY KEY (id_producto_otros);
1277
1278 --
1279 -- Indices de la tabla ‘permanente‘
1280 --
1281 ALTER TABLE permanente
1282 ADD PRIMARY KEY (dni);
1283
1284 --
1285 -- Indices de la tabla ‘persona‘
1286 --
1287 ALTER TABLE persona
1288 ADD PRIMARY KEY (dni);
1289
1290 --
1291 -- Indices de la tabla ‘personallimpieza‘
1292 --
1293 ALTER TABLE personallimpieza
1294 ADD PRIMARY KEY (dni);
1295
1296 --
1297 -- Indices de la tabla ‘pisco‘
1298 --
1299 ALTER TABLE pisco
1300 ADD PRIMARY KEY (id_botella);
1301
1302 --
1303 -- Indices de la tabla ‘producto‘
1304 --
1305 ALTER TABLE producto
1306 ADD PRIMARY KEY (id_producto);
1307
1308 --
1309 -- Indices de la tabla ‘refrigeradora‘
1310 --
1363
1364 --
1365 -- Indices de la tabla ‘venta‘
1366 --
1367 ALTER TABLE venta
1368 ADD PRIMARY KEY (id_venta),
1369 ADD KEY ‘dni_cliente‘ (dni_cliente),
1370 ADD KEY ‘dni_cajero‘ (dni_cajero),
1371 ADD KEY ‘id_producto‘ (id_producto);
1372
1373 --
1374 -- Indices de la tabla ‘vinos‘
1375 --
1376 ALTER TABLE vinos
1377 ADD PRIMARY KEY (id_botella);
1378
1379 --
1380 -- Indices de la tabla ‘vitrinas‘
1381 --
1382 ALTER TABLE vitrinas
1383 ADD PRIMARY KEY (id_mobiliario);
1384
1385 --
1386 -- Indices de la tabla ‘vodka‘
1387 --
1388 ALTER TABLE vodka
1389 ADD PRIMARY KEY (id_botella);
1390
1391 --
1392 -- Indices de la tabla ‘wiski‘
1393 --
1394 ALTER TABLE wiski
1395 ADD PRIMARY KEY (id_botella);
1396
1397 --
1398 -- AUTO_INCREMENT de las tablas volcadas
1399 --
1400
1401 --
1402 -- AUTO_INCREMENT de la tabla ‘almacen‘
1403 --
1404 ALTER TABLE almacen
1405 MODIFY id_almacen trunc(to_number(11)) NOT NULL AUTO_INCREMENT,
,→ AUTO_INCREMENT=2;
1406
1407 --
1408 -- AUTO_INCREMENT de la tabla ‘bar‘
1409 --
1410 ALTER TABLE bar
1411 MODIFY id_bar trunc(to_number(11)) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT
,→ =70;
1412
1413 --
1414 -- AUTO_INCREMENT de la tabla ‘distribuidor‘
1415 --
1416 ALTER TABLE distribuidor
1417 MODIFY id_distribuidor trunc(to_number(11)) NOT NULL AUTO_INCREMENT,
,→ AUTO_INCREMENT=2;
1418
1419 --
1420 -- AUTO_INCREMENT de la tabla ‘usuario‘
1421 --
1422 ALTER TABLE usuario
1423 MODIFY id_usuario trunc(to_number(11)) NOT NULL AUTO_INCREMENT,
,→ AUTO_INCREMENT=8;
1424
1425 --
1426 -- AUTO_INCREMENT de la tabla ‘utiliza‘
1427 --
1428 ALTER TABLE utiliza
1429 MODIFY id_utiliza trunc(to_number(11)) NOT NULL AUTO_INCREMENT;
1430
1431 --
1432 -- AUTO_INCREMENT de la tabla ‘venta‘
1433 --
1434 ALTER TABLE venta
1435 MODIFY id_venta trunc(to_number(11)) NOT NULL AUTO_INCREMENT,
,→ AUTO_INCREMENT=2;
1436
1437 --
1438 -- Restricciones para tablas volcadas
1439 --
1440
1441 --
1442 -- Filtros para la tabla ‘almacen‘
1443 --
1444 ALTER TABLE almacen
1445 ADD CONSTRAINT Almacen_ibfk_1 FOREIGN KEY (id_bar) REFERENCES bar (id_bar);
1446
1447 --
1448 -- Filtros para la tabla ‘anfitriona‘
1449 --
1450 ALTER TABLE anfitriona
1451 ADD CONSTRAINT Anfitriona_ibfk_1 FOREIGN KEY (dni) REFERENCES ocacional (dni);
1452
1453 --
1454 -- Filtros para la tabla ‘bartender‘
1455 --
1456 ALTER TABLE bartender
1457 ADD CONSTRAINT Bartender_ibfk_1 FOREIGN KEY (dni) REFERENCES permanente (dni);
1458
1459 --
1460 -- Filtros para la tabla ‘botella‘
1461 --
1467 --
1468 -- Filtros para la tabla ‘cajero‘
1469 --
1470 ALTER TABLE cajero
1471 ADD CONSTRAINT Cajero_ibfk_1 FOREIGN KEY (dni) REFERENCES permanente (dni);
1472
1473 --
1474 -- Filtros para la tabla ‘cerveza‘
1475 --
1476 ALTER TABLE cerveza
1477 ADD CONSTRAINT Cerveza_ibfk_1 FOREIGN KEY (id_botella) REFERENCES botella (
,→ id_botella);
1478
1479 --
1480 -- Filtros para la tabla ‘cliente‘
1481 --
1482 ALTER TABLE cliente
1483 ADD CONSTRAINT Cliente_ibfk_1 FOREIGN KEY (dni_cliente) REFERENCES persona (dni);
1484
1485 --
1486 -- Filtros para la tabla ‘cocktail‘
1487 --
1488 ALTER TABLE cocktail
1489 ADD CONSTRAINT Cocktail_ibfk_1 FOREIGN KEY (id_cocktail) REFERENCES producto (
,→ id_producto);
1490
1491 --
1492 -- Filtros para la tabla ‘cristaleria‘
1493 --
1494 ALTER TABLE cristaleria
1495 ADD CONSTRAINT cristaleria_ibfk_1 FOREIGN KEY (id_mobiliario) REFERENCES
,→ noelectronico (id_mobiliario);
1496
1497 --
1498 -- Filtros para la tabla ‘dj‘
1499 --
1500 ALTER TABLE dj
1501 ADD CONSTRAINT Dj_ibfk_1 FOREIGN KEY (dni) REFERENCES ocacional (dni);
1502
1503 --
1504 -- Filtros para la tabla ‘electronico‘
1505 --
1506 ALTER TABLE electronico
1569 --
1570 -- Filtros para la tabla ‘ocacional‘
1571 --
1572 ALTER TABLE ocacional
1573 ADD CONSTRAINT Ocacional_ibfk_1 FOREIGN KEY (dni) REFERENCES empleado (
,→ dni_empleado);
1574
1575 --
1576 -- Filtros para la tabla ‘otrosproductos‘
1577 --
1578 ALTER TABLE otrosproductos
1579 ADD CONSTRAINT otrosProductos_ibfk_1 FOREIGN KEY (id_producto_otros) REFERENCES
,→ producto (id_producto);
1580
1581 --
1582 -- Filtros para la tabla ‘permanente‘
1583 --
1584 ALTER TABLE permanente
1585 ADD CONSTRAINT Permanente_ibfk_1 FOREIGN KEY (dni) REFERENCES empleado (
,→ dni_empleado);
1586
1587 --
1588 -- Filtros para la tabla ‘personallimpieza‘
1589 --
1590 ALTER TABLE personallimpieza
1591 ADD CONSTRAINT PersonalLimpieza_ibfk_1 FOREIGN KEY (dni) REFERENCES permanente (
,→ dni);
1592
1593 --
1594 -- Filtros para la tabla ‘pisco‘
1595 --
1596 ALTER TABLE pisco
1648 --
1649 -- Filtros para la tabla ‘venta‘
1650 --
1651 ALTER TABLE venta
1652 ADD CONSTRAINT Venta_ibfk_1 FOREIGN KEY (dni_cliente) REFERENCES cliente (
,→ dni_cliente),
1653 ADD CONSTRAINT Venta_ibfk_2 FOREIGN KEY (dni_cajero) REFERENCES ‘cajero‘ (dni),
1654 ADD CONSTRAINT Venta_ibfk_3 FOREIGN KEY (id_producto) REFERENCES ‘producto‘ (
,→ id_producto);
1655
1656 --
1657 -- Filtros para la tabla ‘vinos‘
1658 --
1659 ALTER TABLE vinos
1660 ADD CONSTRAINT Vinos_ibfk_1 FOREIGN KEY (id_botella) REFERENCES botella (
,→ id_botella);
1661
1662 --
1663 -- Filtros para la tabla ‘vitrinas‘
1664 --
1665 ALTER TABLE vitrinas
1666 ADD CONSTRAINT vitrinas_ibfk_1 FOREIGN KEY (id_mobiliario) REFERENCES electronico (
,→ id_mobiliario);
1667
1668 --
1669 -- Filtros para la tabla ‘vodka‘
1670 --
1671 ALTER TABLE vodka
1672 ADD CONSTRAINT Vodka_ibfk_1 FOREIGN KEY (id_botella) REFERENCES botella (
,→ id_botella);
1673
1674 --
1675 -- Filtros para la tabla ‘wiski‘
1676 --
1677 ALTER TABLE wiski
1678 ADD CONSTRAINT Wiski_ibfk_1 FOREIGN KEY (id_botella) REFERENCES botella (
,→ id_botella);
1679 COMMIT;
1680 \section{Manipulaci\’on BD}
Referencias
[1] Elmasri y Navathe: “Fundamentos de Sistemas de Bases de Datos”, 6ª y 4ª edición
4. Conclusiones
Podemos concluir que la diferencia principal entre una base de datos dinámica y estática es
que en la primera podemos consultar y modificar la información, mientras que en la segunda
solo se puede consultar, por ende es mas conveniente una base de datos dinámica.
Cabe resaltar que escoger una base de datos u otra depende de las necesidades de la empresa,
puesto que no vale la pena gastar recursos implementando una base de datos dinámica cuando
solo se necesita añadir y consultar datos.