You are on page 1of 245

Disciplina:

Banco de Dados

AULA 00

Objetivo, conteúdo e material de apoio

Edmilson Campos, Prof.


http://www3.ifrn.edu.br/~edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn




2 Edmilson Campos (edmilson.campos@ifrn.edu.br)




»
»
»

»
»

3 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
»

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
»
»
»
»
»
»

5 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
»
»
»
»
»
»
»

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)




7 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1.

2.

3.

4.

5.

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)


6.

7.

8.

9.

10.

9 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»

» http://www3.ifrn.edu.br/~edmilsoncampos/

»

10 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 01

Dados e Informação; Conceitos de Banco de Dados; SGBD.

Edmilson Campos, Prof.


http://www3.ifrn.edu.br/~edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn








2 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Aumento do Maiores
volume de dificuldades
informação de gestão

Aparecimento das Bases


de Dados
3 Edmilson Campos (edmilson.campos@ifrn.edu.br)


»

»
»

DADOS PROCESSAMENTO INFORMAÇÃO

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
»



5 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»


»


6 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»

7 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
»
»
»

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
»

9 Edmilson Campos (edmilson.campos@ifrn.edu.br)


10 Edmilson Campos (edmilson.campos@ifrn.edu.br)

»

»
»
»

11 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»


»
»


»

12 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»


13 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Modelo Modelo Modelo
conceitual lógico físico


»

»


»

14 Edmilson Campos (edmilson.campos@ifrn.edu.br)
Modelo Modelo Modelo
conceitual lógico físico

15 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Modelo Modelo Modelo
conceitual lógico físico



»
»

16 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Modelo Modelo Modelo
conceitual lógico físico


TipoDeProduto(CodTipoProd,DescrTipoProd)
Produto(CodProd,DescrProd,PrecoProd,CodTipoProd)
CodTipoProd referencia TipoDeProduto

17 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Modelo Modelo Modelo
conceitual lógico físico

»


18 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
»

19 Edmilson Campos (edmilson.campos@ifrn.edu.br)


20 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 02

Abordagem
Modelo Conceitual

Adaptado dos slides do Livro Projeto de Banco de Dados, v. 4 de ©Carlos A. Heuser

Edmilson Campos, Prof.


http://www3.ifrn.edu.br/~edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn
Abordagem Entidade-Relacionamento




»

»

2 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Conceitos centrais da abordagem ER




3 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Entidade


»

»


»

»

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Entidade – representação diagramática

PESSOA

Nome da
entidade

5 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Propriedades de entidades


»
»
»

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Relacionamento – conceito e representação

DEPARTAMENTO LOTAÇÃO EMPREGADO

7 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Auto relacionamento

PESSOA

CASAMENTO

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Papel no relacionamento

PESSOA

marido esposa

CASAMENTO papel no
relacionamento

9 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Papel no relacionamento

»

DEPARTAMENTO LOTAÇÃO PESSOA

10
10 ©Carlos A. Heuser
Auto-relacionamento diagrama de ocorrências

p3 p7
p1
PESSOA p6 p8
p2 p4 p5
marido
marido
marido esposa esposa
esposa
CASAMENTO
p1,p3
p6,p8

11 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Cardinalidade de relacionamentos

»


»
»

12 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Cardinalidade máxima - valores

»


»
»

13 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Cardinalidade máxima - DER

DEPARTAMENTO LOTAÇÃO EMPREGADO


1 n

expressa
expressa queque
a umanão há um limite
ocorrência superior para
de EMPREGADO
o número
(entidade de ocorrências
do lado oposto de
da anotação)
pode estar associada no
EMPREGADO máximo uma
associadas a
(“1”) ocorrência
uma de DEPARTAMENTO
ocorrência de
DEPARTAMENTO

14 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Classificação de relacionamentos


»


»
»
»

15 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Relacionamentos 1:1

EMPREGADO

PESSOA 1
1 1
marido esposa ALOCAÇÃO
CASAMENTO
1
MESA

16 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Relacionamentos 1:n

ALUNO n INSCRIÇÃO 1 CURSO

EMPREGADO 1 n DEPENDENTE

Nomenclatura:
• uso de verbos
• entidades dão o nome

17 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Relacionamentos 1:n

EMPREGADO

supervisor supervisionado
1 n
SUPERVISÃO

18 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Relacionamentos n:n

ENGENHEIRO n ALOCAÇÃO n PROJETO

MÉDICO n CONSULTA n PACIENTE

n n
PEÇA CAPACIDADE FORNECEDOR

19 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Relacionamentos n:n

PRODUTO

composto componente
n n
COMPOSIÇÃO

20 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Relacionamento ternário

CIDADE DISTRIBUIDOR

n 1
A cardinalidade “1”
DISTRIBUIÇÃO refere-se a um par
(cidade, fornecedor)
n

PRODUTO

21 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Cardinalidade mínima

»
»

»
»

22 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Cardinalidade mínima - DER
e1 e3
EMPREGADO e2 e4

(0,1)

e1,m1 e3,m6 e4,m4


cardinalidadeALOCAÇÃO
e2,m2
mínima
(1,1)

m1 m4 m6
MESA
m3 m5
m2

23 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Exemplos de entidades e relacionamentos
PRÉ-REQUISTO

liberada liberadora
(0,n) (0,n)
DEPARTAMENTO RESPONSÁVEL DISCIPLINA
(1,1) (0,n)
(0,n)
DISCIPLINA
-CURSO

(0,n)
(0,n) (1,1)
ALUNO INSCRIÇÃO CURSO

24 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Atributo

PROJETO

tipo
código
nome

25 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Atributos com cardinalidade

»

»


»

»

26 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Atributo com cardinalidade

CLIENTE CLIENTE

telefone (0,n) telefone (0,n)


código código
atributo
nome nome opcional
atributo e multivalorado
obrigatório
e monovalorado
(1,1) é o default

27 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Atributo em relacionamento
(1,n) (0,n)
ENGENHEIRO ATUAÇÃO PROJETO

Código Nome Função Código Título

nº de parcelas

(0,1) (0,n)
FINANCEIRA FINANCIAMENTO VENDA

taxa de juros

28 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Identificador de entidade

código capacidade
PESSOA nome PRATELEIRA número do corredor
endereço número da prateleira

29 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Relacionamento identificador

número de
código nome sequência nome

(1,1) (0,n)
EMPREGADO DEPENDENTE

Observar a linha
entidade fraca
mais densa

30 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Relacionamento identificador (recursão)
GRUPO código

(1,1)

(0,n)

EMPRESA número da
empresa
(1,1)

(0,n)

FILIAL número da
filial

31 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Identificador de relacionamento

n n
ENGENHEIRO ALOCAÇÃO PROJETO

32 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Relacionamento com atributo identificador

(1,n) (0,n)
MÉDICO CONSULTA PACIENTE

data/hora

33 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Generalização/especialização

»

(1,1) (0,n) nome


FILIAL CLIENTE
código
Símbolo da Entidade
Identificador
genérica
somente na
generalização-
especialização entidade genérica

Entidade
especializada
PESSOA PESSOA CGC
Herda as sexo
FÍSICA JURÍDICA tipo de
propriedades da CIC organização
entidade genérica

34 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Generalização/especialização (recursão)

VEÍCULO Identificador de
veículo definido aqui

VEÍCULO VEÍCULO
TERRESTRE AQUÁTICO

Herança
múltipla

AUTOMÓVEL VEÍCULO ANFÍBIO BARCO

35 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Generalização/especialização (recursão)

»

VEÍCULO VEÍCULO
TERRESTRE AQUÁTICO
Qual seria o
identificador desta
entidade?

AUTOMÓVEL VEÍCULO ANFÍBIO BARCO

36 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Especialização total

nome
CLIENTE
código

Indica que todo CLIENTE é


t ou PESSOA FÍSICA
ou PESSOA JURíDICA

PESSOA PESSOA
FÍSICA JURÍDICA

CIC sexo CGC tipo de


organização

37 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Especialização parcial

necessário em
especialização FUNCIONÁRIO
parcial
tipo de indica que nem todo
funcionário p FUNCIONÁRIO é
MOTORISTA ou
SECRETÁRIA

MOTORISTA SECRETÁRIA

38 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Especialização não exclusiva (compartilhada)

Uma instância de
PESSOA pode aparecer
PESSOA em mais de uma de suas
especializações

PROFESSOR FUNCIONÁRIO ALUNO

39 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Entidade associativa

»

n n
MÉDICO CONSULTA PACIENTE

40 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Incluindo o relacionamento de PRESCRIÇÃO
n n
MÉDICO CONSULTA PACIENTE

PRESCRIÇÃO liga
com quem?
n
PRESCRIÇÃO

MEDICAMENTO

41 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Substituindo relacionamento por entidade
MÉDICO PACIENTE

(1,1) (1,1)

n n

CONSULTA

n
PRESCRIÇÃO

MEDICAMENTO

42 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Entidade associativa

n n
MÉDICO CONSULTA PACIENTE

entidade
n associativa

PRESCRIÇÃO

MEDICAMENTO

43 Edmilson Campos (edmilson.campos@ifrn.edu.br)


44 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 03

Abordagem
Modelo Lógico

Adaptado dos slides do Livro Projeto de Banco de Dados, v. 4 de ©Carlos A. Heuser

Edmilson Campos, Prof.


http://www3.ifrn.edu.br/~edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn
Abordagem Relacional



»

2 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Composição de um Banco de Dados Relacional

»



»

3 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Tabela - conceitos
▪ nome da tabela

» tabela ou relação
coluna ou atributo

CodigoEmp Nome CodigoDepto CategFuncional


linha ou tupla
E5 Souza D1 C5
E3 Santos D2 C5
E2 Silva D1 C2
E1 Soares D1 —

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Tabela - conceitos
▪ nome de campo
» ou
nome de atributo

CodigoEmp Nome CodigoDepto


valor de campo CategoriaFuncional
E5 Souza D1ou C5
valor de atributo
E3 Santos D2 C5
E2 Silva D1 C2
E1 Soares D1 —

5 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Terminologias
Profissional Acadêmica
Tabela Relação
Linha Tupla
Coluna Atributo
Valor de campo Valor de atributo

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Características de tabelas


»
»

7 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Acesso a tabelas



»
»

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Chave


»
»
»

9 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Chave primária

10 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Chave primária

CodigoEmp NoDepen Nome Tipo DataNasc
E1 1 João Filho 12/12/91
E1 2 Maria Esposa 01/01/50
E2 1 Ana Esposa 05/11/55
E6 1 Paula Esposa 04/07/60
E6 2 José Filho 03/02/85

Chave primária Não


Nãoééchave
chaveprimária
primária

11 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Chave estrangeira

12 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Chave estrangeira
▪ Chave primária
CodigoDepto NomeDepto
D1 Compras
D2 Engenharia
D3 Vendas
Emp.CodigoDepto é uma chave estrangeira
em relação a tabela Depto
▪ chave estrangeira
CodigoEmp Nome CodigoDepto CategoriaFuncional CPF
E1 Souza D1 — 132.121.331-20
E2 Santos D2 C5 891.221.111-11
E3 Silva D2 C5 341.511.775-45
E5 Soares D1 C2 631.692.754-88

Chave primária
13 Edmilson Campos (edmilson.campos@ifrn.edu.br)
Chave estrangeira: Validação pelo SGBD
1.

2.
»

3.

14 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Chave estrangeira na mesma tabela

Chave primária chave estrangeira
CódigoEmp Nome CodigoDepto CodigoEmpGerente
E5 Souza D1 —
E3 Santos D2 E5
E2 Silva D1 E5
E1 Soares D1 E2

chave estrangeira
referencia a chave
primária da própria
tabela

15 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Chave alternativa ou única (SQL)

16 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Chave alternativa

CodigoEmp Nome CodigoDepto CategFuncional CPF


E1 Souza D1 - 132.121.331-20
E2 Santos D2 C5 891.221.111-11
E3 Silva D2 C5 341.511.775-45
E5 Soares D1 C2 631.692.754-88

Chave primária chave alternativa

17 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Domínio de coluna

18 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Valor vazio


»


»

19 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Restrições de integridade

»

»

20 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Restrições de integridade básicas





»

21 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Restrições de integridade semânticas


»

22 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Especificação de banco de dados relacional

»
»
»

23 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Exemplo de esquema de modelo relacional
resumido
Emp (CodigoEmp,Nome,CodigoDepto,CategFuncional,CIC)
CodigoDepto referencia Dept

Dept (CodigoDepto,Nome) especificação de


chave estrangeira
chave primária
sublinhada

24 Edmilson Campos (edmilson.campos@ifrn.edu.br)


25 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 04

Transformação entre modelos


Orientações gerais à transformação do modelo conceitual para o lógico

Adaptado dos slides do Livro Projeto de Banco de Dados, v. 4 de ©Carlos A. Heuser

Edmilson Campos, Prof.


http://www3.ifrn.edu.br/~edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn
Modelo ER
(conceitual)

Engenharia Ciclo de
reversa de Projeto lógico
reengenharia de BD relacional
BD relacional de BD

Modelo relacional
(lógico)

2 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Modelo ER
(nível conceitual)

Transformação
Conhecimento
sobre a aplicação
ER para
relacional

Refinamento Modelo Relacional


do modelo (nível lógico)
relacional

3 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
»

»

»
»

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)




5 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Junção

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Minimizar junções


7 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Chave e índice

»


»

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Diminuir o número de chaves


»
Cliente (CodCliente,Nome,NomeContato,Endereço,Telefone)

»
Cliente (CodCliente,Nome,NomeContato)
ClienteEnder (CodCliente,Endereço,Telefone)
CodCliente referencia Cliente

9 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Campos opcionais


10 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Evitar campos opcionais

11 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Passos da transformação ER para relacional


12 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação inicial de entidades


»

13 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação de entidade

Data de admissão Código


PESSOA Nome
Data de nascimento Endereço

Pessoa (CodigoPess,Nome,Endereço,DataNasc,DataAdm)

14 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Tradução de entidade relacionamento identificador

número
código nome sequência nome

(1,1) (0,n)
EMPREGADO DEPENDENTE

Chave primária da tabela que


corresponde a EMPREGADO

Dependente (CodigoEmp,NoSeq,Nome)

15 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Relacionamento identificador recursão
código Grupo (CodGrup, Nome)
nome
GRUPO
(1,1) Empresa (CodGrup, NoEmpresa,
Nome)

número da (0,n) Empregado(CodGrup, NoEmpresa,


empresa NoEmpreg,Nome)
nome EMPRESA
(1,1) Dependente(CodGrup, NoEmpresa,
NoEmpreg, NoSeq, Nome)

(0,n)
número do
empregado
EMPREGADO DEPENDENTE
(1,1) (0,n)
nome
número de nome
sequência

16 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Nomenclaturas de colunas


»

»

17 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Nomenclatura de atributos e de colunas

»

»

18 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Nomenclatura da coluna chave primária

»


»

»

19 Edmilson Campos (edmilson.campos@ifrn.edu.br)


20 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 05

Implementação de relacionamentos
Tradução de relacionamentos do modelo conceitual para o lógico

Adaptado dos slides do Livro Projeto de Banco de Dados, v. 4 de ©Carlos A. Heuser

Edmilson Campos, Prof.


http://www3.ifrn.edu.br/~edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn
Introdução


»
»
»

2 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Tabela própria

(0,n) (0,n)
ENGENHEIRO ATUAÇÃO PROJETO

Código Nome Função Código Título

Tradução
Traduçãodas
do
Engenheiro (CodEng, Nome) Projeto (CodProj, Título)
relacionamento
entidades

Atuação (CodEng,CodProj,Função)
CodEng referencia Engenheiro
CodProj referencia Projeto

3 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Adição de colunas

(1,1) (0,n)
DEPARTAMENTO LOTAÇÃO EMPREGADO

Data da
lotação
Código Nome Código Nome
Tradução do
relacionamento
Tradução das
Departamento (CodDept,Nome) Empregado (CodEmp,Empregado
Nome, CodDept,
(CodEmp,Nome)
DataLota)
entidades
CodDept referencia Departamento

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Fusão de tabelas

(1,1) (1,1) COMISSÃO


CONFERÊNCIA ORGANIZAÇÃO
ORGANIZADORA

Data
Código Nome Instalação Ender

Conferência (CodConf, Nome, DataInstComOrg, EnderComOrg)

5 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação de relacionamentos 1:1
Tipo de Regra de implementação
relacionamento Tabela própria Adição de coluna Fusão de tabelas

(0,1) (0,1)
±  
(0,1) (1,1)
± 
±

(1,1) (1,1) ± ±

Convenção:
 - Alternativa preferida
± - Pode ser usada – 1ª opção
Pode ser usada – 2ª opção
±
-
 - Não cabe

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:1 – Ambas entidades opcionais (0,1) (0,1)

(0,1) (0,1)
HOMEM CASAMENTO MULHER

Identidade Nome Data Regime Identidade Nome

Tradução do
relacionamento

Homem (IdentH,Nome) Tradução


Mulher das
(IdentM, Nome, IdentH,
Mulher (IdentM,Nome)
Data, Regime)
entidades
IdentH referencia Homem

7 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:1 – Ambas entidades opcionais (0,1) (0,1)

(0,1) (0,1)
HOMEM CASAMENTO MULHER

Identidade Nome Data Regime Identidade Nome

Tradução do
Tradução das
Homem (IdentH,Nome) relacionamento Mulher (IdentM,Nome)
entidades

Casamento (IdentM, IdentH, Data, Regime)


IdentM referencia Mulher
IdentH referencia Homem

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:1 – Ambas entidades opcionais (0,1) (0,1)


»

»
»

9 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:1 –Entidade opcional e outra obrigatória (0,1) (1,1)

(1,1) (0,1) CARTÃO


CORRENTISTA
MAGNÉTICO

Código Nome Código Data Exp.

Correntista (CodCorrent, Nome, CodCartão, DataExp)

10 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:1 –Entidade opcional e outra obrigatória (0,1) (1,1)

(1,1) (0,1) CARTÃO


CORRENTISTA
MAGNÉTICO

Código Nome Código Data Exp.

Tradução do
relacionamento

Correntista (CodCorrent,Nome) Tradução das


Cartão(CodCartão,DataExp,CodCorrent)
Cartão(CodCartão,DataExp)
entidades
CodCorrent referencia Correntista

11 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:1 –Entidade opcional e outra obrigatória (0,1) (1,1)

(1,1) (0,1) CARTÃO


CORRENTISTA
MAGNÉTICO

Código Nome Código Data Exp.


Tradução do
Tradução das
Correntista (CodCorrent,Nome) relacionamento Cartão(CodCartão,DataExp)
entidades

CartãoCorrentista(CodCartão,CodCorrent)
CodCorrent referencia Correntista
CodCartão referencia Cartão

12 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:1 –Entidade opcional e outra obrigatória (0,1) (1,1)

»
»
»

»

»
»

13 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:1 - Ambas entidades obrigatórias (1,1) (1,1)

(1,1) (1,1) COMISSÃO


CONFERÊNCIA ORGANIZAÇÃO
ORGANIZADORA

Data
Nome Instalação Ender
Código

Conferência (CodConf, Nome, DataInstComOrg, EnderComOrg)

14 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:1 - Ambas entidades obrigatórias (1,1) (1,1)


»

»
»

15 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação de relacionamentos 1:n
Tipo de Regra de implementação
relacionamento Tabela própria Adição de coluna Fusão de tabelas

(0,1) (_,n)
±  
(1,1) (_,n)
  

Convenção:
 - Alternativa preferida
± - Pode ser usada – 1ª opção
 - Não cabe

16 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:n - Com uma entidade obrigatória
▪ A entidade que tem
cardinalidade máxima 1
é obrigatória

(1,1) (_,n)
DEPARTAMENTO LOTAÇÃO EMPREGADO

Data
lotação
Código Nome Código Nome

17 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:n - Com uma entidade obrigatória

(1,1) (_,n)
DEPARTAMENTO LOTAÇÃO EMPREGADO

Data
lotação
Código Nome Código Nome
Tradução do
relacionamento

Departamento (CodDept, Nome) Tradução das


Empregado (CodEmp,Nome,CodDept,DataLota)
Empregado (CodEmp, Nome)
entidades
CodDept referencia Departamento

18 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:n - Com uma entidade obrigatória

»



»
»
»

19 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:n - Com uma entidade opcional

A entidade que tem
cardinalidade máxima 1
é opcional nº de parcelas
(0,1) (_,n)
FINANCEIRA FINACIAM VENDA

taxa de juros
Código Nome Id Data

20 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:n - Com uma entidade opcional

nº de parcelas
(0,1) (_,n)
FINANCEIRA FINACIAM VENDA

taxa de juros
Código Nome Id Data
Tradução do
relacionamento

Financeira (CodFin, Nome) Tradução das


Venda (IdVend,Data,CodFin,NoParc,TxJuros)
Venda (IdVend, Data)
entidades
CodFin referencia Financeira

21 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:n - Com uma entidade opcional

nº de parcelas
(0,1) (_,n)
FINANCEIRA FINACIAM VENDA

taxa de juros
Código Nome Id Data
Tradução do
Tradução das
relacionamento
Financeira (CodFin, Nome) Venda (IdVend, Data)
entidades

Fianciam (IdVend,CodFin,NoParc,TxJuros)
IdVend referencia Venda
CodFin referencia Financeira

22 Edmilson Campos (edmilson.campos@ifrn.edu.br)


1:n - Com uma entidade opcional

»
»

23 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação de relacionamentos n:n

Tipo de Regra de implementação


relacionamento Tabela própria Adição de coluna Fusão de tabelas

(_n) (_,n)
  

Convenção:
 - Alternativa preferida
 - Não cabe

24 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação de relacionamentos n:n

(0,n) (0,n)
ENGENHEIRO ATUAÇÃO PROJETO

Código Nome Função Código Título


Tradução do
relacionamento
Tradução das
Engenheiro (CodEng, Nome) Projeto (CodProj, Título)
entidades

Atuação (CodEng, CodProj, Função)


CodEng referencia Engenheiro
CodProj referencia Projeto

25 Edmilson Campos (edmilson.campos@ifrn.edu.br)




26 Edmilson Campos (edmilson.campos@ifrn.edu.br)


27 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 06

Implementação de generalização/especialização
Tradução da relações de generalização/especialização do
modelo conceitual para o lógico

Adaptado dos slides do Livro Projeto de Banco de Dados, v. 4 de ©Carlos A. Heuser

Edmilson Campos, Prof.


http://www3.ifrn.edu.br/~edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn
Introdução


»
»

»

2 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Generalização/especialização
▪ nome CPF tipo de empregado
(0,n) (1,1)
EMPREGADO LOTAÇÃO DEPARTAMENTO

código
px código nome

CREA
SECRETÁRIA MOTORISTA
ENGENHEIRO
(1,n) carteira de
habilitação (0,n) (0,n)
DOMÍNIO
PARTICIPAÇÃO
(0,n) (1,1)
(0,n)
PROCESSADOR RAMO DA
DE TEXTOS ENGENHARIA PROJETO

código nome código nome código nome

3 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Estratégia de tabela por hierarquia


»
»
»
»

»
»

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação tabela por hierarquia
Implementação das
tipo de Depto (CodigoDept, Nome)
entidades relacionadas
empregado ProcessTexto (CodigoProc, Nome)
nome Ramo (CodigoRamo, Nome)
CPF
(0,n) (1,1) Projeto (CodigoProj, Nome)
EMPREGADO LOTAÇÃO DEPARTAMENTO

código
px código nome

CREA
SECRETÁRIA MOTORISTA
ENGENHEIRO
(1,n) carteira de
habilitação (0,n) (0,n)
DOMÍNIO
PARTICIPAÇÃO
(0,n) (1,1)
PROCESSADOR RAMO DA (0,n)
DE TEXTOS ENGENHARIA PROJETO

código nome código nome código nome

5 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação tabela por hierarquia
Implementação dos Domínio (CodigoEmp,CodigoProc)
tipo de relacionamentos n:n
empregado CodigoEmp referencia Emp
nome CódigoProc referencia ProcessTexto
CPF Participação (CodigoEmp,CodigoProj)
(0,n) (1,1)
EMPREGADO LOTAÇÃO DEPARTAMENTO CodigoEmp referencia Emp
CodigoProj referencia Projeto
código
px código nome

CREA
SECRETÁRIA MOTORISTA
ENGENHEIRO
(1,n) carteira de
habilitação (0,n) (0,n)
DOMÍNIO
PARTICIPAÇÃO
(0,n) (1,1)
PROCESSADOR RAMO DA (0,n) Depto (CodigoDept, Nome)
DE TEXTOS ENGENHARIA PROJETO ProcessTexto (CodigoProc, Nome)
Ramo (CodigoRamo, Nome)
código nome código nome código nome Projeto (CodigoProj, Nome)

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação tabela por hierarquia Chave primária vem do Tabela dever ter uma Colunas para atributos
identificador da entidade raiz coluna de tipo de entidade da entidade genérica
tipo de
empregado
nome Emp (CodigoEmp,Tipo,Nome,CPF,
CPF CartHab,CREA,CodigoRamo,CodigoDept)
(0,n) (1,1) CodigoDept referencia Depto
EMPREGADO LOTAÇÃO DEPARTAMENTO CodigoRamo referencia Ramo

código Colunas pra atributos das Implementa relacionamento


px código nome entidades especializadas 1:n entidade genérica

Domínio (CodigoEmp,CodigoProc)
CREA CodigoEmp referencia Emp
SECRETÁRIA MOTORISTA CódigoProc referencia ProcessTexto
ENGENHEIRO
(1,n) carteira de Participação (CodigoEmp,CodigoProj)
habilitação (0,n) (0,n)
CodigoEmp referencia Emp
DOMÍNIO CodigoProj referencia Projeto
PARTICIPAÇÃO
(0,n) (1,1)
PROCESSADOR RAMO DA (0,n) Depto (CodigoDept, Nome)
DE TEXTOS ENGENHARIA PROJETO ProcessTexto (CodigoProc, Nome)
Ramo (CodigoRamo, Nome)
código nome código nome código nome Projeto (CodigoProj, Nome)

7 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Estratégia de tabela por entidade especializada

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação tabela por entidade especializada
Implementação
Implementaçãodadaraiz Emp (CodigoEmp,Tipo,Nome,CPF,CodigoDept)
especialização motorista CodigoDept referencia Depto
tipo de da hierarquia
empregado
Motorista (CodigoEmp,CartHabil)
nome
CPF CodigoEmp referencia Emp
(0,n) (1,1)
EMPREGADO LOTAÇÃO DEPARTAMENTO Chave primária vem Chave primária é estrangeira
da entidade genérica da tabela genérica
código
px código nome

CREA Domínio (CodigoEmp,CodigoProc)


SECRETÁRIA MOTORISTA CodigoEmp referencia Emp
ENGENHEIRO CodigoProc referencia ProcessTexto
(1,n) carteira de
habilitação (0,n) (0,n) Participação (CodigoEmp,CodigoProj)
DOMÍNIO CodigoEmp referencia Emp
PARTICIPAÇÃO CodigoProj referencia Projeto
(0,n) (1,1)
PROCESSADOR RAMO DA (0,n) Depto (CodigoDept, Nome)
DE TEXTOS ENGENHARIA PROJETO ProcessTexto (CodigoProc, Nome)
Ramo (CodigoRamo, Nome)
código nome código nome código nome Projeto (CodigoProj, Nome)

9 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação tabela por entidade especializada
SECRETÁRIA não tem atributos, nem Emp (CodigoEmp,Tipo,Nome,CPF,CodigoDept)
Implementação
relacionamentos da
a implementar por CodigoDept referencia Depto
tipo de
empregado especialização engenheiro
adição de chaves  não há tabela
Motorista (CodigoEmp,CartHabil)
nome para esta entidade
CPF CodigoEmp referencia Emp
(0,n) (1,1)
EMPREGADO LOTAÇÃO DEPARTAMENTO Engenheiro(CodigoEmp,CREA,CodigoRamo)
CodigoEmp referencia Emp
código CodigoRamo referencia Ramo
px código nome
Implementação de especialização deve
observar também o relacionamento n:n
CREA Domínio (CodigoEmp,CodigoProc)
SECRETÁRIA MOTORISTA CodigoEmp referencia Emp
ENGENHEIRO CodigoProc referencia ProcessTexto
(1,n) carteira de
habilitação (0,n) (0,n) Participação (CodigoEmp,CodigoProj)
DOMÍNIO CodigoEmp referencia Emp
PARTICIPAÇÃO CodigoProj referencia Projeto
(0,n) (1,1)
PROCESSADOR RAMO DA (0,n) Depto (CodigoDept, Nome)
DE TEXTOS ENGENHARIA PROJETO ProcessTexto (CodigoProc, Nome)
Ramo (CodigoRamo, Nome)
código nome código nome código nome Projeto (CodigoProj, Nome)

10 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Vantagens de cada uma das estratégias

»

»
»

»

11 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Estratégia de subdivisão da entidade genérica


»
»

12 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Implementação de subdivisão da entidade genérica
TabelaTabela com todos
com todos os dos
os dados EmpOutros(CodigoEmp,Tipo,Nome,CPF,
dados (dados
motoristas dos empregados
das entidades) CodigoDept)
tipo de
empregado que não são motorista
EMPREGADO e MOTORISTA CodigoDept referencia Depto
nome nem engenheiro
Motorista(CodigoEmp,Nome,CPF,CodigoDept,
CPF
(0,n) (1,1) CartHabil)
EMPREGADO LOTAÇÃO DEPARTAMENTO CodigoDept referencia Depto

código Engenheiro(CodigoEmp,Nome,CPF,CodigoDept,
px Tabela com todos os
código nome CREA,CodigoRamo)
dados dos engenheiros CodigoDept referencia Depto
CodigoRamo referencia Ramo
CREA
SECRETÁRIA Domínio (CodigoEmp,CodigoProc)
MOTORISTA
ENGENHEIRO CodigoEmp referencia Emp
(1,n) carteira de CodigoProc referencia ProcessTexto
habilitação (0,n) (0,n)
DOMÍNIO Participação (CodigoEmp,CodigoProj)
PARTICIPAÇÃO CodigoEmp referencia Emp
(0,n) (1,1) CodigoProj referencia Projeto
PROCESSADOR RAMO DA (0,n)
DE TEXTOS PROJETO Depto (CodigoDept, Nome)
ENGENHARIA
ProcessTexto (CodigoProc, Nome)
nome Ramo (CodigoRamo, Nome)
código nome código código nome
Projeto (CodigoProj, Nome)

13 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Desvantagens da subdivisão da entidade genérica

»


»

14 Edmilson Campos (edmilson.campos@ifrn.edu.br)


15 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 08

Introdução à Linguagem SQL

Adaptado dos slides de Igor Alves

Edmilson Campos, Prof.


http://docente.ifrn.edu.br/edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn
Introdução

2 Edmilson Campos (edmilson.campos@ifrn.edu.br)


SQL – Structured Query Language

Data Definition Data Data Query Data Control


Language Manipulation Language Language
Language
DDL DML DQL DCL

Define o Manipula o Extrai dados Assegura o


Esquema Esquema do Esquema Esquema

3 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»

»

»


»

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)


»

»

»

5 Edmilson Campos (edmilson.campos@ifrn.edu.br)


»

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)




»
»
»
»
»

7 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»



8 Edmilson Campos (edmilson.campos@ifrn.edu.br)


9 Edmilson Campos (edmilson.campos@ifrn.edu.br)





10 Edmilson Campos (edmilson.campos@ifrn.edu.br)


11 Edmilson Campos (edmilson.campos@ifrn.edu.br)

12 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 09

Baseado no capítulo 5 do livro SQL: Curso Prático, do Celso Henrique.

Edmilson Campos, Prof.


http://docente.ifrn.edu.br/edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn
Introdução


»
»
»

2 Edmilson Campos (edmilson.campos@ifrn.edu.br)



Nome da tabela em que será
efetuada a inclusão da linha

INSERT INTO tabela [ (coluna [, coluna, ... ] ) ]


VALUES ( conteúdo [, conteúdo, ... ] )

Conteúdo que será atribuído a Lista de colunas que terão seus


cada um dos campos valores atribuídos

3 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Colunas não foram


informadas, logo os
valores devem
obedecer a ordem INSERT INTO Autor
original da tabela VALUES (1, ‘Renato Russo’, ‘Brasileiro’) Foram listadas apenas
duas colunas, logo os
valores devem ser
INSERT INTO Autor (CDAUTOR, NMAUTOR) correspondente as
VALUES (2, ‘Tom Jobim’) colunas informadas

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Nome da tabela em que


será realizada a alteração

UPDATE tabela
SET coluna = conteúdo [, coluna = conteúdo, ... ]
[ WHERE condição ]

Condição opcional que filtra o


Atribuição do novo conteúdo
escopo (limite) do efeito da
para cada coluna alterada
atualização das linhas na tabela

5 Edmilson Campos (edmilson.campos@ifrn.edu.br)



Alterando o preço de
um único CD, filtrando UPDATE cd
na cláusula WHERE a SET PRECO_VENDA = 15
chave primária
WHERE CODIGO_CD = 1;
Alterando o preço de
UPDATE cd todos os CDs de uma
SET PRECO_VENDA = 15 mesma locadora
WHERE CODIGO_GRAVADORA = 2;
Alterando o conteúdo UPDATE cd
de uma coluna com
SET PRECO_VENDA = PRECO_VENDA * 1.05
base nela mesma
WHERE CODIGO_GRAVADORA = 2; Se não for especificado
a cláusula WHERE,
UPDATE cd todas as linhas serão
SET PRECO_VENDA = PRECO_VENDA * 1.05; afetadas
Utilização de
operadores booleanos UPDATE ItemPedido
para ligar cláusulas na SET VLTOTALITEM = VLUNITARIO * NRQTDE
condição WHERE WHERE CDPEDIDO = 1 AND NRITEM = 1;

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Nome da tabela onde


será excluída

DELETE FROM tabela


[ WHERE condição ]

Condição opcional que filtra o


escopo (limite) do efeito da
exclusão das linhas na tabela

7 Edmilson Campos (edmilson.campos@ifrn.edu.br)



Será excluído apenas o DELETE FROM Autor
autor de código 1 WHERE CDAUTOR = 1;

Será excluído todos os


DELETE FROM cd CDs da gravadora de
WHERE CODIGO_GRAVADORA = 2; código 2

Todas as músicas
serão excluídas DELETE FROM Musica;

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)


9 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 10

Baseado no capítulo 5 do livro SQL: Curso Prático, do Celso Henrique.

Edmilson Campos, Prof.


http://docente.ifrn.edu.br/edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn
Introdução


»

»
»
»

2 Edmilson Campos (edmilson.campos@ifrn.edu.br)



Quando informado, o resultado Mostra todos os valores, mesmo
não mostra eventuais valores que repetidos. É o padrão se
repetidos nas colunas DISTINCT não for informado

SELECT [DISTINCT | ALL] { * | coluna [, coluna, ... ] }


FROM tabela

Nome da tabela em que Indica que devem ser Lista de colunas que
será realizada a busca mostradas todas as devem ser mostradas
colunas da tabela

3 Edmilson Campos (edmilson.campos@ifrn.edu.br)



SELECT * FROM CD

SELECT Codigo_CD, Nome_CD FROM CD

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)



SELECT [DISTINCT | ALL] { * | coluna [, coluna, ... ] }
FROM tabela
ORDER BY coluna-ord [, coluna-ord, ...] [DESC | ASC]

Comando de Lista de colunas na Quando informado, os Ordena os valores em


ordenação ordem de precedência resultados da busca ordem ascendente. É
de classificação são ordenados em o padrão quando o
ordem descendentes DESC não é informado

5 Edmilson Campos (edmilson.campos@ifrn.edu.br)


SELECT Codigo_CD, Nome_CD


Ordenando os valores
FROM CD
em ordem ascendente
ORDER BY Nome_CD

SELECT Codigo_CD, Nome_CD


FROM CD Ordenando os valores
ORDER BY Nome_CD DESC em ordem descendente

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)


SELECT Codigo_CD, Nome_CD Ordenando resultados


FROM CD pelo código do CD
ORDER BY Codigo_CD

Ordenando resultados
primeiramente pelo
SELECT Codigo_CD, Nome_CD código da gravadora e
FROM CD em seguida pelo nome
ORDER BY Codigo_Gravadora, Nome_CD do CD

7 Edmilson Campos (edmilson.campos@ifrn.edu.br)



SELECT [DISTINCT | ALL] { * | coluna [, coluna, ... ] }
FROM tabela
WHERE condição

Condição que define o


escopo (limite) da
apresentação dos resultados


»
»
»

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)



Operador Significado Exemplo SELECT Nome_CD, Preco_Venda


FROM CD
= Igual Codigo_Autor = 2 WHERE Preco_Venda > 10
< Menor que Preco_Venda < 10
<= Menor ou igual a Preco_Venda <= 10
> Maior que Preco_Venda > 10
>= Maior ou igual a Preco_Venda >= 10
!= ou <> Diferente Codigo_Autor != 2

9 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»

»
SELECT Nome_CD, Preco_Venda, Codigo_Gravadora
FROM CD
WHERE Preco_Venda > 10 AND Codigo_Gravadora = 2

10 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»

»
SELECT Nome_CD, Preco_Venda, Codigo_Gravadora
FROM CD
WHERE Preco_Venda > 11 OR Codigo_Gravadora = 3

11 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»

»
SELECT Nome_CD, Preco_Venda
FROM CD
WHERE NOT ( Preco_Venda < 15)

SELECT Nome_CD, Preco_Venda, Codigo_Gravadora


FROM CD
WHERE NOT (Codigo_Gravadora = 2 OR Codigo_Gravadora = 3) AND Preco_Venda > 11

12 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»

»
SELECT Nome_Gravadora, Endereco SELECT Nome_Gravadora, Endereco
FROM Gravadora FROM Gravadora
WHERE Endereco IS NULL WHERE Endereco IS NOT NULL

13 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
»
SELECT Nome_CD, Data_Lancamento
FROM CD
WHERE Data_Lancamento BETWEEN '01/01/1999' AND '01/12/2001'

SELECT Nome_CD, Preco_Venda


FROM CD
WHERE Preco_Venda BETWEEN 9 AND 11

SELECT Nome_CD, Preco_Venda


FROM CD
WHERE Preco_Venda NOT BETWEEN 9 AND 11

14 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
Expressão Explicação
LIKE A% Todas as palavras que iniciem com a letra A
LIKE %A Todas que terminem com a letra A
LIKE %A% Todas que tenham a letra A em qualquer posição
LIKE _A String de dois caracteres cuja última letra seja A

LIKE A_ String de dois caracteres cuja primeira letra seja A


LIKE _A_ String de três caracteres cuja segunda letra (letra do meio) seja A
LIKE %A_ Todos que tenham a ketra A na penúltima posição
LIKE _A% Todos que tenham a letra A na segunda posição

15 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
Todos os autores que
SELECT * FROM Autor cujos nomes sejam
WHERE Nome_Autor LIKE 'A%'
iniciados com a letra ‘A’

Todos os autores que


tenham a letra ‘L’ na
segunda posição da
SELECT * FROM Autor
palavra
WHERE Nome_Autor LIKE ‘_l%'

Todos os autores com a


SELECT * FROM Autor letra ‘C’ no início e a letra
WHERE Nome_Autor LIKE ‘C_r%' ‘R’ na terceira posição

16 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»

»
SELECT * FROM Autor
WHERE Codigo_Autor IN (1,10,20)

17 Edmilson Campos (edmilson.campos@ifrn.edu.br)




SELECT Codigo_CD, Nome_CD, Preco_Venda, Preco_Venda * 1.05
FROM CD

18 Edmilson Campos (edmilson.campos@ifrn.edu.br)


19 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 11

Baseado no livro SQL: Curso Prático, do Celso Henrique.

Edmilson Campos, Prof.


http://docente.ifrn.edu.br/edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn
Introdução



»
»
»
»
»
2 Edmilson Campos (edmilson.campos@ifrn.edu.br)

»
SELECT COUNT(*) FROM Gravadora Utilização da palavra-
chave “AS” serve para
nomear coluna de
SELECT COUNT(*) AS QUANTIDADE
resultado
FROM Gravadora

SELECT COUNT(Endereco) AS "QTD ENDEREÇOS"


FROM Gravadora
A utilização do
“DISTINCT” nesse
SELECT COUNT(*) AS QTD_MUSICAS cenário permitiu
FROM Musica_Autor contar apenas
músicas diferentes
SELECT COUNT(DISTINCT CODIGO_MUSICA) AS QTD_MUSICAS
FROM Musica_Autor

3 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
SELECT SUM(Preco_Venda)
FROM Cd Podemos realizar
outros cálculos
baseados na
SELECT SUM(Preco_Venda) * 1.2
somatória.
FROM Cd

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
SELECT AVG(Preco_Venda)
FROM Cd

5 Edmilson Campos (edmilson.campos@ifrn.edu.br)


»
SELECT MIN(Preco_Venda)
FROM Cd

»
SELECT MAX(Preco_Venda)
FROM Cd

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)


» Listagem de quantas
música há em cada
CD, agrupadas pelo
SELECT Codigo_CD, COUNT(*) AS Quantidade código do CD
FROM FAIXA
GROUP BY Codigo_CD
Listagem com preço
médio de venda de
cada CD agrupado
por Gravadora

SELECT Codigo_Gravadora, AVG(Preco_Venda) AS Média


FROM Cd
GROUP BY Codigo_Gravadora

7 Edmilson Campos (edmilson.campos@ifrn.edu.br)


»
SELECT Codigo_Gravadora, AVG(Preco_Venda) AS Média, COUNT(*) AS Quantidade FROM Cd
GROUP BY Codigo_Gravadora

Listagem com a
quantidade CDs e média
O comando “GROUP
de preço dos CDs de
BY” vem antes do
cada gravadora
comando “ORDER BY”

SELECT Codigo_Gravadora, AVG(Preco_Venda) AS Média, COUNT(*) AS Quantidade FROM Cd


GROUP BY Codigo_Gravadora
ORDER BY AVG(Preco_Venda)

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)


»
SELECT Codigo_Musica, COUNT(*) AS Quantidade
FROM MUSICA_AUTOR
WHERE Codigo_Musica < 15
GROUP BY Codigo_Musica

Listagem com total de autores


agrupados por Código de
Música, sendo código das
músicas maiores que 15

9 Edmilson Campos (edmilson.campos@ifrn.edu.br)


»
SELECT Codigo_Musica, COUNT(*) AS Quantidade
FROM MUSICA_AUTOR
GROUP BY Codigo_Musica
HAVING Codigo_Musica < 15

SELECT Codigo_Gravadora, AVG(Preco_Venda)


FROM Cd
GROUP BY Codigo_Gravadora
HAVING AVG(Preco_Venda)>12
A utilização de funções de
grupo não seria possível
com a cláusula “WHERE”

10 Edmilson Campos (edmilson.campos@ifrn.edu.br)


11 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 12

Adaptado dos slides do Prof. José Antônio, IFRN – CNAT.

Edmilson Campos, Prof.


http://docente.ifrn.edu.br/edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn
Introdução

2 Edmilson Campos (edmilson.campos@ifrn.edu.br)


3 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»

»
»

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Tabela Cliente
Cod_Cli Nome_Cli Sexo_Cli Renda_Cli RG_Cli
1 João Carlos M 5000.00 123456
2 Daniel M 6000.00 145678
3 Helena F 6000.00 564333
4 Roberta F 5000.00 564322
5 Renata F 3000.00 654321
6 Giovanna F 3500.00 564322

Tabela Funcionário
Cod_Func Nome_Func Sexo_Func Sal_Func Data_CadFunc
1 Salvador M 7000.00 03/01/1995
2 Antônio M 6000.00 06/05/1998
3 Antonieta F 6500.00 07/08/1998
4 Eduardo M 4000.00 06/08/2000
5 Leny F 3000.00 06/08/2001

5 Edmilson Campos (edmilson.campos@ifrn.edu.br)



SELECT 'Funcionário' AS TIPO, TIPO NOME SEXO DATA DE RG
Nome_Func AS NOME, CADASTRO
Sexo_Func AS SEXO, Cliente João Carlos M NULL 123456
Sal_Func AS SEXO,
Data_CadFunc AS 'DATA DE CADASTRO', Cliente Daniel M NULL 145678
RG = null Cliente Helena F NULL 564333
FROM Funcionario Cliente Roberta F NULL 564322
UNION ALL
SELECT 'Cliente', Cliente Renata F NULL 654321
Nome_Cli, Cliente Giovanna F NULL 564322
Sexo_Cli,
Funcionário Salvador M 03/01/1995 NULL
Renda_Cli,
Null, Funcionário Antônio M 06/05/1998 NULL
RG_Cli Funcionário Antonieta F 07/08/1998 NULL
FROM Cliente
Funcionário Eduardo M 06/08/2000 NULL
ORDER BY tipo
Funcionário Leny F 06/08/2001 NULL

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)






7 Edmilson Campos (edmilson.campos@ifrn.edu.br)



»
»

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Cod_Pai Nome_Pai Idade_Pai
1 Daniel de Souza Leão Sobrinho 62
2 João Carlos da Silva 38
3 Fernando de Oliveira 36

Cod_Filho Cod_Pai Nome_Filho Sexo_Filho


1 1 Renata de Oliveira Leão F
2 1 Fernando de Oliveira Leão M
3 1 Roberta de Oliveira Leão F
4 1 Jairo de Oliveira Leão M
5 2 Giovanna da Silva F
6 3 Lucas Ribeiro Oliveira M
7 3 Helder Ribeiro Oliveira M

9 Edmilson Campos (edmilson.campos@ifrn.edu.br)


▪ SELECT Pai.Nome_Pai AS ‘Nome do Pai’,
Filho.Nome_Filho AS ‘Nome do Filho’,
» Filho.Sexo_Filho AS Sexo
FROM Pai INNER JOIN Filho
ON (Pai.Cod_Pai = Filho.Cod_Pai)


» SELECT *
FROM Pai INNER JOIN Filho
ON Pai.Cod_Pai = Filho.Cod_Pai

10 Edmilson Campos (edmilson.campos@ifrn.edu.br)



Cod_Emp Nome_Emp Cod_Chefe


1 João Null
SELECT C.Nome_Emp AS Chefe,
2 Matheus 1 E.Nome_Emp AS Empregado
3 Lucas 1 FROM Empregado C, Empregado E
WHERE C.Cod_Emp = E.Cod_Chefe
4 Pedro 2
ORDER BY C.Nome
5 Thiago 2
6 José 2
7 Tânia 1
8 Joana 3
9 Rosana 3
10 Maria 4

11 Edmilson Campos (edmilson.campos@ifrn.edu.br)


SELECT Pai.Nome_Pai AS ‘Nome do Pai’,


Filho.Nome_Filho AS ‘Nome do Filho’,
Filho.Sexo_Filho AS Sexo Esse consulta retorna
FROM Pai LEFT OUTER JOIN Filho todos os pais com
ON Pai.Cod_Pai = Filho.Cod_Pai filhos ou não


SELECT Pai.Nome_Pai AS ‘Nome do Pai’,
Esse consulta retorna
Filho.Nome_Filho AS ‘Nome do Filho’, todos os filhos com
Filho.Sexo_Filho AS Sexo pais registrados ou
FROM Pai RIGHT OUTER JOIN Filho não no sistema
ON (Pai.Cod_Pai = Filho.Cod_Pai)

12 Edmilson Campos (edmilson.campos@ifrn.edu.br)



SELECT Pai.Nome_Pai AS ‘Nome do Pai’,
Filho.Nome_Filho AS ‘Nome do Filho’,
Filho.Sexo_Filho AS Sexo
FROM Pai FULL OUTER JOIN Filho
ON (Pai.Cod_Pai = Filho.Cod_Pai)

13 Edmilson Campos (edmilson.campos@ifrn.edu.br)




Tabela Pedido Tabela Material
Num_Ped Data_Ped Cod_Mat Nome_Mat
1 24/06/2002 1 Caderno
2 06/08/2002 2 Lápis
3 Borracha
4 Caneta

Select Pedido.Num_Ped,
Material.Nome_Mat
FROM Pedido CROSS JOIN Material

14 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Retorna todos os filhos e seus


respectivos pais e suas notas

SELECT DISTINCT Pai.Nome_Pai AS ‘Nome do Pai’,


Filho.Nome_Filho AS ‘Nome do Filho’,
Notas.Nota_Filho AS ‘Nota do Filho’
FROM Pai INNER JOIN Filho ON (Pai.Cod_Pai = Filho.Cod_Pai)
INNER JOIN Notas ON (Filho.Cod_Filho = Notas.Cod_Filho)

15 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Retorna todos os filhos e seus


respectivos pais e suas notas,
inclusive os filhos sem notas

SELECT DISTINCT Pai.Nome_Pai AS ‘Nome do Pai’,


Filho.Nome_Filho AS ‘Nome do Filho’,
Notas.Nota_Filho AS ‘Nota do Filho’
FROM Pai INNER JOIN Filho ON (Pai.Cod_Pai = Filho.Cod_Pai)
LEFT JOIN Notas ON (Filho.Cod_Filho = Notas.Cod_Filho)

16 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Retorna todos os filhos e seus


respectivos pais e suas notas.
Mostra também os pais com filhos e
filhos sem notas e os pais sem filhos.

SELECT DISTINCT Pai.Nome_Pai AS ‘Nome do Pai’,


Filho.Nome_Filho AS ‘Nome do Filho’,
Notas.Nota_Filho AS ‘Nota do Filho’
FROM Pai LEFT JOIN Filho ON (Pai.Cod_Pai = Filho.Cod_Pai)
LEFT JOIN Notas ON (Filho.Cod_Filho = Notas.Cod_Filho)

17 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Retorna pai com filho e filho


com nota, e filho sem pai e
sem nota.

SELECT DISTINCT Pai.Nome_Pai AS ‘Nome do Pai’,


Filho.Nome_Filho AS ‘Nome do Filho’,
Notas.Nota_Filho AS ‘Nota do Filho’
FROM Pai FULL JOIN Filho ON (Pai.Cod_Pai = Filho.Cod_Pai)
FULL JOIN Notas ON (Filho.Cod_Filho = Notas.Cod_Filho)

18 Edmilson Campos (edmilson.campos@ifrn.edu.br)


19 Edmilson Campos (edmilson.campos@ifrn.edu.br)


Disciplina:
Banco de Dados

AULA 13

Consultas aninhadas no SQL

Baseado no livro SQL: Curso Prático, do Celso Henrique.

Edmilson Campos, Prof.


http://docente.ifrn.edu.br/edmilsoncampos/
edmilson.campos@ifrn.edu.br
@edmilsonbcn
Introdução



»

»

»

2 Edmilson Campos (edmilson.campos@ifrn.edu.br)



SELECT colunas
SELECT principal
FROM tabela
ou externo
WHERE expressão operador ( SELECT colunas
FROM tabela
WHERE ...)

SELECT secundário
ou interno

3 Edmilson Campos (edmilson.campos@ifrn.edu.br)



SELECT NOME_CD AS ‘Nome do CD’,
PRECO_VENDA AS Preço
FROM CD
WHERE PRECO_VENDA > (SELECT AVG(PRECO_VENDA) FROM CD)

4 Edmilson Campos (edmilson.campos@ifrn.edu.br)



SELECT CODIGO_GRAVADORA AS ‘Código da Gravadora’,
NOME_CD AS ‘Nome do CD’,
PRECO_VENDA AS Preço
FROM CD a
WHERE PRECO_VENDA > (SELECT AVG(PRECO_VENDA) FROM CD
WHERE CODIGO_GRAVADORA = a.CODIGO_GRAVADORA)

5 Edmilson Campos (edmilson.campos@ifrn.edu.br)



SELECT CODIGO_GRAVADORA AS ‘Código da Gravadora’,
MIN(PRECO_VENDA) AS ‘Menor Preço’
FROM CD
GROUP BY CODIGO_GRAVADORA
HAVING MIN(PRECO_VENDA) > (SELECT PRECO_VENDA FROM CD
WHERE CODIGO_CD = 6)

6 Edmilson Campos (edmilson.campos@ifrn.edu.br)



SELECT CODIGO_GRAVADORA AS ‘Código da Gravadora’,
MAX(PRECO_VENDA) AS ‘Preço máximo’
FROM CD a
GROUP BY CODIGO_GRAVADORA
HAVING MIN(PRECO_VENDA) > (SELECT AVG(PRECO_VENDA) FROM CD
WHERE CODIGO_GRAVADORA = CODIGO_GRAVADORA)

7 Edmilson Campos (edmilson.campos@ifrn.edu.br)



SELECT CODIGO_GRAVADORA AS Código,
NOME_GRAVADORA AS Gravadora
FROM GRAVADORA
WHERE EXISTS (SELECT * FROM CD
WHERE CD.CODIGO_GRAVADORA = GRAVADORA.CODIGO_GRAVADORA)

8 Edmilson Campos (edmilson.campos@ifrn.edu.br)


»
»
»

9 Edmilson Campos (edmilson.campos@ifrn.edu.br)



Está sendo exibido quais CDs têm preço
SELECT CODIGO_CD AS Código, igual ao menor preço de cada gravadora
NOME_CD AS Nome,
PRECO_VENDA AS Preço
FROM CD
WHERE PRECO_VENDA IN (SELECT MIN(PRECO_VENDA) FROM CD
GROUP BY CODIGO_GRAVADORA)

Agora estamos buscando os códigos


dos CDs e faixas que contenham
SELECT CODIGO_CD AS Código, músicas com a palavra ‘AMOR’
NUMERO_FAIXA AS Faixa
FROM FAIXA
WHERE CODIGO_MUSICA IN (SELECT CODIGO_MUSICA FROM MUSICA
WHERE UPPER(NOME_MUSICA) LIKE ‘%AMOR%’)

10 Edmilson Campos (edmilson.campos@ifrn.edu.br)



Exibir os CDs que têm preço inferior a
qualquer outro da gravadora, mas que
SELECT CODIGO_CD AS Código,
não sejam da gravadora 2
NOME_CD AS Nome,
PRECO_VENDA AS Preço
FROM CD
WHERE PRECO_VENDA < ANY (SELECT PRECO_VENDA FROM CD
WHERE CODIGO_GRAVADORA = 2)
AND CODIGO_GRAVADORA !=2

11 Edmilson Campos (edmilson.campos@ifrn.edu.br)


▪ Exibir quais CDs têm preço de venda


menor que a média de preço de
SELECT CODIGO_CD AS Código,
venda de
NOME_CD AS Nome,
PRECO_VENDA AS Preço
FROM CD
WHERE PRECO_VENDA < ALL (SELECT AVG(PRECO_VENDA) FROM CD
GROUP BY CODIGO_GRAVADORA)
ORDER BY CODIGO_GRAVADORA

12 Edmilson Campos (edmilson.campos@ifrn.edu.br)



Exibir os nomes dos CDs com seus
respectivos preços de venda e o preço
SELECT a.NOME_CD AS 'Nome do CD',
médio da Gravadora de cada CD
a.Preco_Venda AS 'Preço de Venda',
b.Preco_Medio AS 'Preço Médio'
FROM CD a, (SELECT CODIGO_GRAVADORA,
AVG(PRECO_VENDA) AS PRECO_MEDIO
FROM CD
GROUP BY CODIGO_GRAVADORA) b
WHERE a.CODIGO_GRAVADORA = b.CODIGO_GRAVADORA
AND a.PRECO_VENDA > b.PRECO_MEDIO

13 Edmilson Campos (edmilson.campos@ifrn.edu.br)


14 Edmilson Campos (edmilson.campos@ifrn.edu.br)

You might also like