Sie sind auf Seite 1von 8

Trabalho Banco de Dados 2

Iraquitan Cordeiro Filho1


1

Instituto de Cincias Exatas e Naturais Universidade Federal do Par (UFPA)


Caixa Postal 66075-110 Belm PA Brasil
iraquitanfilho@gmail.com

17 de novembro de 11
Belm-PA

Este trabalho tem como objetivo a implantao do modelo entidaderelacionamento de uma populao, e a realizao da consulta Qual o endereo dos netos
de pessoas com mais de 50 anos cujo cnjuge tenham pais que moram em Belm?. Foi
criado o modelo entidade-relacionamento e inseridos alguns dados para teste.

1. Modelo Entidade-Relacionamento

2. Script do Modelo
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS,
FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL';
CREATE SCHEMA IF NOT EXISTS `Trab_BD2` DEFAULT CHARACTER SET
latin1 COLLATE latin1_swedish_ci ;
USE `Trab_BD2` ;
-- ------------------------------------------------------ Table `Trab_BD2`.`Cidade`
-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `Trab_BD2`.`Cidade` (
`CEP` INT NOT NULL ,
`nome` VARCHAR(45) NULL ,
PRIMARY KEY (`CEP`) )
ENGINE = InnoDB;

-- ------------------------------------------------------ Table `Trab_BD2`.`Pessoa`


-- ----------------------------------------------------CREATE TABLE IF NOT EXISTS `Trab_BD2`.`Pessoa` (
`idPessoa` INT NOT NULL ,
`nome` VARCHAR(45) NULL ,
`nascimento` DATE NULL ,
`conjuge` INT NULL ,
`pai` INT NULL ,
`mae` INT NULL ,
`numero` INT NULL ,
`rua` VARCHAR(45) NULL ,
`Cidade` INT NULL ,
PRIMARY KEY (`idPessoa`) ,
INDEX `fk_Pessoa_Pessoa` (`conjuge` ASC) ,
INDEX `fk_Pessoa_Pessoa1` (`pai` ASC) ,
INDEX `fk_Pessoa_Cidade1` (`Cidade` ASC) ,
INDEX `fk_Pessoa_Pessoa3` (`mae` ASC) ,
CONSTRAINT `fk_Pessoa_Pessoa`
FOREIGN KEY (`conjuge` )
REFERENCES `Trab_BD2`.`Pessoa` (`idPessoa` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Pessoa_Pessoa1`
FOREIGN KEY (`pai` )
REFERENCES `Trab_BD2`.`Pessoa` (`idPessoa` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Pessoa_Cidade1`
FOREIGN KEY (`Cidade` )
REFERENCES `Trab_BD2`.`Cidade` (`CEP` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Pessoa_Pessoa3`
FOREIGN KEY (`mae` )
REFERENCES `Trab_BD2`.`Pessoa` (`idPessoa` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- ------------------------------------------------------ Placeholder table for view `Trab_BD2`.`view1`
-- -----------------------------------------------------

CREATE TABLE IF NOT EXISTS `Trab_BD2`.`view1` (`nome` INT, `nascimento`


INT, `CURDATE()` INT, `idade` INT);
-- ------------------------------------------------------ View `Trab_BD2`.`view1`
-- ----------------------------------------------------DROP TABLE IF EXISTS `Trab_BD2`.`view1`;
USE `Trab_BD2`;
CREATE OR REPLACE VIEW `Trab_BD2`.`view1` AS
FROM nome, nascimento, CURDATE(),(YEAR(CURDATE())-YEAR(nascimento))(RIGHT(CURDATE(),5)<RIGHT(nascimento,5)) AS idade FROM pessoa order by
idade;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

3. Script de Inserts e Updates no Banco de Dados:


-- ------------------------------------------------------ Data for table `Trab_BD2`.`Cidade`
-- ----------------------------------------------------START TRANSACTION;
USE `Trab_BD2`;
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (1, 'Macap');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (2, 'Belm');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (3, 'Manaus');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (4, 'Boa Vista');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (5, 'Braslia');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (6, 'Rio Branco');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (7, 'Goiania');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (8, 'Palmas');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (9, 'Fortaleza');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (10, 'Natal');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (11, 'So Paulo');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (12, 'Rio de Janeiro');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (13, 'Porto Alegre');
INSERT INTO `Trab_BD2`.`Cidade` (`CEP`, `nome`) VALUES (14, 'Flores da Cunha');
COMMIT;
-- ------------------------------------------------------ Data for table `Trab_BD2`.`Pessoa`
-- ----------------------------------------------------START TRANSACTION;


USE `Trab_BD2`;
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (1, 'IRAQUITAN', '1989-06-13', 123, 'RUA ILHA DO ACAI', 1);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (2, 'DJENIFER', '1988-11-16', 123, 'RUA ILHA DO ACAI', 1);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (3, 'ADRIELE', '2009-12-03', 123, 'RUA ILHA DO ACAI', 1);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (4, 'ALINE', '2008-07-16', 123, 'RUA ILHA DO ACAI', 1);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (5, 'IRAQUITAN PAI', '1960-07-22', 358, 'RUA ACEZIO
GUEDES', 2);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (6, 'MARYUZA', '1966-05-17', 358, 'RUA ACEZIO GUEDES', 2);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (7, 'PAULO', '1964-11-15', 867, 'ESTRELA DE DAVI', 2);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (8, 'SORAIA', '1968-04-05', 867, 'ESTRELA DE DAVI', 2);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (9, 'KEVIN', '1996-04-26', 358, 'RUA ACEZIO GUEDES', 1);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (10, 'NAIR', '1923-10-22', 735, 'ANTONIO SIQUEIRA', 2);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (11, 'ROSA', '1930-08-14', 345, 'SANTA CLARA', 2);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (12, 'ANTONIO', '1925-02-01', 345, 'SANTA CLARA', 2);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (13, 'VOVO', '1920-09-11', 735, 'ANTONIO SIQUEIRA', 2);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (14, 'MARCOS', '1988-11-14', 890, 'RUA 1', 4);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (15, 'PEDRO', '2008-03-17', 890, 'RUA 1', 4);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (16, 'MAYARA', '1987-10-25', 890, 'RUA 1', 4);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (17, 'THIAGO', '2007-08-22', 890, 'RUA 1', 4);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (18, 'VINICIUS', '1958-06-12', 678, 'RUA 2', 6);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (19, 'JULIANNE', '1960-07-23', 678, 'RUA 2', 6);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (20, 'ANDRE', '1955-08-22', 567, 'RUA 3', 7);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (21, 'VANESSA', '1959-07-18', 567, 'RUA 3', 7);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (22, 'ANDERSON', '1935-12-25', 578, 'RUA 4', 3);

INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,


`Cidade`) VALUES (23, 'BIANCA', '1940-04-13', 578, 'RUA 4', 3);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (24, 'BRUNA', '1933-11-15', 234, 'RUA 5', 8);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (25, 'BRUNO', '1938-05-21', 234, 'RUA 5', 8);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (26, 'DANIELE', '1938-02-24', 987, 'RUA 6', 9);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (27, 'DANILO', '1940-07-11', 987, 'RUA 6', 9);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (28, 'FABIO', '1945-12-16', 543, 'RUA 7', 10);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (29, 'FERNANDA', '1947-10-22', 543, 'RUA 7', 10);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (30, 'MARCELA', '1928-01-01', 321, 'RUA 8', 1);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (31, 'VOVO MARCELA', '1925-06-10', 321, 'RUA 8', 1);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (32, 'VOVO DENI', '1940-09-11', 910, 'RUA 9', 14);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (33, 'VO DENI SUL', '1945-10-26', 910, 'RUA 9', 14);
INSERT INTO `Trab_BD2`.`Pessoa` (`idPessoa`, `nome`, `nascimento`, `numero`, `rua`,
`Cidade`) VALUES (34, 'STEFANI', '1995-01-24', 867, 'ESTRELA DE DAVI', 1);
COMMIT;
-- ------------------------------------------------------ Updatre for table `Trab_BD2`.`Pessoa`
-- ----------------------------------------------------START TRANSACTION;
USE `Trab_BD2`;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=2, `pai`=5, `mae`=6 WHERE
idPessoa=1;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=1, `pai`=7, `mae`=8 WHERE
idPessoa=2;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=NULL, `pai`=1, `mae`=2 WHERE
idPessoa=3;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=NULL, `pai`=1, `mae`=2 WHERE
idPessoa=4;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=6, `pai`=13, `mae`=10 WHERE
idPessoa=5;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=5, `pai`=31, `mae`=30 WHERE
idPessoa=6;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=8, `pai`=12, `mae`=11 WHERE
idPessoa=7;


UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=7, `pai`=32, `mae`=33 WHERE
idPessoa=8;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=NULL, `pai`=5, `mae`=6 WHERE
idPessoa=9;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=13, `pai`=NULL, `mae`=NULL WHERE
idPessoa=10;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=12, `pai`=NULL, `mae`=NULL WHERE
idPessoa=11;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=11, `pai`=NULL, `mae`=NULL WHERE
idPessoa=12;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=10, `pai`=NULL, `mae`=NULL WHERE
idPessoa=13;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=16, `pai`=NULL, `mae`=NULL WHERE
idPessoa=14;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=NULL, `pai`=14, `mae`=16 WHERE
idPessoa=15;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=14, `pai`=NULL, `mae`=NULL WHERE
idPessoa=16;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=NULL, `pai`=14, `mae`=16 WHERE
idPessoa=17;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=19, `pai`=22, `mae`=23 WHERE
idPessoa=18;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=18, `pai`=25, `mae`=24 WHERE
idPessoa=19;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=21, `pai`=27, `mae`=26 WHERE
idPessoa=20;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=20, `pai`=28, `mae`=29 WHERE
idPessoa=21;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=23, `pai`=NULL, `mae`=NULL WHERE
idPessoa=22;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=22, `pai`=NULL, `mae`=NULL WHERE
idPessoa=23;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=25, `pai`=NULL, `mae`=NULL WHERE
idPessoa=24;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=24, `pai`=NULL, `mae`=NULL WHERE
idPessoa=25;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=27, `pai`=NULL, `mae`=NULL WHERE
idPessoa=26;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=26, `pai`=NULL, `mae`=NULL WHERE
idPessoa=27;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=29, `pai`=NULL, `mae`=NULL WHERE
idPessoa=28;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=28, `pai`=NULL, `mae`=NULL WHERE
idPessoa=29;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=31, `pai`=NULL, `mae`=NULL WHERE
idPessoa=30;

UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=30, `pai`=NULL, `mae`=NULL WHERE


idPessoa=31;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=33, `pai`=NULL, `mae`=NULL WHERE
idPessoa=32;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=32, `pai`=NULL, `mae`=NULL WHERE
idPessoa=33;
UPDATE `Trab_BD2`.`Pessoa` SET `conjuge`=NULL, `pai`=7, `mae`=8 WHERE
idPessoa=34;

4. Consulta
SELECT neto.nome, neto.numero, neto.rua, cidadeneto.nome Cidade FROM Pessoa neto,
Pessoa pai, Pessoa mae, Pessoa avo1, Pessoa avo2, pessoa avo3, pessoa avo4, pessoa
conjuge, pessoa paic, pessoa maec, Cidade cidade, Cidade cidadeneto WHERE
neto.pai=pai.idPessoa AND neto.mae=mae.idPessoa AND pai.pai=avo1.idPessoa AND
pai.mae=avo2.idPessoa AND mae.pai=avo3.idPessoa AND mae.mae=avo4.idPessoa
AND (YEAR(CURDATE())-YEAR(avo1.nascimento))(RIGHT(CURDATE(),5)<RIGHT(avo1.nascimento,5))>50 AND (YEAR(CURDATE())YEAR(avo2.nascimento))-(RIGHT(CURDATE(),5)<RIGHT(avo2.nascimento,5))>50
AND (YEAR(CURDATE())-YEAR(avo3.nascimento))(RIGHT(CURDATE(),5)<RIGHT(avo3.nascimento,5))>50 AND (YEAR(CURDATE())YEAR(avo4.nascimento))-(RIGHT(CURDATE(),5)<RIGHT(avo4.nascimento,5))>50
AND neto.conjuge=conjuge.idPessoa AND conjuge.pai=paic.idPessoa AND
conjuge.mae=maec.idPessoa AND paic.cidade=cidade.CEP AND
maec.cidade=cidade.CEP AND cidade.CEP=2 AND neto.cidade=cidadeneto.CEP;

5. Concluso
possvel realizar essa consulta com o banco de dados apresentado, porm no uma
consulta trivial, uma consulta que envolve muitas operaes de lgebra relacional.
Portanto observou-se que uma aplicao complexa, apesar de no apresentar muitas
tabelas, mas sim muitos auto-relacionamentos.

Das könnte Ihnen auch gefallen