Sie sind auf Seite 1von 6

Mario Takashi Uryu Junior

RA 9911153366
3 Semestre
Sistemas de Informao

Atividade Extra 2 Bimestre


1. Criem o Banco de Dados ProdutoraFilmes e definam
as tabelas abaixo:
Filme
- Codigo
- Nome
- Genero
- DataLancamento

FilmeArtista
- CodigoFilme
- CodigoArtista
- DataGravacao

Artista
-

Codigo
Nome

DataNascim
ento
-

PaisOrigem

Caracteristic
as

create database ProdutoraFilmes;


use ProdutoraFilmes;
create table Filme(
Codigo int not null auto_increment,
Nome varchar(30) not null,
Genero varchar(20),
DataLancamento timestamp,
constraint primary key (codigo) );
create table Artista(
Codigo int not null auto_increment,
Nome varchar(30),
Datanascimento date,
PaisOrigem varchar(30),
Caracteristicas varchar(100),
Genero varchar (20),
constraint Codigo2 primary key (Codigo) );
create table FilmeArtista(
CodigoFilme int,
CodigoArtista int,
DataGravacao timestamp,
constraint CodigoFilme2 foreign key (CodigoFilme) references Filme (Codigo),
constraint CodigoArtista2 foreign key(CodigoArtista) references Artista(Codigo) );

2. Crie uma Procedure para cada uma das tabelas,


que ir inserir e atualizar os respectivos
registros.
1 Tabela: Artista
create definer=`root`@`localhost` procedure `ProcArtista`(Codigo1 int, Nome1 varchar(30),
DataNascimento1 date, PaisOrigem1 varchar(30), Caracteristicas1 varchar(70), Genero1
varchar (20), Op1 char(1))
begin
if (Op1 = 'U' or Op1 ='u') then
update Artista set
Nome = Nome1,
DataNascimento = DataNascimento1,
PaisOrigem = PaisOrigem1,
Caracteristicas = Caracteristicas1,
Genero = Genero1
where
Codigo = Codigo1;
end if;
if (Op1 = 'I' or Op1 = 'i') then
insert into Artista (Nome, DataNascimento, PaisOrigem, Caracteristicas, Genero)
values (Nome1, DataNascimento1, PaisOrigem1, Caracteristicas1, Genero1);
end if;
end
2 Tabela: Filme
create definer=`root`@`localhost` procedure `ProcFilme`(Codigo1 int, Nome1 varchar(30),
Genero1 varchar(20), DataLancamento1 datetime, Op1 char(1))
begin
if (_op = 'U' or _op = 'u') then
update Filme set
nome = Nome1,
genero = Genero1,
DataLancamento = DataLancamento1
where
Codigo = Codigo1;
end if;
if (Op1 = 'I' or Op1 = 'i') then
insert into Filme (Nome, Genero, DataLancamento)
values (Nome1, Genero1, DataLancamento1);
end if;
end

3 Tabela: FilmeArtista
create definer=`root`@`localhost` procedure `ProcFilmeArtista`(CodigoFilme1 int,
CodigoArtista1 int)
begin
insert into FilmeArtista (CodigoFilme, CodigoArtista)
values (CodigoFilme1, CodigoArtista1);
end

3. Crie uma Procedure para cada uma das tabelas,


que ir apagar os registros das tabelas,
tomando por base a chave primria.
1 Tabela: Artista
delimiter $$
use `ProdutoraFilmes`$$
create procedure `ProcArtista1` (Codigo1 int)
begin
delete from FilmeArtista where CodigoArtista = Codigo1
delete from Artista where Codigo = Codigo1;
end
$$
delimiter;
2 Tabela: Filme
delimiter $$
use `ProdutoraFilmes`$$
create procedure `ProcFilme1` (Codigo1 int)
begin
delete from FilmeArtista where CodigoFilme = Codigo1;
delete from Filme where Codigo = Codigo1;
end
$$
delimiter;
3 Tabela: FilmeArtista
delimiter $$
use `ProdutoraFilmes`$$
create definer=`root`@`localhost` procedure `ProcFilmeArtista1`(CodigoFilme1 int,
CodigoArtista1 int)
begin
delete from Filmeartista where CodigoFilme = CodigoFilme1 and CodigoArtista =
CodigoArtista1;
end $$
delimiter ;

4. Crie uma View que exiba os Filmes


create or replace view `ViewFilmeSelect` as
select * from Filme;
;

5. Crie uma View que exiba os Artistas.


create or replace view `ViewArtistaSelect` as
select * from Artista;
;

6. Crie uma View que ir exibir o nome e gnero


dos Filmes, e o nome e pas dos Artistas que
participaram dos respectivos filmes.
create or replace view `ViewNGNPFilmes` as
select b.Nome, b.Genero, a.Nome, a.PaisOrigem
from FilmeArtista a
inner join Filme b on b.Codigo = a.CodigoFilme
inner join Artista c on c.Codigo = a.CodigoArtista
;

7. Crie duas novas tabelas, conforme diagramas abaixo:


HistoricoFilme

HistoricoArtista

HistoricoFilmeArtista

- DataAlteracao

- DataAlteracao

- DataAlteracao

- Codigo

- Codigo

- TipoAlteracao

- NomeAnterior

- NomeAnterior

- CodigoFilme

- NomeAtual

- NomeAtual

- CodigoArtista

- GeneroAnterior

- DataNascimentoAnterior

- DataGravacao

- GeneroAtual

-DataNascimentoAtual

- DataLancamentoAnterio - PaisOrigemAnterior
r
- PaisOrigemAtual
- DataLancamentoAtual
- CaracteristicasAnterior
- CaracteristicasAtual
- GeneroAnterior
- GeneroAtual
1 Tabela: HistoricoFilme
create table HistoricoFilme (
DataAlteracao timestamp,
Codigo int(11),
NomeAnterior varchar(30),
NomeAtual varchar(30),
GeneroAnterior varchar(20),
GeneroAtual varchar(20),
DataLancamentoanterior timestamp,
DataLancamentoatual timestamp,
constraint DataAlteracao1 primary key (DataAlteracao));
2 Tabela: HistoricoArtista
create table HistoricoArtista (
DataAlteracao timestamp,
Codigo int(11),
NomeAnterior varchar(30),
NomeAtual varchar(30),
DataNascimentoAnterior timestamp,
DataNascimentoAtual timestamp,
PaisOrigemanterior varchar(30),
PaisOrigematual varchar(30),
CaracteristicasAnterior varchar(70),
CaracteristicasAtual varchar(70),

GeneroAnterior varchar(20),
GeneroAtual varchar(20),
constraint DataAlteracao1 primary key (DataAlteracao));
3 Tabela: HistricoFilmeArtista
create table HistoricoFilmeArtista (
DataAlteracao timestamp,
TipoAlteracao char(1),
CodigoFilme int,
CodigoArtista int,
DataGravacao timestamp,
constraint DataAleracao1 primary key (DataAlteracao));

8. Crie uma Trigger que ser disparada quando ocorrer um


UPDATE na tabela Filme. Ela dever inserir na tabela
HistoricoFilme a data da alterao, o cdigo do filme e
tambm os dados anteriores a alterao e os dados aps
a alterao.
create definer=`root`@`localhost` trigger `ProdutoraFilmes`.`FilmeAfterUpdate` after update
on `Filme` for each row
begin
insert into HistoricoFilme (DataAlteracao, Codigo, NomeAnterior, NomeAtual, GeneroAnterior,
GeneroAtual, DataLancamentoAnterior, DataLancamentoAtual)
select now(), Codigo, old.Nome, new.Nome, old.Genero, new.Genero, old.DataLancamento,
new.DataLancamento
from Filme
where
Codigo = new.Codigo;
end

9. Crie uma Trigger que ser disparada quando ocorrer um


UPDATE na tabela Artista. Ela dever inserir na tabela
HistoricoArtista a data da alterao, o cdigo do artista
e tambm os dados anteriores a alterao e os dados
aps a alterao.
create definer=`root`@`localhost` trigger `ProdutoraFilmes`.`ArtistaAfterUpdate` after
update on `Artista` for each row
begin
insert into HistoricoArtista (DataAlteracao, Codigo, NomeAnterior, NomeAtual,
DataNascimentoAnterior, DataNascimentoAtual, PaisOrigemAnterior, PaisOrigemAtual,
CaracteristicasAnterior, CaracteristicasAtual, GeneroAnterior, GeneroAtual)
select now(), Codigo, old.Nome, new.Nome, old.DataNascimento, new.DataNascimento,
old.PaisOrigem, new.PaisOrigem, old.Caracteristicas, new.Caracteristicas, old.Genero,
new.Genero
from Artista
where
Codigo = new.Codigo;
end

10.
Crie uma Trigger que ser dispara quando ocorrer
um INSERT na tabela FilmeArtista. Ela dever inserir na
tabela HistoricoFilmeArtista a data da alterao, o tipo
de alterao com o valor I e os demais valores
inseridos.
create definer=`root`@`localhost` trigger `ProdutoraFilmes`.`FilmeArtistaAfterInsert` after
insert on `FilmeArtista` for each row
begin
insert into HistoricoFilmeArtista (DataAlteracao, TipoAlteracao, CodigoFilme, CodigoArtista,
DataGravacao)
select now(), 'I', new.CodigoFilme, new.CodigoArtista, new.DataGravacao from FilmeArtista
where
CodigoFilme = new.CodigoFilme and CodigoArtista = new.CodigoArtista;
end

11.
Crie uma Trigger que ser dispara quando ocorrer
um DELETE na tabela FilmeArtista. Ela dever inserir na
tabela HistoricoFilmeArtista a data da alterao, o tipo
de alterao com o valor D e os demais valores
apagados.
create definer=`root`@`localhost` trigger `ProdutoraFilmes`.`FilmeArtistaBeforeDelete` before
delete on `FilmeArtista` for each row
begin
insert into HistoricoFilmeArtista (DataAlteracao, TipoAlteracao, CodigoFilme, CodigoArtista,
DataGravacao)
select now(), 'D', old.CodigoFilme, old.CodigoArtista, old.DataGravacao from FilmeArtista
where
CodigoFilme = old.Codigofilme and CodigoArtista = old.CodigoArtista;
end

Das könnte Ihnen auch gefallen