banco de dados geográficos modelo relacional, sql, mapeamento er- relacional e normalização...
TRANSCRIPT
![Page 1: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/1.jpg)
Banco de Dados Geográficos
Modelo Relacional, SQL, Mapeamento ER-Relacional e Normalização
Disponível em http://www.dpi.inpe.br/cursos/ser303
Junho, 2005
Karine Reis Ferreira – [email protected] Câmara – [email protected] Ribeiro de Queiroz – [email protected]
![Page 2: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/2.jpg)
Modelo Orientado a Objetos
Características (conceitos OO ) Coleção de objetos Objetos contêm atributos e métodos Objetos de mesmo tipo são agrupados em classes Relacionamentos entre classes:
Generalização e especialização Agregação Composição
![Page 3: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/3.jpg)
Modelo Orientado a Objetos
Diagrama UML
![Page 4: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/4.jpg)
Modelo Relacional
Representa bancos de dados relacionais Dados são armazenados em tabelas compostas por
colunas e linhas
PROPRIETARIO
CPF NOME RUA NUMERO BAIRRO
08940256 JOÃO DA SILVA SAO JOAO 180
03727298 HENRIQUE CARDOSO IMIGRANTE 1700 VILA 12
97260089 JOSÉ DE SOUZA SAO JOAO 35
CENTRO
CENTRO
NUMERO PROPRIETARIO_CPF AREA_TOTAL AREA_CONST
00001 08940256 400.000 0
00003 03727298 150.000 75.00
00039 03727298 500.000 0
LOTE
![Page 5: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/5.jpg)
Modelo Relacional
Características: Consiste em um conjunto de tabelas ou relações
formadas por linhas e colunas
Cada coluna (campo): Representa um atributo Está associada a um domínio
Cada linha (registro ou tupla): Representa um relacionamento entre um conjunto
de valores para cada atributo
![Page 6: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/6.jpg)
Modelo Relacional
Conceito de relação Define uma tabela do banco de dados Domínio de um atributo: conjunto de possíveis valores
Ex.: D1 = { x | x -5 e x 5 }
D2 = { y | y 0 }
![Page 7: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/7.jpg)
Modelo Relacional
Conceito de relação Dados os domínios D1, D2, ..., Dn não necessariamente
distintos, uma relação é definida como:
R = { (d1, d2,..., dn) | d1 D1, d2 D2,..., dn Dn }
O conjunto (d1, d2,..., dn) de valores ordenados define uma tupla
Uma relação é o conjunto de n-tuplas ordenadas, onde n define o grau da relação
![Page 8: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/8.jpg)
Atributo Domíniocpf inteiro longo positivonome conjunto de caracteresrua conjunto de caracteresnumero inteiro positivobairro conjunto de caracteres
Modelo Relacional
PROPRIETARIO
CPF NOME RUA NUMERO BAIRRO
08940256 JOÃO DA SILVA SAO JOAO 180
03727298 HENRIQUE CARDOSO IMIGRANTE 1700 VILA 12
97260089 JOSÉ DE SOUZA SAO JOAO 35
CENTRO
CENTRO
Exemplo de relação
![Page 9: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/9.jpg)
Modelo Relacional
Super-chave: um ou mais atributos que permitem identificar cada
registro da tabela como único. Chave candidata:
corresponde a super-chave mínima, ou seja não existe sub-conjunto da super-chave.
{ cpf } chave candidata? { cpf, nome } chave candidata?
Chave primária: chave candidata escolhida no projeto da tabela do
banco
![Page 10: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/10.jpg)
Chave primária: Coluna ou combinação de colunas cujos valores
distinguem uma linha das demais dentro de uma tabela
Modelo Relacional
CPF NOME RUA NUMERO BAIRRO
08940256 JOÃO DA SILVA SAO JOAO 180
03727298 HENRIQUE CARDOSO IMIGRANTE 1700 VILA 12
97260089 JOSÉ DE SOUZA SAO JOAO 35
CENTRO
CENTRO
chave primária
PROPRIETARIO
![Page 11: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/11.jpg)
Chave primária: Coluna ou combinação de colunas cujos valores
distinguem uma linha das demais dentro de uma tabela
Modelo Relacional
RUA TRECHO NUM_INICIAL NUM_FINAL BAIRRO
SAO JOAO TRC01 0 180
SAO JOAO TRC02 190 1700 CENTRO
IMIGRANTES TRC01 0 500
CENTRO
VILA 1
chave primária composta
RUA
![Page 12: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/12.jpg)
Modelo Relacional
Chave estrangeira Coluna ou combinação de colunas, cujos valores
aparecem necessariamente na chave primária de uma outra tabela.
Mecanismo que permite a implementação de relacionamentos em um banco de dados relacional.
![Page 13: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/13.jpg)
Modelo Relacional
Chave estrangeira
MATRICULA NOME CURSO
98765 João MAT
67765 José BIO
84562 Maria ENG
34256 Luis INFO
3452672 Ana MAT
34529 Luana MAT
CURSOID TITULO DURAÇÃO
INFO Informática Indust. 4
BIO Biologia 4
ENG Engenharia Civil 5
MAT Licenciatura Mat. 4
Curso
Aluno
Obs.: Através do relacionamento, evitamos a repetição de informações.
relacionamento
![Page 14: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/14.jpg)
Modelo Relacional
Chave estrangeira Uma chave estrangeira não precisa ser uma chave
primária na sua relação.
Uma chave estrangeira não precisa ter o mesmo nome do que a chave primária correspondente na outra tabela (apenas o mesmo domínio).
![Page 15: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/15.jpg)
Modelo Relacional Chave estrangeira impõe restrições que devem ser
garantidas ao serem executadas no BD: Inclusão de uma linha na tabela que contém a chave
estrangeira: Garantir que o valor da chave estrangeira exista na
chave primária da outra tabela.
Alteração do valor da chave estrangeira: O novo valor deve aparecer na coluna da chave
primária referenciada.
![Page 16: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/16.jpg)
Modelo Relacional Chave estrangeira impõe restrições que devem ser
garantidas ao serem executadas no BD: Exclusão de uma linha da tabela que contém a chave
primária referenciada por uma chave estrangeira: Não se exclui a linha caso exista um valor na tabela
com a chave estrangeira. Remove-se também a linha com o valor de chave
estrangeira. Valor da chave estrangeira é ajustado como NULL.
![Page 17: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/17.jpg)
Modelo Relacional Chave estrangeira impõe restrições que devem ser
garantidas ao serem executadas no BD: Alteração do valor da chave primária referenciada por
alguma chave estrangeira: Propagar a modificação Não deixar que seja feita a modificação
![Page 18: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/18.jpg)
Restrições de integridade Uma das funcionalidades básicas que todo SGBD deve
oferecer.
É uma regra de consistência de dados que é garantida pelo SGBD.
Tipos de Restrições: Restrição de domínio Integridade de chave Integridade Referencial
Modelo Relacional
![Page 19: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/19.jpg)
Álgebra Relacional
Conjunto de operações que usam uma ou duas relações como entrada e geram uma relação de saída operação (REL1) REL2
operação (REL1,REL2) REL3
Operações básicas: Operações unárias:
seleção, projeção, renomeação
Operações binárias: produto cartesiano, união e diferença
![Page 20: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/20.jpg)
Operadores da Álgebra Relacional
Seleção: seleciona tuplas que satisfazem um certo predicado ou
condição
Clientes
a) selecionar tuplas cujo nome = Joãonome=“João” (Clientes)
Nome Registro João 1
Maria 2
José 3
Nome Registro João 1
![Page 21: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/21.jpg)
Operadores da Álgebra Relacional
b) selecionar as tuplas de Clientes cujo registro > 1
registro>1 (Clientes)
c) selecionar as tuplas de Clientes com registro > 1 e registro < 3
registro>1 registro < 3 (Clientes)
Nome Registro Maria 2
José 3
Nome Registro Maria 2
![Page 22: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/22.jpg)
Operadores da Álgebra Relacional
Projeção: gera novas relações excluindo alguns atributos exemplo: projete o atributo nome sobre a relação
Clientes
nome (Clientes)
Clientes
Nome Registro João 1
Maria 2
José 3
Nome João
Maria
José
![Page 23: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/23.jpg)
Operadores da Álgebra Relacional
União: união de atributos do mesmo domínio que estão em
relações diferentes as relações devem possuir o mesmo número de
atributos
exemplo: encontre todos os clientes da agência que possuem conta corrente ou empréstimo.
Relações existentes na agência: ContaCorrente e Emprestimo
![Page 24: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/24.jpg)
Operadores da Álgebra Relacional
União: nome (ContaCorrente) U nome (Emprestimo)
Nome Empréstimo Paulo 100
Maria 200
Carlos 300
Nome Conta João 1
Maria 2
José 3
Nome João
Maria
José
Paulo
Carlos
=
ContaCorrente
Emprestimo
Resultado da união
![Page 25: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/25.jpg)
Operadores da Álgebra Relacional
Diferença: tuplas que se encontram em uma relação, mas
não em outra exemplo: encontre todos clientes sem empréstimo
Nome Conta João 1
Maria 2
José 3
Nome Empréstimo Paulo 100
Maria 200
Carlos 300
Nome João
José
Resultado da diferença
=
-
ContaCorrente
Emprestimo
nome (ContaCorrente) - nome (Emprestimo)
![Page 26: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/26.jpg)
Operadores da Álgebra Relacional
Produto Cartesiano Faz todas as combinações entre as tuplas de duas relações Gera uma nova relação formada pela união dessas
combinações Exemplo: produto cartesiano entre os clientes e os
empréstimos de Maria
Nomecc Conta Nomeemp Empréstimo João 1 Maria 200
Maria 2 Maria 200
José 3 Maria 200
emprestimo.nome = “Maria” (ContaCorrente X Emprestimo)
![Page 27: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/27.jpg)
Operadores da Álgebra Relacional
Operadores derivados: Intersecção
Seleciona tudo que está em ambas relações Exemplo: todos os clientes que possuem
empréstimo
Nome Conta João 1
Maria 2
José 3
Nome Empréstimo Paulo 100
Maria 200
Carlos 300
Nome Maria
Emprestimo
ContaCorrente
=
Resultado da intersecção
nome (ContaCorrente) nome (Emprestimo) U
![Page 28: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/28.jpg)
Operadores da Álgebra Relacional
Operadores derivados Junção
Inclui um produto cartesiano, seguido de uma seleção (pode ter projeção ao final)
Exemplo: nomes dos clientes com conta corrente e número de empréstimo:
contacorrente.nome, emprestimo.emprestimo
( contacorrente.nome = emprestimo.nome (ContaCorrente X Emprestimo))
contacorrente.nome, emprestimo.emprestimo
(ContaCorrente Emprestimo))
![Page 29: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/29.jpg)
Álgebra Relacional - Resumo
![Page 30: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/30.jpg)
SQL - Structured Query Language
Linguagem de consulta usada pela maioria de SGBD-R e SGBD-OR
Baseada na álgebra relacional É divida em:
Linguagem de definição de dados (DDL) Linguagem de manipulação de dados (DML) Definição de vistas Especificação de autorização Especificação de integridade Controle de transação
![Page 31: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/31.jpg)
SQL - Structured Query Language
Alguns comandos em SQL
Comandos Usado para Tipo
select Consultar dados DML
insert, update, delete
Incluir, alterar e remover dados
DML
commit, rollback Controlar transações DML
create, alter, drop
Definir, alterar e remover esquemas
DDL
![Page 32: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/32.jpg)
SQL - Structured Query Language
Definição de esquema: Comando create table
cria uma nova tabela
create table r (A1D1, A2D2, ...., AnDn,
<restrição de integridade1>,
...., <restrição de integridadek>)
A: nome do atributoD: domínio
![Page 33: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/33.jpg)
SQL - Structured Query Language
Domínio Descrição
char(n) conjunto de n caracteres de tamanho definido
varchar(n) conjunto de n caracteres de tamanho variável
Int Inteiro
SmallInt Inteiro
numeric(p, d) real com precisão definida
real real com precisão dupla
float(n) real com precisão de pelo menos n dígitos
date data com 4 dígitos para ano e 2 dígitos para mês e dia
time hora do dia em horas, minutos e segundos
![Page 34: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/34.jpg)
SQL - Structured Query Language
Restrições de integridade: primary key (Aj1, Aj2, ..., Ajm)
unique key (A1) foreign key (A) references T not null null check (P)
![Page 35: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/35.jpg)
SQL - Structured Query Language
Exemplos:create table cliente
(nome char(20) not null,
endereço char(30),
cidade char(30),
primary key (nome))
create table contacorrente
(número char(10) not null,
banco char(30),
saldo real,
primary key (número),
check (saldo > 0))
![Page 36: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/36.jpg)
SQL - Structured Query Language
Definição de esquema : comando drop table
Elimina uma tabela do banco
comando alter table Altera o esquema de uma tabela do banco
![Page 37: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/37.jpg)
SQL - Structured Query Language
Exemplos Remover uma tabela
drop table clientes Adicionar uma nova coluna
alter table cliente add RG char(10) Alterar o tipo de uma coluna
alter table cliente modify RG char(20) Remover uma coluna
alter table cliente drop column RG
![Page 38: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/38.jpg)
SQL - Structured Query Language
Consulta: Sintaxe do comando select :
select [distinct] {*, coluna [alias], expressões [alias], funções
[alias], ...}from {tabelas [alias],} [where condição][group by colunas][having condição][order by colunas [asc | desc]]
[ ]: opcional
{ }: pode aparecer várias vezes
| : mutuamente exclusivas (ou uma ou outra).
![Page 39: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/39.jpg)
SQL - Structured Query Language
Opções Descrição
distinct Indica que as linhas duplicadas devem ser eliminadas do resultado
* Indica que todas as colunas de todas as tabelas da cláusula from devem ser incluídas no resultado
coluna Coluna de uma tabela listada na cláusula from que deve ser incluída no resultado
expressões Expressões aritméticas envolvendo uma ou mais colunas das tabelas listadas na cláusula from
funçõesFunções definidas em SQL como, por exemplo, funções de agregação, que calculam estatísticas sobre colunas (avg, min, max, count, etc)
![Page 40: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/40.jpg)
SQL - Structured Query Language
Opções Descrição
alias Nome alternativo para uma coluna, expressão ou tabela
tabelas Uma ou mais tabelas envolvidas na consulta
condição(where)
Especifica um condição à qual as linhas das tabelas da cláusula from devem satisfazer para gerar uma linha do resultado
group by colunas
Indica que o resultado deve ser agrupado pelas colunas especificadas
condição(having)
Limita os grupos a serem mostrados àqueles satisfazendo a condição
order by Ordenação do resultado, podendo ser crescente (asc) ou descescente(desc)
![Page 41: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/41.jpg)
SQL - Structured Query Language
Comando select e álgebra relacional: cláusula select
implementa o operador projeção cláusula from
implementa o produto cartesiano cláusula where
implementa o operador de seleção
![Page 42: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/42.jpg)
SQL - Structured Query Language
Exemplos:
aluno disciplina nota
001 Banco de Dados 6.0
001 Estatística 8.0
002 Estatística 3.0
002 Metodologia 5.0
003 Banco de Dados 9.0
005 Metodologia 7.5
005 Física 4.5
Alunos
id nome
001 João
002 Maria
003 Pedro
004 Fabio
005 José
Matricula
![Page 43: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/43.jpg)
SQL - Structured Query Language
Exemplos – consulta simples:1) Liste todos os alunos:
SELECT *FROM alunos
2) Liste em ordem alfabética quais as disciplinas oferecidas:SELECT DISTINCT m.disciplina
FROM matricula AS m
ORDER BY m.disciplina ASC
![Page 44: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/44.jpg)
SQL - Structured Query Language
Resultado:1) Liste todos os alunos:
ID NOME---------- ------------------------ 1 João 2 Maria 3 Pedro 4 Fabio 5 Jose
2) Liste em ordem alfabética quais as disciplinas oferecidas:DISCIPLINA---------------Banco de DadosEstatísticaFísicaMetodologia
OBS: O Oracle não aceita a palavra AS nem ALIAS.
![Page 45: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/45.jpg)
SQL - Structured Query Language
Exemplos – consulta simples:3) Selecione os códigos dos alunos que tiveram alguma nota
maior do que 1 e menor do que 4:SELECT aluno FROM matricula
WHERE nota BETWEEN 1 AND 4
SELECT aluno FROM matricula
WHERE nota >= 1 AND nota <= 4
4) Selecione os nomes dos alunos que começam com a letra “J” e que tem a letra “S”:
SELECT nome FROM alunos
WHERE nome LIKE ‘J%’
AND nome LIKE ‘%s%’
![Page 46: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/46.jpg)
SQL - Structured Query Language
Resultado:3) Selecione os códigos dos alunos que tiveram alguma nota
maior do que 1 e menor do que 4: ALUNO
----------
2
4) Selecione os nomes dos alunos que começam com a letra “J” e que tem a letra “s”:
NOME
--------
Jose
![Page 47: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/47.jpg)
SQL - Structured Query Language
Exemplos – operador de agregação: AVG(…): média dos valores da coluna SUM(…): soma dos valores da coluna COUNT(…): número de valores na coluna MAX(…): maior valor na coluna MIN(…): menor valor na coluna
Podem ser aplicados pra todos os registros de uma coluna ou para grupos de registros (usando o group by)
![Page 48: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/48.jpg)
SQL - Structured Query Language
Exemplos – operador de agregação:5) Quantos alunos estão cadastrados no banco:
SELECT COUNT(*) AS num FROM alunos
6) Quantos alunos estão matriculados em cada disciplina:SELECT disciplina, COUNT(*) AS num
FROM matricula
GROUP BY disciplina
7) Qual a média das notas de cada aluno:SELECT aluno, AVG(nota) AS media
FROM matricula
GROUP BY aluno
![Page 49: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/49.jpg)
SQL - Structured Query Language
Resultado:5) Quantos alunos estão cadastrados no banco:
NUM---------- 5
6) Quantos alunos estão matriculados em cada disciplina:DISCIPLINA NUM------------------------------------- ----------Banco de Dados 2Estatística 2Física 1Metodologia 2
7) Qual a média das notas de cada aluno: ALUNO MEDIA
---------- ---------- 1 7 2 4 3 9 5 6
![Page 50: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/50.jpg)
SQL - Structured Query Language
Exemplos - junção: Usada quando precisamos de informações de mais de
uma tabela A cláusula from define um produto cartesiano entre as
relações
T1 INNER JOIN T2: Só retornam as linhas que ocorrem em T1 e em T2.
T1 LEFT JOIN T2: retornam todas as linhas que ocorrem em T1 e, se tiver ocorrência em T2, as linhas correspondentes de T2.
T1 RIGTH JOIN T2: retornam todas as linhas que ocorrem em T2 e, se tiver ocorrência em T1, as linhas correspondentes de T1.
![Page 51: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/51.jpg)
SQL - Structured Query Language
Exemplos - junção:8) Liste todos os alunos e quais disciplinas eles estão
matriculados:SELECT nome, disciplina
FROM alunos INNER JOIN matricula
ON alunos.id = matricula.aluno
9) Selecione quais alunos tiveram nota menor do que 6.0:SELECT DISTINCT nome
FROM alunos RIGHT JOIN matricula
ON alunos.id = matricula.aluno
WHERE nota < 6.0
![Page 52: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/52.jpg)
SQL - Structured Query Language
Resultado:8) Liste todos os alunos e quais disciplinas eles estão
matriculados:NOME DISCIPLINA
---------------------------------------
João Banco de Dados
João Estatística
Maria Estatística
Maria Metodologia
Pedro Banco de Dados
Jose Metodologia
Jose Física
9) Selecione quais alunos tiveram nota menor do que 6.0:NOME
--------
Maria
Jose
![Page 53: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/53.jpg)
SQL - Structured Query Language
Exemplos - junção:10) Selecione todos os alunos e as disciplinas se o aluno
tiver matriculado:SELECT id, disciplina
FROM alunos LEFT JOIN matricula
ON alunos.id = matricula.aluno
11) Para cada aluno selecione sua maior nota e armazene essa consulta em uma nova tabela:
SELECT aluno, MAX(nota) AS notaMaxima
INTO NovaTabela
FROM alunos INNER JOIN matricula
ON alunos.id = matricula.aluno
GROUP BY aluno
![Page 54: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/54.jpg)
SQL - Structured Query Language
Resultado:10) Selecione todos os alunos e as disciplinas se o aluno
tiver matriculado:ID DISCIPLINA
--------- -----------------
1 Banco de Dados
1 Estatística
2 Estatística
2 Metodologia
3 Banco de Dados
5 Metodologia
5 Física
4 null
11) Para cada aluno selecione sua maior nota e armazene essa consulta em uma nova tabela:
OBS: O comando INTO só funciona no Access, não funciona no Oracle nem no MySQL.
![Page 55: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/55.jpg)
SQL - Structured Query Language
Exemplos - subconsulta:12) Selecione as disciplinas que os alunos João, Pedro e
Fábio estão fazendo:SELECT nome, disciplina
FROM alunos INNER JOIN matricula
ON alunos.id = matricula.aluno
WHERE nome IN (‘João’, ‘Pedro’, ‘Fabio’)
13) Selecione quais alunos tiveram nota menor do que 6.0:SELECT nome FROM alunos
WHERE id IN
(SELECT DISTINCT aluno
FROM matricula WHERE nota<6.0)
![Page 56: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/56.jpg)
SQL - Structured Query Language
Resultado:12) Selecione as disciplinas que os alunos João, Pedro e
Fábio estão fazendo:NOME DISCIPLINA
-------------------------------
João Banco de Dados
João Estatística
Pedro Banco de Dados
13) Selecione quais alunos tiveram nota menor do que 6.0:NOME
--------
Maria
Jose
![Page 57: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/57.jpg)
SQL - Structured Query Language
Exemplos – operadores de conjunto (União):14) Selecione os alunos:
(SELECT id FROM alunos)UNION
(SELECT aluno FROM matricula)
15) Selecione os alunos (mantendo os alunos repetidos): (SELECT id FROM alunos)
UNION ALL
(SELECT aluno FROM matricula)
OBS: O comando UNION e UNION ALL não funciona no MySQL.
![Page 58: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/58.jpg)
SQL - Structured Query Language
Resultado:14) Selecione os alunos: ID---------- 1 2 3 4 5
15) Selecione os alunos (mantendo os alunos repetidos): ID ID
-------------------------- 1 2 3 4 5 1 1 2 2 3 5 5
![Page 59: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/59.jpg)
SQL - Structured Query Language
Exemplos – operadores de conjunto (Interseção):16) Selecione somente os alunos que estão matriculados, ou
seja, que aparecem na tabela alunos e matricula:(SELECT id FROM alunos)
INTERSECT
(SELECT aluno FROM matricula)
17) Selecione somente os alunos que estão matriculados, ou seja, que aparecem na tabela alunos e matricula (mantendo os alunos repetidos): (SELECT id FROM alunos)
INTERSECT ALL
(SELECT aluno FROM matricula)
![Page 60: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/60.jpg)
SQL - Structured Query Language
Resultado:16) Selecione somente os alunos que estão matriculados, ou
seja, que aparecem na tabela alunos e matricula: ID
---------
1
2
3
5
17) Selecione somente os alunos que estão matriculados, ou seja, que aparecem na tabela alunos e matricula (mantendo os alunos repetidos):
OBS: O comando INTERSECT não funciona no MySQL e no Access
OBS: O comando INTERSECT ALL não funciona no MySQL, no Access e no Oracle
![Page 61: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/61.jpg)
SQL - Structured Query Language
Exemplos – having:18) Selecione os alunos que tiveram nota máxima maior que 8:
SELECT aluno, MAX(nota)
FROM matricula GROUP BY aluno
HAVING MAX(nota) > 8
19) Selecione os alunos que estão matriculados em mais de 1 disciplinas:SELECT nome, count(*)
FROM alunos AS a INNER JOIN matricul AS m
ON a.id = m.aluno
GROUP BY nome
HAVING count(*) > 1
![Page 62: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/62.jpg)
SQL - Structured Query Language
Resultado:18) Selecione os alunos que tiveram nota máxima maior que 8:ALUNO MAX(NOTA)
---------- ----------
3 9
19) Selecione os alunos que estão matriculados em mais de 1 disciplinas:
NOME COUNT(*)
----------------------
Jose 2
João 2
Maria 2
![Page 63: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/63.jpg)
SQL - Structured Query Language
Inserção: INSERT INTO alunos VALUES (001, 'João');INSERT INTO alunos (id, nome) VALUES (002, 'Maria');
Remoção: DELETE FROM alunos; DELETE FROM matricula WHERE disciplina = ‘Estatistica’
Alteração: UPDATE matricula SET disciplina = ‘Estatistica I’WHERE disciplina = ‘Estatistica’;
UPDATE matricula SET nota = nota + 1.5WHERE aluno = 001 AND disciplina = ‘Banco de Dados’;
![Page 64: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/64.jpg)
SQL - Structured Query Language
Controle de transação:begin transaction
commit transaction
rollback transaction
Criação de índice:CREATE INDEX nome_idx ON alunos(nome);
CREATE INDEX discip_idx ON matricula(disciplina);
![Page 65: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/65.jpg)
SQL - Structured Query Language
Restrições de integridade
CREATE TABLE matricula
( aluno INTEGER NOT NULL,
disciplina VARCHAR(50) NOT NULL,
nota REAL NULL
CHECK (nota => 0 AND nota <= 10),
PRIMARY KEY (aluno, disciplina),
CONSTRAINT fk_aluno FOREIGN KEY (aluno)
REFERENCES alunos(id) );
nulidade
chave primária composta
chave estrangeira
Integridade semântica
![Page 66: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/66.jpg)
Conversão E-R Modelo Relacional
Entidades com atributos chaves bem definidos geram uma relação.
Relacionamentos podem gerar uma relação adicionando-se os atributos chaves das entidades relacionadas e os atributos do relacionamento.
Entidades com atributos chaves não bem definidos geram uma relação adicionando-se a chave da relação que dependem
![Page 67: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/67.jpg)
Conversão E-R Modelo Relacional
Exemplo:
lote
idarea_total
possui
area_const
proprietário
nomecpf
data
1n
DER
Relações
Lote (id_lote, area_total, area_const)
Lote_proprietario (id_lote, cpf, data)
Proprietario (cpf, nome)
![Page 68: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/68.jpg)
Conversão E-R Modelo Relacional
Modelo ER Modelo Relacional
Classe de Entidades Tabela (Relação)
Entidade Linha (Tupla)
Atributo Coluna (Atributo)
Atributo Multivalorado Tabela Auxiliar
Atributo Identificador Chave
Atributo Composto Várias Colunas
Relacionamento Ligações
![Page 69: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/69.jpg)
Conversão E-R Modelo Relacional
Cada entidade é traduzida para uma tabela. Cada atributo (simples) da entidade define uma
coluna da tabela. A coluna correspondente ao atributo identificador é
chave primária Ex:
lote
idarea_total
area_const
Lote(id_lote, area_total, area_const)
![Page 70: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/70.jpg)
Conversão E-R Modelo Relacional
Relacionamento A tradução do relacionamento depende da
cardinalidade das entidades que participam do relacionamento.
Formas básicas de tradução: Tabela própria Colunas adicionais dentro da tabela de
entidade
![Page 71: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/71.jpg)
Conversão E-R Modelo Relacional
Relacionamento 1:N ou N:1
1nlote
idarea_total
pertence
area_const
quadra
areanum
Lote(id_lote, area_total, area_const, num_quadra)
Quadra(num_quadra, area)
![Page 72: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/72.jpg)
Conversão E-R Modelo Relacional
Relacionamento N:N
Lote(id_lote, area_total, area_const)
Fronteira(id_lote, id_rua, num_inicial, num_final)
Rua(id_rua, nome)
nnlote
idarea_total
faz fronteira
area_const
rua
nomeidnum_inicial
num_final
![Page 73: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/73.jpg)
Conversão E-R Modelo Relacional
Auto relacionamento
Lote(id_lote, area_total, area_const)
Composição(id_lote, id_lote_comp, quantidade)
lote
composto
1 N
quantidade
![Page 74: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/74.jpg)
Conversão E-R Modelo Relacional
Relacionamento múltiplo
Lote(id_lote, area_total, area_const)
Proprietario(cpf, nome)
Contrato(id_contrato, documento)
Lote_Prop_Contr(id_lote, cpf, id_contrato, data)
lote possui proprietário
contrato_compra_venda
1n
n
![Page 75: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/75.jpg)
Conversão E-R Modelo Relacional
EspecializaçãoSolução 1
Quadra comercial (num_quadra, area, imposto_servico)
Quadra_residencial (num_quadra, area, num_residencias)
numeroarea
quadra comercial quadra residencial
valor_imposto_servico num_residencias
quadra
e uma
![Page 76: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/76.jpg)
Conversão E-R Modelo Relacional
EspecializaçãoSolução 2
Quadra(num_quadra, area)
Quadra comercial (num_quadra, imposto_servico)
Quadra_residencial (num_quadra, num_residencias)
numeroarea
quadra comercial quadra residencial
valor_imposto_servico num_residencias
quadra
e uma
![Page 77: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/77.jpg)
Passos na Modelagem de BD
Requisitos: identificação dos dados
Modelagem conceitual: mapear visão do usuário em um conjunto de dados descreve entidades, atributos e relacionamentos
Implementação: esquema de banco de dados
Projeto físico: estruturas de dados, métodos de acesso, segurança
Identificação de Requisitos
Modelo Conceitual
Implementação
Projeto Físico
![Page 78: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/78.jpg)
Projeto Lógico de BD
Normalização Processo pelo qual um esquema de tabelas (relações)
insatisfatório é quebrado de forma que seus atributos formem relações menores que sejam mais adequadas:
Sem redundância de informações Maior facilidade de manutenção
Baseado em varias regras de normalização: 1a forma normal 2a forma normal 3a forma normal
![Page 79: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/79.jpg)
Normalização
Ex. tabela não normalizada:
num_solic data_solic cod_func nome_func cod_prod desc_prod quant_prod
001 12/06/03 func01 Joao Silva 2345 papel 3
001 12/06/03 func01 Joao Silva 2398 tinta 2
001 12/06/03 func01 Joao Silva 4300 impressora 1
solicitacao_compra
![Page 80: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/80.jpg)
Problemas em uma tabela não normalizada: Redundância dos dados
Possui vários grupos repetidos Anomalias de inserção
Inserir um novo funcionário Inserir um novo produto
Anomalias de atualização Alterar o nome de um funcionário
Anomalias de remoção Remover um produto
Normalização
![Page 81: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/81.jpg)
Normalização
1a Forma normal: Uma relação esta na 1FN se, e somente se, todos os
domínios contiverem apenas valores atômicos. Ou seja, uma relação está na 1FN quando seus
atributos não contém grupos de repetição
![Page 82: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/82.jpg)
Normalização
1a Forma normal:
num_solic cod_prod desc_prod quant_prod
001 2345 papel 3
001 2398 tinta 2
001 4300 impressora 1
solicitacao_compra
num_solic data_solic cod_func nome_func
001 12/06/03 func01 Joao Silva
solicitacao_produtos
num_solic data_solic cod_func nome_func cod_prod desc_prod quant_prod
001 12/06/03 func01 Joao Silva 2345 papel 3
001 12/06/03 func01 Joao Silva 2398 tinta 2
001 12/06/03 func01 Joao Silva 4300 impressora 1
solicitacao_compra
1FN
![Page 83: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/83.jpg)
Dependência funcional Dada uma relação R, o atributo Y de R e funcionalmente
dependente do atributo X de R (R.X R.Y)
se, e somente se, cada valor X em R for associado ao mesmo precisamente um valor Y em R ( a qualquer momento).
Ex.
cod_func nome_func
cod_prod desc_prod
num_solic, cod_prod quant_prod
Normalização
![Page 84: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/84.jpg)
2a Forma normal: Uma relação está na segunda forma normal se, e apenas
se, estiver na 1FN, e cada atributo não-chave for totalmente dependente da chave primária.
Ocorre quando a chave primária é composta por mais de um campo.
verificar se todos os campos que não fazem parte da chave dependem de todos os campos que compõem a chave. Se algum campo depender somente de parte da chave composta, então este campo deve pertencer a outra tabela.
Normalização
![Page 85: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/85.jpg)
2a Forma normal:
Normalização
num_solic cod_prod quant_prod
001 2345 3
001 2398 2
001 4300 1
solicitacao_produtos
cod_prod desc_prod
2345 papel
2398 tinta
4300 impressora
produtos
num_solic cod_prod desc_prod quant_prod
001 2345 papel 3
001 2398 tinta 2
001 4300 impressora 1
solicitacao_produtos
2FN
![Page 86: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/86.jpg)
2a Forma normal - resultado:
Normalização
num_solic cod_prod quant_prod
001 2345 3
001 2398 2
001 4300 1
solicitacao_compra
num_solic data_solic cod_func nome_func
001 12/06/03 func01 Joao Silva
solicitacao_produtoscod_prod desc_prod
2345 papel
2398 tinta
4300 impressora
produtos
![Page 87: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/87.jpg)
3a Forma normal: Um relação está na terceira forma normal se e
apenas se, estiver na 2FN, e não tiver dependências transitivas
Dependência transitiva: ocorre quando um atributo não-chave, além de depender da chave primária da tabela, depende funcionalmente de outro atributo ou combinação de atributos não-chave.
Em uma tabela na 3FN não existem atributos não-chave que tenham dependência de outros atributos não chave.
Normalização
![Page 88: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/88.jpg)
3a Forma normal:
Normalização
solicitacao_compra
num_solic data_solic cod_func
001 12/06/03 func01
cod_func nome_func
func01 Joao Silva
funcionarios
solicitacao_compra
num_solic data_solic cod_func nome_func
001 12/06/03 func01 Joao Silva
3FN
![Page 89: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em Junho, 2005](https://reader035.vdocuments.com.br/reader035/viewer/2022062418/552fc10e497959413d8c500e/html5/thumbnails/89.jpg)
3a Forma normal - resultado:
Normalização
num_solic cod_prod quant_prod
001 2345 3
001 2398 2
001 4300 1
solicitacao_compra
num_solic data_solic cod_func
001 12/06/03 func01
solicitacao_produtoscod_prod desc_prod
2345 papel
2398 tinta
4300 impressora
produtos
cod_func nome_func
func01 Joao Silva
funcionarios