Comunicação Digital – Elementos de TI
Introdução a Banco de Dadoscom exercícios de aplicação:
implementação e testes
Prof.: Sandro Rigo
Conceitos de Banco de dados
Roteiro:
• Revisão de conceitos básicos
• Caso de estudo: filmes
• Estrutura proposta em aula
• Implemementação
• Exercícios
Revisão de conceitos básicos
Dados:indicações de fatos que podem ser armazenados e tratados individualmente.
Base de dados: conjunto de dados relacionados entre si com alguma lógica particular.
Sistema Gerenciador de Banco de Dados (SGBD): aplicação integrada contendo funções necessárias para a criação, manutenção e gerência de bases de dados.
Revisão de conceitos básicos
cf. Matoso
Revisão de conceitos básicos
Componentes:
Nome do CDData do CDgêneronúmero de trilhasNome da banda
Nome da bandaComponentes da banda discografianotas
.........Nome do CDData do CDgêneronúmero de trilhasNome da banda
campo
registro
tabelas
chaveprimária
Chave estrangeira
Conceitos Básicos de Bancos de Dados
Campos (atributos): elementos unitários de um agrupamento de dados, representando atributos de entidade do mundo real
Registro (tupla): conjunto único de campos, representando entidade do mundo real Tabela : organização de campos e de registros
Chave: elemento (campo) usado na identificação de registros em tabelas, ou na geração de índices
Chave-primária: utilizada na identificação de registros em uma tabela
Chave-estrangeira: utilizada para indicação de relações entre tabelas
Linguagem de consulta
Permite:- a descrição de tabelas, com indicações de campos e tipo de dado para cada campo
- a aplicação de operações de álgebra relacional, como seleção, projeção ou junção.
Conceitos Básicos de Bancos de Dados
Linguagem de consulta
Caso de estudo:
http://www.imdb.com
Exercício:
Tratar a modelagem de um conjunto de tabelas e de operações para uma base de dados de filmes produzidos por alunos de um curso de comunicação digital
Resumo das propostas
Tabela“filmes”
Campo Tipo Nulo Padrão
id int(11) Não
nome varchar(80) Não
tipo int(11) Não 0
ano int(11) Não 0
duracao tinyint(4) Não 0
produtora int(11) Não 0
diretor int(11) Não 0
site varchar(160) Não
genero int(11) Não 0
roteirista int(11) Não 0
sinopse varchar(255) Não
cartaz int(11) Não 0
fotos int(11) Não 0
curiosidades varchar(200) Não
cenas int(11) Não 0
nota float Não 0
lancamento date Não 0000-00-00
professor_resp int(11) Não 0
classificacao tinyint(4) Não 0
justificativa varchar(120) Não
origem varchar(40) Não
Resumo das propostas
Tabelas“genero”
e
“tipo”
Campo Tipo Nulo Padrão
id int(11) Não
nome varchar(30) Não
observacoes varchar(255) Não
Campo Tipo Nulo Padrão
id int(11) Não
nome varchar(30) Não
obs varchar(255) Não
Resumo das propostas
tabela
“equipe”Campo Tipo Nulo Padrão
id int(11) Não
nome varchar(60) Não
nacionalidade varchar(60) Não
data_nascim date Não 0000-00-00
premios varchar(120) Não
naturalidade varchar(60) Não
mini_biografia varchar(255) Não
home_page varchar(120) Não
email varchar(120) Não
sexo char(1) Não
Resumo das propostas
tabela
“funcao”
Campo Tipo Nulo Padrão
id int(11) Não
nome varchar(60) Não
obs varchar(255) Não
Resumo das propostas
Tabelas de ligação
“filme-atores
Equipe-funcaoCampo Tipo Nulo Padrão
id_equipe int(11) Não 0
id_funcao int(11) Não 0
Campo Tipo Nulo Padrão
id_filme int(11) Não 0
id_atores int(11) Não 0
Resumo das propostas
Resumo das propostas
Possibilidades:• consulta de filmes por nome• consulta de filmes por diretor/atores/....• consulta de atores por filme• consulta de filmografia• acesso a cartaz/imagens/cenas• outras...
Implementação
• SGBD: MySql • interface web phpMyAdmin
Implementação Etapa 1: criação da base de dados
ImplementaçãoCREATE TABLE `filme` (`id` INT NOT NULL AUTO_INCREMENT ,`nome` VARCHAR( 80 ) NOT NULL ,`tipo` INT NOT NULL ,`ano` INT NOT NULL ,`duracao` TINYINT NOT NULL ,`produtora` INT NOT NULL ,`diretor` INT NOT NULL ,`site` VARCHAR( 160 ) NOT NULL ,`genero` INT NOT NULL ,`roteirista` INT NOT NULL ,`sinopse` VARCHAR( 255 ) NOT NULL ,`cartaz` INT NOT NULL ,`fotos` INT NOT NULL ,`curiosidades` VARCHAR( 200 ) NOT NULL ,`cenas` INT NOT NULL ,`nota` FLOAT NOT NULL ,`lancamento` DATE NOT NULL ,`professor_resp` INT NOT NULL ,`classificacao` TINYINT NOT NULL ,`justificativa` VARCHAR( 120 ) NOT NULL ,`origem` VARCHAR( 40 ) NOT NULL ,UNIQUE (`id` ));
Implementação Etapa 1: criação da base de dados
Implementação Etapa 1: criação da base de dados
Implementação
CREATE TABLE `genero` (`id` INT NOT NULL AUTO_INCREMENT ,`nome` VARCHAR( 30 ) NOT NULL ,`observacoes` VARCHAR( 255 ) NOT NULL ,PRIMARY KEY ( `id` ) );
CREATE TABLE `tipo` (`id` INT NOT NULL AUTO_INCREMENT ,`nome` VARCHAR( 30 ) NOT NULL ,`obs` VARCHAR( 255 ) NOT NULL ,PRIMARY KEY ( `id` ) );
CREATE TABLE `funcao` (`id` INT NOT NULL AUTO_INCREMENT ,`nome` VARCHAR( 60 ) NOT NULL ,`obs` VARCHAR( 255 ) NOT NULL ,PRIMARY KEY ( `id` ) );
Implementação Etapa 1: criação da base de dados
Implementação
CREATE TABLE `equipe` (`id` INT NOT NULL AUTO_INCREMENT ,`nome` VARCHAR( 60 ) NOT NULL ,`nacionalidade` VARCHAR( 60 ) NOT NULL ,`data_nascim` DATE NOT NULL ,`premios` VARCHAR( 120 ) NOT NULL ,`naturalidade` VARCHAR( 60 ) NOT NULL ,`mini_biografia` VARCHAR( 255 ) NOT NULL ,`home_page` VARCHAR( 120 ) NOT NULL ,`email` VARCHAR( 120 ) NOT NULL ,`sexo` CHAR( 1 ) NOT NULL ,PRIMARY KEY ( `id` ) );
Implementação Etapa 1: criação da base de dados
Implementação Etapa 1: criação da base de dados
Implementação Etapa 1: criação da base de dados
Implementação Etapa 2: inserção de dados
Implementação
INSERT INTO `tipo` ( `id` , `nome` , `obs` ) VALUES ('', 'curta', 'observações para o curta'), ('', 'longa', 'observações para o longa');
Implementação Etapa 3: consulta de dados
Implementação Etapa 3: consulta de dados
Implementação Etapa 3: consulta de dados
Implementação Etapa 4: edição de dados
Implementação
UPDATE `genero` SET `observacoes` = 'observações para o gênero comédia' WHERE `id` = '2' LIMIT 1 ;
Implementaçãocomando SQL: INSERT INTO `filme` ( `id` , `nome` , `tipo` , `ano` , `duracao` , `produtora` , `diretor` , `site` , `genero` , `roteirista` , `sinopse` , `cartaz` , `fotos` , `curiosidades` , `cenas` , `nota` , `lancamento` , `professor_resp` , `classificacao` , `justificativa` , `origem` ) VALUES ('', 'nome filme tres', '2', '2002', '120', '0', '4', 'site filme tres', '4', '2', 'sinopse', '0', '0', 'curiosidades', '0', '10', '2003-01-01', '0', '0', 'justificativa', 'brasileira'), ('', 'nome filme quatro', '2', '2005', '110', '0', '1', 'site', '4', '1', 'sinopse', '0', '0', 'curiosidades', '0', '0', '2205-02-02', '0', '0', 'justificativa', 'brasileiro');
Implementação ...mais consultas
Implementação ...mais consultas
Implementação ...mais consultas
Implementação ...mais consultas
Implementação
funcao
1 diretor de cena obs. para diretor
2 ator obs. para ator
3 roteirista obs. para roteirista
4 produtor obs.
5 diretor de arte obs.
6 diretor de fotografia obs.
gênero
1 drama observações para o gênero drama
2 comédia observações para o gênero comédia
3 aventura observações para o gênero aventura
4 musical observações para o gênero musical
tipo
1 curta observações para o curta
2 longa observações para o longa
equipe funcao
1 1
2 3
3 2
4 2
4 1
1 2
1 3
filme atores
1 3
1 4
2 3
2 4
3 3
3 1
4 3
4 4
4 1
Implementação ...mais consultas
Implementação
SELECT e.nome, f.nomeFROM equipe e, equipe_funcao ef, funcao fWHERE e.id = ef.id_equipeAND f.id = ef.id_funcao
Implementação ...mais consultas
Implementação
SELECT e.nome, f.nomeFROM equipe e, filme f, filme_atores faWHERE e.id = fa.id_atoresAND f.id = fa.id_filmeAND e.nome like 'nome 4'
Implementação ...mais consultas
Implementação ...mais consultas
Implementação
...
Implementação
Implementação-- phpMyAdmin SQL Dump-- version 2.6.1-rc1-- http://www.phpmyadmin.net-- -- Servidor: localhost-- Tempo de Generação: Abr 14, 2005 at 03:01 PM-- Versão do Servidor: 3.23.58-- Versão do PHP: 4.2.2-- -- Banco de Dados: `elti_filme`--
-- --------------------------------------------------------
-- -- Estrutura da tabela `equipe`--
CREATE TABLE `equipe` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(60) NOT NULL default '', `nacionalidade` varchar(60) NOT NULL default '', `data_nascim` date NOT NULL default '0000-00-00', `premios` varchar(120) NOT NULL default '', `naturalidade` varchar(60) NOT NULL default '', `mini_biografia` varchar(255) NOT NULL default '', `home_page` varchar(120) NOT NULL default '', `email` varchar(120) NOT NULL default '', `sexo` char(1) NOT NULL default '', PRIMARY KEY (`id`)) TYPE=MyISAM AUTO_INCREMENT=1 ;
-- -- Extraindo dados da tabela `equipe`--
-- --------------------------------------------------------
-- -- Estrutura da tabela `filme`--
CREATE TABLE `filme` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(80) NOT NULL default '', `tipo` int(11) NOT NULL default '0', `ano` int(11) NOT NULL default '0', `duracao` tinyint(4) NOT NULL default '0', `produtora` int(11) NOT NULL default '0', `diretor` int(11) NOT NULL default '0', `site` varchar(160) NOT NULL default '', `genero` int(11) NOT NULL default '0', `roteirista` int(11) NOT NULL default '0', `sinopse` varchar(255) NOT NULL default '', `cartaz` int(11) NOT NULL default '0', `fotos` int(11) NOT NULL default '0', `curiosidades` varchar(200) NOT NULL default '', `cenas` int(11) NOT NULL default '0', `nota` float NOT NULL default '0', `lancamento` date NOT NULL default '0000-00-00', `professor_resp` int(11) NOT NULL default '0', `classificacao` tinyint(4) NOT NULL default '0', `justificativa` varchar(120) NOT NULL default '', `origem` varchar(40) NOT NULL default '', UNIQUE KEY `id` (`id`)) TYPE=MyISAM AUTO_INCREMENT=1 ;
-- -- Extraindo dados da tabela `filme`--
-- --------------------------------------------------------
-- -- Estrutura da tabela `funcao`--
CREATE TABLE `funcao` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(60) NOT NULL default '', `obs` varchar(255) NOT NULL default '', PRIMARY KEY (`id`)) TYPE=MyISAM AUTO_INCREMENT=1 ;
-- -- Extraindo dados da tabela `funcao`--
-- --------------------------------------------------------
-- -- Estrutura da tabela `genero`--
CREATE TABLE `genero` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(30) NOT NULL default '', `observacoes` varchar(255) NOT NULL default '', PRIMARY KEY (`id`)) TYPE=MyISAM AUTO_INCREMENT=1 ;
-- -- Extraindo dados da tabela `genero`--
-- --------------------------------------------------------
-- -- Estrutura da tabela `imagens`--
CREATE TABLE `imagens` ( `id` int(11) NOT NULL auto_increment, `legenda` varchar(120) NOT NULL default '', `imagem` varchar(160) NOT NULL default '', `largura` int(11) NOT NULL default '0', `altura` int(11) NOT NULL default '0', `tamanho` int(11) NOT NULL default '0', `creditos` int(11) NOT NULL default '0', `formato` varchar(60) NOT NULL default '', PRIMARY KEY (`id`)) TYPE=MyISAM AUTO_INCREMENT=1 ;
-- -- Extraindo dados da tabela `imagens`--
-- --------------------------------------------------------
-- -- Estrutura da tabela `tipo`--
CREATE TABLE `tipo` ( `id` int(11) NOT NULL auto_increment, `nome` varchar(30) NOT NULL default '', `obs` varchar(255) NOT NULL default '', PRIMARY KEY (`id`)) TYPE=MyISAM AUTO_INCREMENT=1 ;
-- -- Extraindo dados da tabela `tipo`--
Implementação
<?xml version="1.0" encoding="iso-8859-1" ?><!---- phpMyAdmin XML Dump- version 2.6.1-rc1- http://www.phpmyadmin.net-- Servidor: localhost- Tempo de Generação: Abr 14, 2005 at 03:20 PM- Versão do Servidor: 3.23.58- Versão do PHP: 4.2.2-->
<!--- Banco de Dados: `elti_filme`--><elti_filme> <!-- Tabela equipe --> <equipe> <id>1</id> <nome>nome 1</nome> <nacionalidade>nacionalidade 1</nacionalidade> <data_nascim>1990-05-05</data_nascim> <premios>nenhum</premios> <naturalidade>nacionalidade 1</naturalidade> <mini_biografia>mini biografia de .....</mini_biografia> <home_page>http://www.home_page1</home_page> <email>[email protected]</email> <sexo>M</sexo> </equipe> <equipe> <id>2</id> <nome>nome 2</nome> <nacionalidade>nacionalidade 2</nacionalidade> <data_nascim>1970-06-06</data_nascim> <premios>prêmio tal</premios> <naturalidade>porto alegre / RS</naturalidade> <mini_biografia>biografia 2</mini_biografia> <home_page>http://www.home_page2</home_page> <email>[email protected]</email> <sexo>M</sexo> </equipe> <equipe> <id>3</id> <nome>nome 3</nome> <nacionalidade>brasileira</nacionalidade> <data_nascim>1980-07-07</data_nascim> <premios>prêmio tal</premios> <naturalidade>naturalidade</naturalidade> <mini_biografia>biografia</mini_biografia> <home_page>http://www.nonononono</home_page> <email>[email protected]</email> <sexo>F</sexo> </equipe> <equipe> <id>4</id> <nome>nome 4</nome> <nacionalidade>brasileira</nacionalidade> <data_nascim>1980-07-07</data_nascim> <premios>prêmio tal</premios> <naturalidade>naturalidade</naturalidade> <mini_biografia>biografia</mini_biografia> <home_page>http://www.servidor.tal</home_page> <email>[email protected]</email> <sexo>F</sexo> </equipe> <!-- Tabela filme --> <!-- Tabela funcao --> <funcao> <id>1</id> <nome>diretor de cena</nome> <obs>obs. para diretor</obs> </funcao> <funcao> <id>2</id> <nome>ator</nome> <obs>obs. para ator</obs> </funcao> <funcao> <id>3</id> <nome>roteirista</nome> <obs>obs. para roteirista</obs> </funcao> <funcao> <id>4</id> <nome>produtor</nome> <obs>obs.</obs> </funcao> <funcao> <id>5</id> <nome>diretor de arte</nome> <obs>obs.</obs> </funcao> <funcao> <id>6</id> <nome>diretor de fotografia</nome> <obs>obs.</obs> </funcao> <!-- Tabela genero --> <genero> <id>1</id> <nome>drama</nome> <observacoes>observações para o gênero drama</observacoes> </genero> <genero> <id>2</id> <nome>comédia</nome> <observacoes>observações para o gênero comédia</observacoes> </genero> <genero> <id>3</id> <nome>aventura</nome> <observacoes>observações para o gênero aventura</observacoes> </genero> <genero> <id>4</id> <nome>musical</nome> <observacoes>observações para o gênero musical</observacoes> </genero> <!-- Tabela imagens --> <!-- Tabela tipo --> <tipo> <id>1</id> <nome>curta</nome> <obs>observações para o curta</obs> </tipo> <tipo> <id>2</id> <nome>longa</nome> <obs>observações para o longa</obs> </tipo></elti_filme>