Comunicação Digital – Elementos de TI
Introdução a Banco de Dados
com 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 CD
Data do CD
gênero
número de trilhas
Nome da banda
.........
Nome do CD
Data do CD
gênero
número de trilhas
Nome da banda
chave
primária
Nome da banda
Componentes da banda
discografia
notas
campo
registro
tabelas
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
Conceitos Básicos de Bancos de Dados
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.
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
Campo
Tabela
“filmes”
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”
Campo
Tipo
Nulo
id
int(11)
Não
nome
varchar(30)
Não
observacoes
varchar(255)
Não
Padrão
e
Campo
Tipo
Nulo
“tipo”
id
int(11)
Não
nome
varchar(30)
Não
obs
varchar(255)
Não
Padrão
Resumo das propostas
tabela
“equipe”
Campo
Tipo
Nulo
id
int(11)
Não
nome
varchar(60)
Não
nacionalidade
varchar(60)
Não
data_nascim
date
Não
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
Padrão
0000-00-00
Resumo das propostas
tabela
“funcao”
Campo
Tipo
Nulo
id
int(11)
Não
nome
varchar(60)
Não
obs
varchar(255)
Não
Padrão
Resumo das propostas
Tabelas de ligação
“filme-atores
Campo
Tipo
Nulo
Padrão
id_filme
int(11)
Não
0
id_atores
int(11)
Não
0
Campo
Tipo
Nulo
Padrão
Equipe-funcao
id_equipe
int(11)
Não
0
id_funcao
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ção
CREATE 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ção
comando 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
2
3
4
5
6
diretor de cena
ator
roteirista
produtor
diretor de arte
diretor de fotografia
obs. para diretor
obs. para ator
obs. para roteirista
obs.
obs.
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.nome
FROM equipe e, equipe_funcao ef, funcao f
WHERE e.id = ef.id_equipe
AND f.id = ef.id_funcao
Implementação
...mais consultas
Implementação
SELECT e.nome, f.nome
FROM equipe e, filme f, filme_atores fa
WHERE e.id = fa.id_atores
AND f.id = fa.id_filme
AND 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`
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`
Download

semana_03