Está en la página 1de 4

1 ---MASTER GEOMATICA Y GEOINFORMACION 2022----

2 ---DISTRIBUCION DE LA INFORMACION ESPACIAL---


3 -----------DESARROLLO DE TAREA 3---
4 -----OMAR CHRISTIAN QUISPE ENRIQUEZ----------
5
6 ---- [CREACION DE BASE DE DATOS]
7 psql -U postgres BDE_TAREA3
8
9 ---[CREACION DE ESQUEMA]
10 CREATE SCHEMA ocqe;
11
12 ---[CREACION DE DOMINIOS]
13 --[CREACION DE DOMINIO 'd_ruta']
14 CREATE DOMAIN ocqe.d_ruta AS CHAR(10) CONSTRAINT r_d_ruta CHECK (VALUE IN ('Ruta
A','Ruta B','Ruta C'));
15 CREATE DOMAIN ocqe.d_peso AS INTEGER CONSTRAINT r_d_peso CHECK (VALUE > 500 AND
VALUE < 2000);
16 CREATE DOMAIN ocqe.d_color AS CHAR(10) DEFAULT 'Otro' CONSTRAINT r_d_color CHECK
(VALUE IN ('Rojo', 'Verde', 'Azul','Otro'));
17
18 ---[CREACION DE TABLAS]
19 --[TABLA MAESTRA 'ESTACIONES']
20 CREATE TABLE ocqe.estaciones (
21 id_estacion VARCHAR(3) PRIMARY KEY,
22 nomestacion VARCHAR(20) UNIQUE,
23 apertura TIME NOT NULL DEFAULT '00:00:00',
24 cierre TIME NOT NULL DEFAULT '00:00:00');
25 --[TABLA DETALLE 'UBICACION']
26 CREATE TABLE ocqe.ubicacion (
27 ubimunicipal VARCHAR(30) DEFAULT 'Desconocido' ,
28 latitud FLOAT NOT NULL ,
29 longitud FLOAT NOT NULL ,
30 id_estacion VARCHAR(3));
31 --[TABLA DETALLE 'BUSES'] con referencia a muchos
32 CREATE TABLE ocqe.buses (
33 placa_bus VARCHAR NOT NULL DEFAULT 'Desconocido' ,
34 h_llegada TIME NOT NULL DEFAULT '00:00:00',
35 h_salida TIME NOT NULL DEFAULT '00:00:00',
36 anobus INTEGER NOT NULL DEFAULT -1,
37 ruta ocqe.d_ruta DEFAULT 'Desconocido' NOT NULL,
38 peso ocqe.d_peso DEFAULT -1 NOT NULL,
39 colorb ocqe.d_color DEFAULT 'Desconocido' NOT NULL,
40 id_cod VARCHAR(3),
41 cod_ser VARCHAR(20) PRIMARY KEY);
42
43 -- [INSERTANDO DATOS A LA TABLA MAESTRA 'ESTACIONES']
44 INSERT INTO ocqe.estaciones (id_estacion,nomestacion,apertura,cierre)
45 VALUES('E1','Estacion Naranjal ','7:00:00','11:00:00');
46 INSERT INTO ocqe.estaciones (id_estacion,nomestacion,apertura,cierre)
47 VALUES('E2','Estacion Izaguirre','8:00:00','10:30:00');
48 INSERT INTO ocqe.estaciones (id_estacion,nomestacion,apertura,cierre)
49 VALUES('E3','Estacion Pacifico','8:00:00','10:30:00');
50 INSERT INTO ocqe.estaciones (id_estacion,nomestacion,apertura,cierre)
51 VALUES('E4','Estacion UNI','8:00:00','10:30:00');
52 INSERT INTO ocqe.estaciones (id_estacion,nomestacion,apertura,cierre)
53 VALUES('E5','Estacion Caqueta','7:00:00','11:00:00');
54
55 -- [INSERTANDO DATOS A LA TABLA DETALLE 'UBICACION']
56 INSERT INTO ocqe.ubicacion (ubimunicipal,latitud,longitud,id_estacion)
57 VALUES('Independencia ',-11.981424,-77.058912,'E1');
58 INSERT INTO ocqe.ubicacion (ubimunicipal,latitud,longitud,id_estacion)
59 VALUES('Independencia',-11.983259,-77.058425,'E2');
60 INSERT INTO ocqe.ubicacion (ubimunicipal,latitud,longitud,id_estacion)
61 VALUES('Independencia',-11.989649,-77.057008,'E3');
62 INSERT INTO ocqe.ubicacion (ubimunicipal,latitud,longitud,id_estacion)
63 VALUES('Rimac',-12.024309,-77.048638,'E4');
64 INSERT INTO ocqe.ubicacion (ubimunicipal,latitud,longitud,id_estacion)
65 VALUES('San Martin de Porres',-12.036674,-77.043727,'E5');
66
67 --- [INSERTANDO DATOS A LA TABLA DETALLE 'BUSES']
68 --E1
69 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
70 VALUES('ABC100','8:05:00','8:06:00',2018,'Ruta A',1000,'Azul','E1','E1ABC100');
71 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
72 VALUES('ABC200','8:10:00','8:11:00',2019,'Ruta B',1200,'Rojo','E1','E1ABC200');
73 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
74 VALUES('ABC300','8:15:00','8:16:00',2020,'Ruta C',1300,'Verde','E1','E1ABC300');
75 --E2
76 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
77 VALUES('ABC100','8:07:00','8:08:00',2018,'Ruta A',1000,'Azul','E2','E2ABC100');
78 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
79 VALUES('ABC200','8:12:00','8:13:00',2019,'Ruta B',1200,'Rojo','E2','E2ABC200');
80 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
81 VALUES('ABC300','8:17:00','8:19:00',2020,'Ruta
C',1300,'Verde','E2','E2ABC300');
82 --E3
83 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
84 VALUES('ABC100','8:09:00','8:10:00',2018,'Ruta A',1000,'Azul','E3','E3ABC100');
85 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
86 VALUES('ABC200','8:14:00','8:15:00',2019,'Ruta B',1200,'Rojo','E3','E3ABC200');
87 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
88 VALUES('ABC300','8:19:00','8:21:00',2020,'Ruta
C',1300,'Verde','E3','E3ABC300');
89 --E4
90 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
91 VALUES('ABC100','8:11:00','8:12:00',2018,'Ruta A',1000,'Azul','E4','E4ABC100');
92 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
93 VALUES('ABC200','8:16:00','8:17:00',2019,'Ruta B',1200,'Rojo','E4','E4ABC200');
94 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
95 VALUES('ABC300','8:21:00','8:23:00',2020,'Ruta C',1300,'Verde','E4','E4ABC300');
96 --E5
97 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
98 VALUES('ABC100','8:13:00','8:14:00',2018,'Ruta A',1000,'Azul','E5','E5ABC100');
99 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
100 VALUES('ABC200','8:18:00','8:19:00',2019,'Ruta B',1200,'Rojo','E5','E5ABC200');
101 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_cod,cod_ser)
102 VALUES('ABC300','8:23:00','8:25:00',2020,'Ruta C',1300,'Verde','E5','E5ABC300');
103
104 ---REFERENCIA DE 1 A 1, TABLA MAESTRA('ESTACIONES') Y TABLA DETALLE ('UBICACION')]
105 ALTER TABLE ocqe.ubicacion ADD CONSTRAINT un_un FOREIGN KEY (id_estacion)
106 REFERENCES ocqe.estaciones(id_estacion);
107
108
109 ---REFERENCIA DE 1 A MUCHOS, TABLA MAESTRA('ESTACIONES') Y TABLA DETALLE
('BUSES')]####3
110 ALTER TABLE ocqe.buses
111 ADD CONSTRAINT un_muchos
112 FOREIGN KEY (id_cod)
113 REFERENCES ocqe.estaciones(id_estacion);
114 --------------------------------------------------------------------------------------
---------
115 ---Utilizar sentencias SQL Insert para comprobar la violación de
116 --algunas restricciones como clave primaria, not null, o check,
117
118 ---EJEMPLO INSERT FALLIDO ,RESTRICCION NULL
119
120 INSERT INTO ocqe.ubicacion (ubimunicipal,longitud,id_estacion)
121 VALUES('Rimac',-77.058425,'E7');
122 'ERROR: el valor null para la columna «latitud» viola la restricción not null
123 DETAIL: La fila que falla contiene (Rimac, null, -77.058425, E7).
124 SQL state: 23502'
125
126 --- EJEMPLO INSERT FALLIDO ,RESTRICCION PRIMARY KEY
127 INSERT INTO ocqe.estaciones (id_estacion,nomestacion,apertura,cierre)
128 VALUES('E1','Estacion Centro','7:00:00','11:00:00');
129
130 'ERROR: llave duplicada viola restricción de unicidad «estaciones_pkey»
131 DETAIL: Ya existe la llave (id_estacion)=(E1).
132 SQL state: 23505'
133
134 --- EJEMPLO INSERT FALLIDO ,RESTRICCION CHECK
135 INSERT INTO ocqe.buses
(placa_bus,h_llegada,h_salida,anobus,ruta,peso,colorb,id_estacion)
136 VALUES('ABC100','8:05:00','8:06:00',2018,'Ruta A',-100,'Azul','E1');
137
138 'ERROR: el valor para el dominio ocqe.d_peso viola la restricción «check» «r_d_peso»
139 SQL state: 23514'
140
141 --- Utilizar sentencias SQL Insert, Update y Delete para probar el
142 --funcionamiento de la integridad referencial.
143
144 -- INSERT
145
146 --UPDATE
147 "id_estacion" "nomestacion" "apertura" "cierre"
148 "E1" "Estacion Naranjal " "07:00:00" "11:00:00"
149 "E2" "Estacion Izaguirre" "08:00:00" "10:30:00"
150 "E3" "Estacion Pacifico" "08:00:00" "10:30:00"
151 "E4" "Estacion UNI" "08:00:00" "10:30:00"
152 "E5" "Estacion Caqueta" "07:00:00" "11:00:00"
153 update ocqe.estaciones set apertura = '07:30:00' where apertura = '07:00:00';
154 "id_estacion" "nomestacion" "apertura" "cierre"
155 "E1" "Estacion Naranjal " "07:30:00" "11:00:00"
156 "E2" "Estacion Izaguirre" "08:00:00" "10:30:00"
157 "E3" "Estacion Pacifico" "08:00:00" "10:30:00"
158 "E4" "Estacion UNI" "08:00:00" "10:30:00"
159 "E5" "Estacion Caqueta" "07:30:00" "11:00:00"
160
161 --DELETE
162 delete from ocqe.estaciones where id_estacion = 'E1';
163
164 'ERROR: update o delete en «estaciones» viola la llave foránea «un_un» en la tabla
«ubicacion»
165 DETAIL: La llave (id_estacion)=(E1) todavía es referida desde la tabla «ubicacion».
166 SQL state: 23503'
167
168 ---REFERENCIA DE 1 A 1, TABLA MAESTRA('ESTACIONES') Y TABLA DETALLE ('UBICACION')]
169 ALTER TABLE ocqe.ubicacion ADD CONSTRAINT un_un FOREIGN KEY (id_estacion)
170 REFERENCES ocqe.estaciones(id_estacion) ON DELETE CASCADE ON UPDATE CASCADE;
171
172 ---REFERENCIA DE 1 A MUCHOS, TABLA MAESTRA('ESTACIONES') Y TABLA DETALLE ('BUSES')]
173 ALTER TABLE ocqe.ubicacion ADD CONSTRAINT un_muchos FOREIGN KEY (id_estacion)
REFERENCES ocqe.estaciones(id_estacion)
174 ON DELETE CASCADE ON UPDATE CASCADE;
175
176 -- [USO DE UPDATE]
177 select*from ocqe.estaciones;
178 select*from ocqe.ubicacion;
179 select*from ocqe.buses;
180
181
182 ALTER TABLE ocqe.ubicacion ADD CONSTRAINT borrado4 FOREIGN KEY (id_estacion)
183 REFERENCES ocqe.estaciones(id_estacion) ON DELETE SET NULL;
184
185
186 CREATE DOMAIN d_dni as INTEGER CHECK (VALUE >0);
187
188 ALTER DOMAIN d_dni DROP CONSTRAINT d_dni_check;
189
190
191

También podría gustarte