Sie sind auf Seite 1von 11

Universidad de las fuerzas Armadas ESPE

Nombre: Esteban Caiza, Polo Paredes, Denis Santamara


Materia: Tcnicas Avanzadas de Bases de Datos
Fecha: 02 de julio del 2015
Tema: Fragmentacin en PostgresSql
FRAGMENTACIN VERTICAL
Crearemos una base de datos con una tabla para llenarla de registros y
realizar la fragmentacin vertical, llamamos a la tabla fakenames.
CREATE TABLE fakenames(
number int NOT NULL PRIMARY KEY,
surname varchar(23) NOT NULL,
givenname varchar(20) NOT NULL,
nationalid varchar(20) NOT NULL,
westernunionmtcn char(10) NOT NULL,
moneygrammtcn char(8) NOT NULL,
streetaddress varchar(100) NOT NULL,
telephonenumber varchar(20) NOT NULL,
emailaddress varchar(100) NOT NULL,
birthday varchar(10) NOT NULL,
gender varchar(6) NOT NULL
);
Creacion de tablas y Reglas
para este ejemplo usaremos funciones las cuales PostgresSql no facilita
,para ello crearemos dos fragmentos el primero llamado FragmentoA que
se almacenara en una tabla y contiene los datos de
number,surname,givenname,nationalid y westerunionmtcn
el otro Fragmento ser llamado FragmentoB que contrendra los datos
restantes.

FRAGMENTO A

FRAGMENTO B

PostgresSQL permite la creacin de reglas y gracias a ellas logramos realizar


mas fcilmente la fragmentacin , en este caso cuando ingresemos datos lo
mismos iran a la tabla de fragcion que le corresponda

Como se ve se crearon las tablas y las reglas antes mencionadas en las


capturas de pantalla

Comprobacin
Ingresaremos 200 datos para verificar las reglas de fragmentacin.

Como se puede ver para el fragmentoA se insertaron los datos que


colocamos en la regla

De igual manera para el fragmento B

Entonces con esto queda comprobado que los la tabla fakenames quedo
fragmentada de forma vertical en dos fragmentos A y B

FRAGMENTACION VERTICAL
Creamos las tablas correspondientes a la columna que elegimos , en este
caso Sexo que seria para masculino y femenino
CREATE TABLE Clientes_Masculinos(
CHECK (gender='male' or gender='Male')
)INHERITS("fakenames");
CREATE TABLE Clientes_Femeninos(
CHECK (gender='female' or gender='Female')
)INHERITS("fakenames");
CREATE OR REPLACE RULE clientes_m_part AS
ON INSERT TO "fakenames" WHERE (gender='male' or gender='Male') DO
INSTEAD
INSERT INTO Clientes_Masculinos
VALUES(NEW.number,NEW.surname,NEW.givenname,NEW.nationalid,NEW.we
sternunionmtcn,NEW.moneygrammtcn,NEW.streetaddress,NEW.telephonenu
mber,NEW.emailaddress,NEW.birthday,NEW.gender);
CREATE OR REPLACE RULE clientes_f_part AS
ON INSERT TO "fakenames" WHERE (gender='female' or gender='Female')
DO INSTEAD
INSERT INTO Clientes_Femeninos
VALUES(NEW.number,NEW.surname,NEW.givenname,NEW.nationalid,NEW.we
sternunionmtcn,NEW.moneygrammtcn,NEW.streetaddress,NEW.telephonenu
mber,NEW.emailaddress,NEW.birthday,NEW.gender);
Comprobacion
Ingresamos datos, en este caso 200 y la table principal tendra 200 y sus
fragmentos tendran lo que les corresponda
Fakenames

Para Masculinos

Para femeninos

Como se ve entre las dos tablas clientes_femeninos y clientes_masculinos


dan un total de 200 que es lo que contiene la tabla Fakenames, asi queda
comprobado el fragcionamiento.

Se crean las reglas para el almacenamiento

FRAGMENTACION MIXTA

Consiste en una fragmentacin entre horizontal y vertical.


Para este ejemplo realizaremos una fragmentacin de nombre y apellido de
las personas con sexo femenino en una tabla llamada Mixta.
CREATE TABLE mixta (
number int NOT NULL,
surname varchar(23) NOT NULL,
givenname varchar(20) NOT NULL,
gender varchar(6) NOT NULL
);
CREATE OR REPLACE RULE mixta_rule AS
ON INSERT TO "fakenames" WHERE (gender='female' or gender='Female')
DO INSTEAD
INSERT INTO mixta
VALUES(NEW.number,NEW.surname,NEW.givenname,NEW.gender);
Comprobacion

Para Realizar la comprobacin hacemos un select y tambin contaremos las


filas

Biografia y links

http://www.postgresql.org/docs/9.1/static/sql-createfunction.html
http://repositorio.utn.edu.ec/bitstream/123456789/522/4/04%20ISC
%20151%20CAPITULO%20II.pdf

Das könnte Ihnen auch gefallen