Universidad de las Fuerzas Armadas ESPE
Sede Latacunga
Integrantes:Jaime Pérez Curso: Sexto “A” Carrera: Software
Ana Sáncehz
Sebastián Soberón
NRC: 5263 Asignatura:Sistemas Fecha: 15/07/2021
Avanzados de Base de
Datos.
Ejercicio: Base de datos distribuidas de una tienda departamental
Considere el siguiente esquema conceptual global de una base de datos:
Empleado (idEmp, nombre, salario, idDepto, cargo, edad) (RANGO)
Departamento (idDepto, nombre, tipo) (LISTA)
Proveedor (idProv, nombre, ciudad, tipo) (LISTA)
Producto (idProd, idProv, idDepto, tipo, cantidad) (LISTA)
LineaFactura (idFactura, nroLinea, idProducto, cantida, precio, fecha) (RANGO)
Se desea fragmentar la base de datos y convertirla en una base de datos distribuida en
diversos nodos, considerando que cada departamento será un nodo. Los empleados están
distribuidos por departamentos y existirán aplicaciones de cualquier departamento que
necesitan consultar información de los empleados y productos.
Asuma que sólo existen tres departamentos: Deportes, Juguetería y Ropa; cuatro tipos de
cargos de empleados: Administrativo, Vendedor, Gerente y Técnico; y los proveedores son
de dos ciudades: Guadalajara y Monterrey.
Se solicita llenar las tablas con registros para facilitar la fragmentación.
Para la Creación de Tablas:
CREATE TABLE empleado
(
idEmp integer NOT NULL,
nombre text,
salario float4,
iddepto integer NOT NULL,
cargo text,
edad numeric
);
CREATE TABLE departamento
(
idDepto integer NOT NULL,
nombre text,
tipo text
) PARTITION BY LIST (tipo);
CREATE TABLE proveedor
(
idProv integer NOT NULL,
nombre text,
ciudad text,
tipo text
)PARTITION BY LIST (ciudad);
CREATE TABLE producto
(
idProd integer NOT NULL,
idProv integer NOT NULL,
idDepto integer NOT NULL,
tipo text,
cantidad numeric
);
CREATE TABLE LineaFactura
(
idFactura integer NOT NULL,
nroLinea numeric,
idProd integer NOT NULL,
cantidad numeric,
precio float4,
fecha date
);
Inserción de Datos en las tablas
INSERT INTO empleado VALUES ('Anita','1200','Administrativo','24');
INSERT INTO empleado VALUES ('Chevas','1500','Vendedor','20');
INSERT INTO empleado VALUES ('Lina','1000','G
INSERT INTO empleado VALUES ('Lina','1000','Gerente','30');
INSERT INTO empleado VALUES ('Luis','500','Tecnico','21');
Insertar Datos a las particiones
INSERT INTO empleado VALUES ('Anita','1200','Administrativo','24');
INSERT INTO empleado VALUES ('Chevas','1500','Vendedor','20');
INSERT INTO empleado VALUES ('Lina','1000','Gerente','30');
INSERT INTO empleado VALUES ('Luis','500','Tecnico','21');
INSERT INTO producto VALUES ('Carro','20');
INSERT INTO producto VALUES ('Avion','40');
INSERT INTO departamento VALUES ('Naka','Deportes');
INSERT INTO departamento VALUES ('Jogueyon','Jugueteria');
INSERT INTO departamento VALUES ('Adibos','Ropa')
Realizar las siguientes fragmentaciones:
1. Fragmentar de forma horizontal la tabla departamento por el tipo de departamento
(Deportes, Juguetería y Ropa).
CREATE TABLE tip_depa_deportes PARTITION OF departamento FOR
VALUES IN ('deportes');
CREATE TABLE tip_depa_jug PARTITION OF departamento FOR VALUES IN
('jugueteria');
CREATE TABLE tip_depa_ropa PARTITION OF departamento FOR VALUES IN
('ropa');
Creación de Particiones
CREATE TABLE empleado
(
idEmp serial,
nombre text,
salario float4,
iddepto serial,
cargo text,
edad numeric
)PARTITION BY RANGE(edad);
CREATE TABLE departamento
(
idDepto serial,
nombre text,
tipo text
) PARTITION BY LIST (tipo);
CREATE TABLE proveedor
(
idProv serial,
nombre text,
ciudad text,
tipo text
)PARTITION BY LIST (ciudad);
CREATE TABLE producto
(
idProd serial,
idProv serial,
idDepto serial,
tipo text,
cantidad numeric
)PARTITION BY LIST (ti
CREATE TABLE producto
(
idProd serial,
idProv serial,
idDepto serial,
tipo text,
cantidad numeric
)PARTITION BY LIST (tipo);
CREATE TABLE LineaFactura
(
idFactura serial,
idProd serial,
nroLinea numeric,
cantidad numeric,
precio float4,
fecha date
)PARTITION BY RANGE (precio,fecha);
2. Fragmentar de forma horizontal el proveedor por la ciudad (Guadalajara, Monterrey).
CREATE TABLE prov_city_gud PARTITION OF proveedor FOR VALUES IN ('Guadalajara');
CREATE TABLE prov_city_mon PARTITION OF proveedor FOR VALUES IN ('Monterrey');
4. Fragmentación de la línea Factura por:
- Facturas cuando el precio sea mayor a 10 USD y la fecha sea mayor a julio de 2021
CREATE TABLE public precio_mayor PARTITION OF public Lineafactura
FOR VALUES FROM ('2020-07-02') TO ('2020-07-03')
- Facturas cuando el precio sea menor a 10 USD y la fecha sea menor a julio de 2021
CREATE TABLE public precio_mayor PARTITION OF public Lineafactura
FOR VALUES FROM ('2021-06-02') TO ('2021-07-03')