Creación de vistas y índices
luisdiazarevaloPráctica o problema21 de Junio de 2022
282 Palabras (2 Páginas)90 Visitas
Creación de vistas y índices
[pic 1]
[pic 2][pic 3]
DDL
TABLA ciudad
CREATE TABLE IF NOT EXISTS `ciudad` (
`codigo_ciudad` INT NOT NULL,
`nombre` VARCHAR(150) NOT NULL,
`pais` VARCHAR(45) NOT NULL,
`cantidad_farmacias` INT NULL DEFAULT NULL, INDEX
`nombreCiudad_idx` (`nombre`),
INDEX `cantidadFarm_idx` (`cantidad_farmacias`), INDEX
`pais_idx` (`pais`),
PRIMARY KEY (`codigo_ciudad`))
;
Tabla farmacia
CREATE TABLE IF NOT EXISTS `farmacia` (
`codigo_farmacia` INT NOT NULL,
`nombre` VARCHAR(150) NOT NULL,
INDEX `nombreFarmacia_idx` (`nombre`),
PRIMARY KEY (`codigo_farmacia`))
;
Tabla empleado
CREATE TABLE IF NOT EXISTS `empleado` (
`codigo_empleado` INT NOT NULL,
`nombre` VARCHAR(150) NOT NULL,
`sueldo` DOUBLE NOT NULL,
INDEX `nombreEmpleado_idx` (`nombre`), INDEX
`sueldoEmpl_idx` (`sueldo`),
PRIMARY KEY (`codigo_empleado`))
;
Tabla medicamento
CREATE TABLE IF NOT EXISTS `medicamento` (
`codigo_medicamento` INT NOT NULL,
`nombre` VARCHAR(150) NOT NULL,
`precio` DOUBLE NOT NULL,
`existencia_total` DOUBLE NULL DEFAULT NULL, INDEX
`precioMedicamento_idx` (`precio`),
INDEX `existenciaMedicamento_idx` (`existencia_total`), PRIMARY KEY (`codigo_medicamento`))
;
Tabla laboratorio
CREATE TABLE IF NOT EXISTS `laboratorio` (
`codigo_laboratorio` INT NOT NULL,
`nombre` VARCHAR(150) NOT NULL,
INDEX `nomreLab` (`nombre`), PRIMARY KEY (`codigo_laboratorio`))
;
Tabla monodroga
CREATE TABLE IF NOT EXISTS `monodroga` (
`codigo_monodroga` INT NOT NULL,
`nombre` VARCHAR(100) NOT NULL,
INDEX `nomreMonoDrg` (`nombre`), PRIMARY KEY (`codigo_monodroga`))
;
Tabla presentacion
CREATE TABLE IF NOT EXISTS `presentacion` (
`codigo_presentacion` INT NOT NULL,
`tipo` SET('Comprimido', 'Capsula', 'Polvo', 'Crema', 'Jarabe', 'Emplasto', 'Unguento', 'Ampolla', 'Colirio', 'Solucion', 'Locion') NOT NULL,
`volumen` DOUBLE NOT NULL, CHECK (`volumen`>0), PRIMARY KEY (`codigo_presentacion`))
;
Indices
CREATE INDEX existencia_total_idx ON medicamento (existencia_total);
CREATE INDEX nombreLab_idx ON laboratorio (nombre);
CREATE INDEX nombreemple_idx ON empleado (nombre); CREATE INDEX país_idx ON ciudad(pais);
CREATE INDEX precio_idx ON medicamento (precio);
CREATE INDEX nombreMonodr_idx ON monodroga (nombre); CREATE INDEX nombreciud_idx ON ciudad (nombre);
CREATE INDEX cant_farmacias_idx ON ciudad (cant_farmacias); CREATE INDEX nombreemple_idx ON empleado (nombre); CREATE INDEX país_idx ON ciudad(pais);
CREATE INDEX sueldo_idx ON empleado (sueldo);
CREATE INDEX precio_idx ON medicamento (precio);
Vistas
CREATE VIEW list_total_empleados SELECT c.nombre,
count (f.cant_farmacias), e.nombre,
count (e.nombre)
FROM ciudad c, farmacia f, empleado e,
LEFT OUTER JOIN farm_ciud fc ON (f.codigo_farmacia = fc.codigo_farmacia) LEFT OUTER JOIN farm_ciud cf ON (c.codigo_ciudad = cf.codigo_ciudad) LEFT OUTER JOIN empl_farm ef ON (f.codigo_farmacia = ef.codigo_ciudad) LEFT OUTER JOIN empl_farm fe ON (e.codigo_ciudad = fe.codigo_ciudad)
...