banco de dados geográficos modelo relacional, sql, mapeamento er- relacional e normalização...

89
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] Gilberto Câmara – [email protected] Gilberto Ribeiro de Queiroz – [email protected]

Upload: internet

Post on 17-Apr-2015

111 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em  Junho, 2005

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Á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

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

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

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

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

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

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

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

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

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

Álgebra Relacional - Resumo

Page 30: Banco de Dados Geográficos Modelo Relacional, SQL, Mapeamento ER- Relacional e Normalização Disponível em  Junho, 2005

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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