Está en la página 1de 6

UNIVERSIDAD REGIONAL AUTNOMA

DE LOS NDES
UNIANDES IBARRA
FACULTAD DE SISTEMAS
MERCANTILES
CARRERA DE SISTEMAS

DISTRIBUCION DE DATOS
NIVEL: SEXTO SISTEMAS
TEMA: FRAGMENTACION HORIZONTAL
Y VERTICAL
ESTUDIANTE:
CHRISTIAN SUREZ
ALEXIS MARQUEZ
DOCENTE:

ING. RITA DAZ

IBARRA
2014 2015
FECHA: 17/05/2015

OBJETIVOS: Comprender el uso de la fragmentacin horizontal y vertical en


una base de datos.
BASE DE DATOS EMPRESA
--EMPLEADO
CREATE TABLE empleado
(
nombre text,
apellido1 text,
apellido2 text,
dni character varying(10) NOT NULL,
fecha_nac date,
direccion text,
sexo character(1),
sueldo numeric,
superdni character varying(10),
dno numeric,
CONSTRAINT empleado_pkey PRIMARY KEY (dni),
CONSTRAINT empleado_dno_fkey FOREIGN KEY (dno)
REFERENCES departamento (numero_dpto) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT empleado_superdni_fkey FOREIGN KEY (superdni)
REFERENCES empleado (dni) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE empleado
OWNER TO postgres;

--DEPARTAMENTO
-- Table: departamento
-- DROP TABLE departamento;
CREATE TABLE departamento
(
nombre_dpto text,
numero_dpto numeric NOT NULL,
dni_director character varying(10),
fecha_ingreso_director date,
CONSTRAINT departamento_pkey PRIMARY KEY (numero_dpto),
CONSTRAINT departamento_dni_director_fkey FOREIGN KEY (dni_director)
REFERENCES empleado (dni) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE departamento
OWNER TO postgres;

--LOCALIZACIONES DEPARTAMENTO

CREATE TABLE localizaciones_dpto


(
numero_dpto numeric NOT NULL,
ubicacion_dpto text,
id_localizacion serial NOT NULL,
CONSTRAINT localizaciones_dpto_pkey PRIMARY KEY (id_localizacion),
CONSTRAINT localizaciones_dpto_numero_dpto_fkey FOREIGN KEY (numero_dpto)
REFERENCES departamento (numero_dpto) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE localizaciones_dpto
OWNER TO postgres;

--PROYECTO
CREATE TABLE proyecto
(
nombre_proyecto text,
num_proyecto numeric NOT NULL,
ubicacion_proyecto text,
num_dpto_proyecto numeric,
CONSTRAINT proyecto_pkey PRIMARY KEY (num_proyecto),
CONSTRAINT proyecto_num_dpto_proyecto_fkey FOREIGN KEY (num_dpto_proyecto)
REFERENCES departamento (numero_dpto) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE proyecto
OWNER TO postgres;

--SUBORDINADO
CREATE TABLE subordinado
(
dni_empleado character varying(10) NOT NULL,
nomb_subordinado text,
sexo character(1),
fecha_nac date,
relacion text,
id_subordinado serial NOT NULL,
CONSTRAINT subordinado_pkey PRIMARY KEY (id_subordinado),
CONSTRAINT subordinado_dni_empleado_fkey FOREIGN KEY (dni_empleado)
REFERENCES empleado (dni) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE subordinado
OWNER TO postgres;

--TRABAJA EN
CREATE TABLE trabaja_en

(
dni_empleado character varying(10) NOT NULL,
num_proy numeric,
horas double precision,
id_trabaja_en serial NOT NULL,
CONSTRAINT trabaja_en_pkey PRIMARY KEY (id_trabaja_en),
CONSTRAINT trabaja_en_dni_empleado_fkey FOREIGN KEY (dni_empleado)
REFERENCES empleado (dni) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION,
CONSTRAINT trabaja_en_num_proy_fkey FOREIGN KEY (num_proy)
REFERENCES proyecto (num_proyecto) MATCH SIMPLE
ON UPDATE NO ACTION ON DELETE NO ACTION
)
WITH (
OIDS=FALSE
);
ALTER TABLE trabaja_en
OWNER TO postgres;

EMPLEADOS DEPARTAMENTO 5
CREATE TABLE empl_dep_5
(
nombre text,
apellido1 text,
apellido2 text,
dni character varying(10) NOT NULL,
sueldo numeric,
superdni character varying(10),
dno numeric,
CONSTRAINT empl_dep_5_pkey PRIMARY KEY (dni)
)
WITH (
OIDS=FALSE
);
ALTER TABLE empl_dep_5
OWNER TO postgres;

Creacin de la funcin que permite guardar fragmentos VERTICALES de la tabla


principal en sus respectivas tablas Y Creacion del trigger que permite la ejecucin
de la funcin fragmentadora
CREATE OR REPLACE FUNCTION func_vertical_empl_5()
RETURNS trigger AS
$funcion$
begin
if new.dni is not null and new.dno=5 then
insert into empl_dep_5(nombre, apellido1, apellido2, dni, sueldo, superdni, dno) values
(new.nombre, new.apellido1, new.apellido2, new.dni, new.sueldo, new.superdni, new.dno);
end if;
return new;
end
$funcion$ language plpgsql;
CREATE TRIGGER tgr_vertical
BEFORE INSERT
ON empleado
FOR EACH ROW
EXECUTE PROCEDURE func_vertical_empl_5();

Creacin de la funcin que permite guardar fragmentos HORIZONTALES de la


tabla principal en sus respectivas tablas Y Creacion del trigger que permite la
ejecucin de la funcin fragmentadora
CREATE TABLE departamentos_6(
) INHERITS ("departamento");
CREATE OR REPLACE FUNCTION func_dep_6()
RETURNS trigger AS
$funcion$
begin
if new.numero_dpto is not null and new.numero_dpto=6 then
INSERT INTO departamentos_6 VALUES (new.nombre_dpto, new.numero_dpto,
new.dni_director, new.fecha_ingreso_director);
end if;
return new;
end
$funcion$ language plpgsql;
CREATE TRIGGER tgr_horizontal_dept_6
BEFORE INSERT
ON departamento
FOR EACH ROW

EXECUTE PROCEDURE func_dep_6();

Creacin de la tabla localizacin departamentos 5


CREATE TABLE dep_5_locs
(
numero_dpto numeric,
ubicacion text
)
WITH (
OIDS=FALSE
);
ALTER TABLE dep_5_locs
OWNER TO postgres;

Creacin de la funcin que permite guardar fragmentos VERTICALES de la tabla


principal en sus respectivas tablas Y Creacion del trigger que permite la ejecucin
de la funcin fragmentadora
CREATE OR REPLACE FUNCTION func_loc_dep_5()
RETURNS trigger AS
$funcion$
begin
if new.numero_dpto is not null and new.numero_dpto=5 then
INSERT INTO dep_5_locs VALUES (new.numero_dpto, new.ubicacion_dpto);
end if;
return new;
end
$funcion$ language plpgsql;
CREATE TRIGGER tgr_vertical_loc_dep_5
BEFORE INSERT
ON localizaciones_dpto
FOR EACH ROW
EXECUTE PROCEDURE func_loc_dep_5();

Creacion de la tabla proyectos 5


CREATE TABLE proyectos_5
(
-- Inherited from table proyecto:
-- Inherited from table proyecto:
-- Inherited from table proyecto:
-- Inherited from table proyecto:
)
INHERITS (proyecto)
WITH (
OIDS=FALSE
);
ALTER TABLE proyectos_5
OWNER TO postgres;

nombre_proyecto text,
num_proyecto numeric NOT NULL,
ubicacion_proyecto text,
num_dpto_proyecto numeric

Creacin de la funcin que permite guardar fragmentos horizontal de la tabla


principal en sus respectivas tablas Y Creacion del trigger que permite la ejecucin
de la funcin fragmentadora
CREATE OR REPLACE FUNCTION func_proy_5()
RETURNS trigger AS
$funcion$
begin
if new.num_proyecto is not null and new.num_proyecto=5 then
INSERT INTO proyectos_5 VALUES (new.nombre_proyecto, new.num_proyecto,
new.ubicacion_proyecto, new.num_dpto_proyecto);
end if;
return new;
end
$funcion$ language plpgsql;
CREATE TRIGGER tgr_horizontal_proyecto_5
BEFORE INSERT
ON proyecto
FOR EACH ROW
EXECUTE PROCEDURE func_proy_5();

CONCLUSIN: La fragmentacin horizontal se realiza sobre las tuplas de la


relacin empleando los predicados definidos en dicha relacin mientras que
la fragmentacin vertical
RECOMENDACIN: Se recomienda realizar fragmentacin de base de
datos para poder particionar la informacin y de esta manera tener mayor
disponibilidad de la informacin.
BIBLIOGRAFA: Clases impartidas por la Ing. Rita Daz.

También podría gustarte