Anda di halaman 1dari 5

AGREGACIONES

Se dan cuando una relacin de varios a varios tiene una tabla hija o tabla de
detalles.
En donde la agregacin ser el maestro y la(s) tabla(s) hija(s) sern el detalle.

Se tomar como ejemplo las relaciones y los detalles existentes en un matrimonio

El modelo anterior puede ser entendible, pero rompe la regla de que una relacin se
derive de otra relacin.
Por tanto para especificar de mejor manera se utiliza la agregacin.

Para modelar las agregaciones se sigue los mismos pasos del modelamiento de una
relacin de muchos a muchos. En donde la tabla intermedia tendr el nombre y los
atributos de la agregacin.

CREATE TABLE REGISTRO_CIVIL


(
ID_REG VARCHAR(3) PRIMARY KEY,
DIR_REG VARCHAR(10) NOT NULL,
TEL_REG VARCHAR(10) NOT NULL,
CIU_REG VARCHAR(10) NOT NULL
);

CREATE TABLE HOMBRE


(
CED_HOM VARCHAR(10) PRIMARY KEY,
NOM_HOM VARCHAR(10) NOT NULL,
APE_HOM VARCHAR(10) NOT NULL
);

CREATE TABLE MUJER


(
CED_MUJ VARCHAR(10) PRIMARY KEY,
NOM_MUJ VARCHAR(10) NOT NULL,
APE_MUJ VARCHAR(10) NOT NULL
);

CREATE TABLE MATRIMONIO


(
ID_MAT VARCHAR(3) PRIMARY KEY,
FEC_MAT DATE NOT NULL,
JUS_MAT VARCHAR(10) NOT NULL,
CED_HOM_CAS REFERENCES HOMBRe(CED_HOM),
CED_MUJ_CAS REFERENCES MUJER(CED_MUJ),
ID_REG_CAS REFERENCES REGISTRO_CIVIL(ID_REG)
);

CREATE TABLE HIJOS


(
ID_HIJ VARCHAR(10) PRIMARY KEY,
NOM_HIJ VARCHAR(10) NOT NULL,
APE_HIJ VARCHAR(10) NOT NULL,
ID_MAT_P REFERENCES MATRIMONIO(ID_MAT)
);

CREATE TABLE BIENES


(
ID_BIE VARCHAR(3) PRIMARY KEY,
NOM_BIE VARCHAR(10) NOT NULL,
VAL_BIE NUMBER NOT NULL,
ID_MAT_P REFERENCES MATRIMONIO(ID_MAT)
);

CREATE TABLE SESIONES_CONSEJERIA


(
NUM_SES NUMBER PRIMARY KEY,
FEC_SES DATE NOT NULL,
MOT_SES VARCHAR(15) NOT NULL,
ID_MAT_P REFERENCES MATRIMONIO(ID_MAT)
);

CREATE TABLE BIENES_AMH


(
ID_BIE VARCHAR(3) PRIMARY KEY,
NOM_BIE VARCHAR(15) NOT NULL,
VAL_BIE NUMBER NOT NULL,
CED_HOM_P REFERENCES HOMBRE(CED_HOM)
);

CREATE TABLE HIJOS_AMM


(
COD_HIJ VARCHAR(10) PRIMARY KEY,
NOM_HIJ VARCHAR(10) NOT NULL,
APE_HIJ VARCHAR(10) NOT NULL,
CED_MUJ_P REFERENCES MUJER(CED_MUJ)
);

CREATE TABLE EMPRESA_MODELOS


(
COD_EMP VARCHAR(3) PRIMARY KEY,
NOM_EMP VARCHAR(10) NOT NULL,
DIR_EMP VARCHAR(10) NOT NULL,
TEL_EMP VARCHAR(10) NOT NULL
);

CREATE TABLE CONTRATO


(
ID_CON VARCHAR(3) PRIMARY KEY,
FEC_INI DATE NOT NULL,
FEC_FIN DATE NOT NULL,
COD_EMP_CON REFERENCES EMPRESA_MODELOS(COD_EMP),
COD_MUJ_CON REFERENCES MUJER(CED_MUJ)
);

CREATE TABLE PRESENTACIONES


(
ID_PRE VARCHAR(3) PRIMARY KEY,
FEC_PRE DATE NOT NULL,
LUG_PRE DATE NOT NULL,
ID_CON_P REFERENCES CONTRATO(ID_CON)
);

INSERT INTO REGISTRO_CIVIL


VALUES('R01','FICOA','0987654321','AMBATO');
INSERT INTO HOMBRE
VALUES('1801','LUIS','SANCHEZ');

INSERT INTO HOMBRE


VALUES('1802','CARLOS','MERA');

INSERT INTO MUJER


VALUES('1803','CARMEN','PEREZ');

INSERT INTO MUJER


VALUES('1804','SANDRA','RIOS');

INSERT INTO MATRIMONIO


VALUES('M01','12/08/2015','J01','1801','1803','R01');

INSERT INTO MATRIMONIO


VALUES('M02','22/12/2016','J02','1802','1804','R01');

INSERT INTO MATRIMONIO


VALUES('M03','15/11/2017','J01','1801','1804','R01');

INSERT INTO MATRIMONIO


VALUES('M04','31/12/2017','J01','1802','1803','R01');

INSERT INTO HIJOS


VALUES('H01','ANA','SANCHEZ','M01');

INSERT INTO HIJOS


VALUES('H02','MARIA','MERA','M02');

INSERT INTO HIJOS


VALUES('H03','PEDRO','SANCHEZ','M01');

INSERT INTO HIJOS


VALUES('H04','SAUL','SANCHEZ','M03');

**********************************************************************
MOSTRAR EL NOMBRE Y APELLIDO DEL PAPA DE LA NIA ANA SANCHEZ.

SELECT NOM_HOM, APE_HOM


FROM HOMBRE
WHERE CED_HOM = (SELECT CED_HOM_CAS
FROM MATRIMONIO
WHERE ID_MAT = (SELECT ID_MAT_P
FROM HIJOS
WHERE NOM_HIJ='ANA'
AND APE_HIJ='SANCHEZ')
);

SELECT H.NOM_HOM,H.APE_HOM
FROM HOMBRE H,MATRIMONIO M, HIJOS J
WHERE J.NOM_HIJ = 'ANA'
AND J.APE_HIJ = 'SANCHEZ'
AND J.ID_MAT_P = M.ID_MAT
AND M.CED_HOM_CAS = H.CED_HOM;

*******************************************************
INSERT INTO BIENES
VALUES('B01','CASA',50000,'M01');

INSERT INTO BIENES


VALUES('B02','AUTO',10000,'M01');

INSERT INTO BIENES


VALUES('B03','CASA',60000,'M02');

INSERT INTO BIENES


VALUES('B04','TERRENO',40000,'M02');

INSERT INTO BIENES


VALUES('B05','TERRENO',100000,'M04');

INSERT INTO BIENES


VALUES('B06','ACCIONES',1200000,'M03');

*****************************************
MOSTRAR EL NOMBRE Y APELLIDO DEL ESPOSO DEL MATRIMONIO QUE NO TIENE BIENES

SELECT NOM_HOM,APE_HOM
FROM HOMBRE
WHERE CED_HOM = (SELECT CED_HOM_CAS
FROM MATRIMONIO
WHERE ID_MAT NOT IN (SELECT DISTINCT ID_MAT_P
FROM BIENES));
MOSTRAR EL NOMBRE Y APELLIDO DEL ESPOSO DEL MATRIMONIO QUE NO TIENE BIENES Y EL
CODIGO DEL MATRIMONIO

SELECT H.NOM_HOM,H.APE_HOM, ID_MAT


FROM HOMBRE H, MATRIMONIO M
WHERE H.CED_HOM = M.CED_HOM_CAS
AND M.ID_MAT NOT IN (SELECT DISTINCT ID_MAT_P
FROM BIENES);

*************************************************************************
INSERT INTO BIENES_AMH
VALUES('V01','AUTO',1000,'1801');

INSERT INTO BIENES_AMH


VALUES('V02','CASA',1000,'1802');

INSERT INTO BIENES_AMH


VALUES('V03','TERRENO',1000,'1802');

INSERT INTO BIENES_AMH


VALUES('V04','CASA',1000,'1801');

INSERT INTO BIENES_AMH


VALUES('V05','AUTO',1000,'1801');

***************************************
MOSTRAR LOS BIENES QUE HA TENIDO EL HOMBRE CON EL APELLIDO SANCHEZ ANTES DEL
MATRIMONIO Y LOS VIENES DESPUES DEL MATRIMONIO

SELECT *
FROM BIENES_AMH
WHERE CED_HOM_P = (SELECT CED_HOM
FROM HOMBRE
WHERE APE_HOM = 'SANCHEZ');

SELECT *
FROM BIENES
WHERE ID_MAT_P IN (SELECT ID_MAT
FROM MATRIMONIO
WHERE CED_HOM_CAS = (SELECT CED_HOM
FROM HOMBRE
WHERE APE_HOM = 'SANCHEZ'));

Anda mungkin juga menyukai