You are on page 1of 185

Bancos de Dados I

Sandoval Bastos Jr.


Faculdade Catlica Rainha do Serto
sbastosj@gmail.com

Banco de Dados I

Sumrio

1. Introduo aos Sistemas de Banco de Dados


2. Modelo de Entidades e Relacionamentos (MER)
3. O Modelo Relacional
4. Projeto de Bancos de Dados Relacionais
5. SQL
6. Acesso a Bancos de Dados
7. Restries de Integridade
8. Tcnicas Avanadas de Projeto de BDs

Relacionais (Normalizao)
Banco de Dados I

Sumrio
9. Introduo Armazenamento e Indexao
10. Introduo ao Processamento de Consultas
11. Introduo ao Processamento de Transaes
12. Introduo Recuperao e Logging
13. Banco de Dados Orientados a Objetos (BDOO)

Banco de Dados I

Bancos de Dados I
- Bibliografia Recomendada 1. Silberschatz, A., Korth, H., Sudarshan, S. Sistemas de

Banco de Dados, 3 Edio, Makron Books


2. Garcia-Molina, H., Ullman, Jeffrey D., Widom, Jennifer.
Implementao de Sistemas de Bancos de Dados.
Editora Campus, 2001
3. ONeil, Patrick., ONeil, Elizabeth. Database:
Principles, Programming and Performance. Second
Edition, Morgan Kaufmann
4. Elsmari, R., Navathe, Shamkant B. Sistemas de Banco
de Dados Fundamentos e Aplicaes 4a. Edio,
Addison-Wesley.
Banco de Dados I

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

1. Tecnologia de
Banco de Dados

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

Garcia-Molina, H., Ullman, Jeffrey D., Widom, 1


Jennifer. Implementao de Sistemas de
Bancos de Dados. Editora Campus, 2001
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

Elsmari, R., Navathe, Shamkant B. Sistemas 1, 2


de Banco de Dados. 4a. Edio, AddisonWesley

Banco de Dados I

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

2. Modelo
EntidadeRelacionamento
(MER)

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

Garcia-Molina, H., Ullman, Jeffrey D., Widom, Nenhum


Jennifer. Implementao de Sistemas de
captulo
Bancos de Dados. Editora Campus, 2001
especfico para
o tpico
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

6.1, 6.2, 6.3, 6.4

Elsmari, R., Navathe, Shamkant B. Sistemas 3, 4


de Banco de Dados. 4a. Edio, AddisonWesley
Banco de Dados I

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

3. Modelo
Relacional (MR)

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

Garcia-Molina, H., Ullman, Jeffrey D., Widom, 1.4, 6.1


Jennifer. Implementao de Sistemas de
Bancos de Dados. Editora Campus, 2001
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

Elsmari, R., Navathe, Shamkant B. Sistemas 7, 9.3


de Banco de Dados. 4a. Edio, AddisonWesley

Banco de Dados I

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

4. Projeto de
Banco de Dados
Relacionais

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

2.8

Garcia-Molina, H., Ullman, Jeffrey D., Widom, Nenhum


Jennifer. Implementao de Sistemas de
captulo
Bancos de Dados. Editora Campus, 2001
especfico para
o tpico
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

Nenhum
captulo
especfico para
o tpico

Elsmari, R., Navathe, Shamkant B. Sistemas 9


de Banco de Dados. 4a. Edio, AddisonWesley
Banco de Dados I

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

5. SQL

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

Garcia-Molina, H., Ullman, Jeffrey D., Widom, 1.4


Jennifer. Implementao de Sistemas de
Bancos de Dados. Editora Campus, 2001
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

Elsmari, R., Navathe, Shamkant B. Sistemas 8, 18.1


de Banco de Dados. 4a. Edio, AddisonWesley

Banco de Dados I

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

6. Acesso Banco
de Dados

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

4.12

Garcia-Molina, H., Ullman, Jeffrey D., Widom, Nenhum


Jennifer. Implementao de Sistemas de
captulo
Bancos de Dados. Editora Campus, 2001
especfico para
o tpico
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

Elsmari, R., Navathe, Shamkant B. Sistemas Nenhum


de Banco de Dados. 4a. Edio, Addisoncaptulo
Wesley
especfico para
o tpico
Banco de Dados I

10

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

7. Restries de
Integridade

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

Garcia-Molina, H., Ullman, Jeffrey D., Widom, Nenhum


Jennifer. Implementao de Sistemas de
captulo
Bancos de Dados. Editora Campus, 2001
especfico para
o tpico
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

Elsmari, R., Navathe, Shamkant B. Sistemas 7.2, 7.3


de Banco de Dados. 4a. Edio, AddisonWesley

Banco de Dados I

11

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

8. ProjetoFsico de
Banco de Dados
Relacionais

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

Garcia-Molina, H., Ullman, Jeffrey D., Widom, Nenhum


Jennifer. Implementao de Sistemas de
captulo
Bancos de Dados. Editora Campus, 2001
especfico para
o tpico
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

6.5 a 6.9

Elsmari, R., Navathe, Shamkant B. Sistemas 14, 15


de Banco de Dados. 4a. Edio, AddisonWesley

Banco de Dados I

12

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

9. Introduo ao
Armazenamento e
Indexao

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

10

Garcia-Molina, H., Ullman, Jeffrey D., Widom, 2, 3, 4


Jennifer. Implementao de Sistemas de
Bancos de Dados. Editora Campus, 2001
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

Elsmari, R., Navathe, Shamkant B. Sistemas 5, 6


de Banco de Dados. 4a. Edio, AddisonWesley

Banco de Dados I

13

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

10. Introduo ao
Processamento de
Consultas

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

12

Garcia-Molina, H., Ullman, Jeffrey D., Widom, 6, 7


Jennifer. Implementao de Sistemas de
Bancos de Dados. Editora Campus, 2001
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

Elsmari, R., Navathe, Shamkant B. Sistemas 18


de Banco de Dados. 4a. Edio, AddisonWesley

Banco de Dados I

14

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

11. Introduo ao
Processamento de
Transaes

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

13, 14

Garcia-Molina, H., Ullman, Jeffrey D., Widom, 9, 10


Jennifer. Implementao de Sistemas de
Bancos de Dados. Editora Campus, 2001
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

10.1, 10.2, 10.3,


10.4, 10.5

Elsmari, R., Navathe, Shamkant B. Sistemas 19, 20


de Banco de Dados. 4a. Edio, AddisonWesley

Banco de Dados I

15

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

12. Introduo
Recuperao e
Logging

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

15

Garcia-Molina, H., Ullman, Jeffrey D., Widom, 8


Jennifer. Implementao de Sistemas de
Bancos de Dados. Editora Campus, 2001
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

10.6, 10.7, 10.8,


10.9

Elsmari, R., Navathe, Shamkant B. Sistemas 21


de Banco de Dados. 4a. Edio, AddisonWesley

Banco de Dados I

16

Bancos de Dados I
- Guia Bibliogrfico por Tpicos Tpico

Livro

Captulo/Seo

13. Banco de
Dados Orientados
a Objeto

Silberschatz, A., Korth, H., Sudarshan, S.


Sistemas de Banco de Dados, 3 Edio,
Makron Books

15

Garcia-Molina, H., Ullman, Jeffrey D., Widom, 8


Jennifer. Implementao de Sistemas de
Bancos de Dados. Editora Campus, 2001
ONeil, Patrick, ONeil, Elizabeth. Database:
Principles, Programming and Performance.
Second Edition, Morgan Kaufmann

Elsmari, R., Navathe, Shamkant B. Sistemas 11, 12, 13


de Banco de Dados. 4a. Edio, AddisonWesley

Banco de Dados I

17

Sistemas de Bancos de Dados


- Histrico -

Processamento de arquivo (anos 60 e 70)


Paradigma de processamento de dados
Cada aplicao
Definir e manter seus prprios dados
Programa 1

Programa 2

Programa 3

Descrio
de dados

Descrio
de dados

Descrio
de dados

Arquivo A
Arquivo B
Arquivo C
Banco de Dados I

18

Sistemas de Bancos de Dados


Dados em Arquivos - Histrico -

Redundncia e inconsistncia
Dificuldade de acesso aos dados
Isolamento dos dados
Problemas de integridade
Problemas de atomicidade
Anomalias de acesso concorrente
Problemas de segurana
Banco de Dados I

19

Sistemas de Bancos de Dados


Tecnologia de banco de dados
Definio e gerenciamento centralizado de dados
Independncia de dados
Alterao na organizao lgica ou fsica dos dados no
implicar na alterao de programas

Eliminar redundncia de dados


Eliminar inconsistncia de dados

Facilitar acesso a dados atravs de uma linguagem de


consulta
Evitar inconsistncias produzidas pelo acesso
concorrente
Recuperar estado consistente do dados aps situao
de falha
Banco de Dados I

20

Sistemas de Bancos de Dados


Tecnologia de banco de dados
Programa 1

Programa 2

Programa 3

Descrio
de Dados

Banco
de Dados
Sistema de Banco de Dados
Conjunto de dados inter-relacionados (banco de dados)
Componente de software (SGBD)
Acesso e modificao dos dados

Tornar
Tornartransparente
transparentecomo
comoos
osdados
dadosso
so
Garantir uma viso abstrata dos dados
armazenados e gerenciados

Banco de Dados I

armazenados e gerenciados

21

Sistemas de Bancos de Dados


Sistemas
de
Bancos
de Dados

Usurio tem uma


viso abstrata dos
dados

Nvel fsico: descreve como os dados so armazenados


Nvel lgico: descreve quais dados so armazenados e os

relacionamentos entre eles


Nvel de visualizao: descreve partes de interesse do
usurio/aplicao
Banco de Dados I

22

Sistemas de Bancos de Dados


Arquitetura trs Camadas

Esquema
Externo 1

Esquema
Externo 2

Esquema
Externo n

Camada
Externa

Esquema Conceitual

DBMS

Camada
Conceitual

Camada
Interna
(Fsica)
Banco de Dados I

Esquema Interno
(Banco de Dados armazenado)
23

Sistemas de Bancos de Dados

Arquitetura trs Camadas


Esquema Interno - Camada Interna

Descreve como os dados esto fisicamente armazenados


Exemplo

Organizao de arquivo
seqencial-indexado, hashing, seqencial, heap
Alocao em disco
Contgua, lista encadeada, lista encadeada utilizando ndice
Tipo de registro
Fixo, varivel

Esquema Conceitual - Camada Conceitual


Descreve quais dados esto armazenados no banco de dados
Descreve os relacionamentos entre os dados armazenados
Esquema Externo - Camada Externa
Descreve parte do banco de dados
Simplificar a viso do usurio
Ver s o que interessa

Segurana
Banco de Dados I

24

Sistemas de Bancos de Dados


Ocorrncias e Esquemas

Ocorrncias (instncias)
Coleo de informaes armazenadas na base
Altamente mutveis
Esquemas
Projeto ou estrutura da base - definio
Um esquema para cada nvel de abstrao
Esquema fsico - nvel interno
Esquema lgico - nvel conceitual
Sub-esquemas ou esquemas de visualizao - nvel
externo
Banco de Dados I

25

Sistemas de Bancos de Dados


Independncia dos Dados

Habilidade de modificar
o esquema fsico sem
causar redefinio dos
programas de aplicao
Modificaes so
necessrias para
melhorar desempenho

Banco de Dados I

Habilidade de modificar
o esquema lgico sem
causar redefinio dos
programas de aplicao
Modificaes so
necessrias quando a
estrutura lgica da
base alterada
26

Sistemas de Bancos de Dados


Definio
Sistema de Bancos de Dados (SBD ou DBS)
Banco de Dados (BD ou DB)
Conjunto de dados relacionados

Sistema Gerenciador de Bancos de Dados (SGBD ou DBMS)


Componente de software
Acesso
Controle de Concorrncia
Recuperao
Armazenamento

Banco de Dados I

27

Sistemas de Bancos de Dados


Linguagem de Banco da Dados
Finalidade
garantir a especificao do esquema de um banco de dados
permitir consultas e atualizaes sobre o banco de dados
Componentes
DDL - Data Description Language
Utilizada para especificar o esquema de um BD
Expresses da DDL
Interpretadas (compilados) gerando a especificao de um
conjunto de tabelas
A especificao das tabelas armazenada no catlogo do
banco de dados
Exemplo (SQL)
create table Empregado
(matr integer not null,
nome varchar(35),
salrio real,
primary key(matr))

Banco de Dados I

28

Sistemas de Bancos de Dados


Linguagem de Banco da Dados
Componentes (cont.)
DML - Data Manipulation Language
Utilizada para permitir
DML

DML
Consultas sobre um BD
Procedural
Procedural
--requer
Exemplo (SQL)
requeraaespecificao
especificaode
dequais
quais dados
dados
devem
ser
acessados
e
como
devem
select nome
devem ser acessados e como devemser
ser
acessados
acessados
from Empregado
Nonprocedural
Nonprocedural
where salario > 7000
- -requer
requersomente
somenteaaespecificao
especificaode
dequais
quais
dados
devem
ser
acessados
Inseres em uma tabela
dados devem ser acessados
Exemplo (SQL)
insert into Empregado values(123, Brbara, 5000.00)
Remoes em uma tabela
Exemplo (SQL)
delete from Empregado
where matr=14
Atualizar valores de atributos de uma tabela
Exemplo (SQL)
update Empregado set salrio=salrio1.15
where salrio<1500.00

Banco de Dados I

29

Sistemas de Bancos de Dados


Definio
Processador de Consultas + Sistema de Armazenamento
Processador de Consultas

SGBD

Compilador DML

Analisa sintaticamente e semanticamente comandos DML expressos em


uma linguagem de consulta (ex. SQL)
Traduz estes comandos para uma das formas de representao interna
de consultas (ex. lgebra relacional)

Pr-Compilador DML
Traduz comandos DML em chamadas a procedimentos (rotinas) na
linguagem hospedeira

Interpretador DDL

Interpreta comandos DDL e os armazena no catlogo

Tabelas contendo meta-dados


Descrio do banco de dados Esquema

Mecanismo de Consultas
Responsvel pela otimizao e gerao de planos de execuo de
consultas
Banco de Dados I

30

Sistemas de Bancos de Dados


SGBD

Definio
Sistema de Armazenamento
Gerenciador de Transaes
Controle de concorrncia
Recuperao do banco de dados aps falhas

Gerenciador de Buffer
Responsvel para recuperar objetos em disco e carreg-los na memria
principal em forma de pginas
SGBD possui uma rea de buffer em memria principal
Mapeamento:
Bloco
Pgina
(disco)
(buffer do SGBD)
Definio da poltica de alocao do buffer
MRU, LRU, FIFO, etc

Gerenciador de Arquivo (File System)


Responsvel pelo armazenamento fsico em disco
Gerencia a alocao de espao em disco
Banco de Dados I

31

Sistemas de Bancos de Dados


Definio

BD

Arquivos de dados + ndices + Catlogo


Arquivos de dados
Armazena os dados

ndices
Estruturas de ndices para os arquivos de dados

Catlogo
Armazena esquema do banco de dados (meta-dados)
Nomes das tabelas
Atributos de cada tabela
Definio de ndice para uma tabela, etc

Armazena informaes estatsticas


Exemplo
Cardinalidade de uma tabela
Utilizadas na otimizao de consultas
Banco de Dados I

32

Sistemas de Bancos de Dados


- Arquitetura de SGBDs-

Programadores

Usurio experiente

Programa Aplicativo
Pre-compilador
DML

DBA

Consulta

Esquema

Compilador
DML

Interpretador
DDL

Mecanismo
de Consultas
Gerenciador
de Buffer

Gerenciador
de Transaes

Gerenciador
de Arquivo

Cdigo Objeto
aplicativos

Banco de Dados I

ndices

Arquivos
de dados

Processador
de Consultas

Sistema de
Armazenamento

DBM
S
Catlogo

DB
DBS
33

Sistemas de Bancos de Dados

- O Administrador de Bancos de Dados (DBA) Definio do esquema conceitual


Definio dos mtodos de acesso e estruturas

de armazenamento
Manuteno do esquema e da organizao fsica

dos dados
Definio da poltica de acesso aos dados
Especificao de restries de integridade

Banco de Dados I

34

Sistemas de Bancos de Dados


- Usurios de Bancos de Dados -

Programadores de aplicao
Usurios sofisticados
Usurios especializados em aplicaes no-

convencionais
Usurios de programas de aplicao

Banco de Dados I

35

Sistemas de Bancos de Dados


- Modelo de Dados-

Conjunto
Conjuntode
deferramentas
ferramentasconceituais
conceituaispara
paradescrever
descreverdados,
dados,
seus
seusrelacionamentos,
relacionamentos,sua
suasemntica
semnticaeerestries
restriesde
deconsistncia
consistncia
Modelos lgicos baseados em objetos
Modelo entidade-relacionamento
Modelo orientado a objeto
Modelos lgicos baseados em registros

Modelo relacional
Modelo Codasyl (rede)
Modelo hierrquico
Modelos fsicos de dados

Banco de Dados I

36

Sistemas de Bancos de Dados


- Modelo de Dados-

Um modelo de dados definido por trs componentes


Uma coleo de tipos de estrutura de dados
blocos de construo do banco de dados
Uma coleo de operadores
Podem ser aplicados a qualquer instncia dos tipos de
dados definidos em 1
Uma coleo de regras de integridade
Definem o conjunto de estados consistentes do banco de
dados
Definem o conjunto de transies consistentes de estado
do banco de dados
Representar dados do mundo real
Capturar a semntica e incorpor-la em um banco de dados
Exemplo
Atravs do modelo relacional representar os dados de uma
universidade
Banco de Dados I

37

Sistemas de Bancos de Dados

- Classificao de Sistemas de Bancos de Dados Classificao de SBDs - Modelo de Dados


Sistema de Banco de Dados Relacional
Modelo Relacional
Tipo primitivo de dados
Relao (tabela)
- Conjunto de tuplas (linhas)
Conjunto de Operadores
lgebra Relacional
Clculo Relacional
Restries de integridade
Integridade de chave primria
Integridade referencial
Banco de Dados I

38

Sistemas de Bancos de Dados

- Classificao de Sistemas de Bancos de Dados Classificao de SBDs - Modelo de Dados


Sistema de Banco de Dados Orientado a Objeto
Modelo orientado a objeto

Tipos primitivos
Objeto, conjunto, lista, string, integer, real
Restries de integridade
Unicidade de Objeto e identidade de objeto
Hierarquia de classes
Herana
- Uma classe herda as propriedades da superclasse
Comportamento de objetos de uma classe
- Mtodo

Sistema de Banco de Dados Objeto-Relacional


Modelo relacional + Modelo OO
Banco de Dados I

39

Sistemas de Bancos de Dados

- Classificao de Sistemas de Bancos de Dados Classificao de SBDs - Arquitetura

Sistema de Banco de Dados Centralizados


Os componentes do SBD residem no mesmo host
Sistema de Banco de Dados Cliente-Servidor
Distribuio de funes do SGBD entre clientes e servidor
Sistema de Banco de Dados Paralelos
Distribuio do controle de funes do DBMS entre diversos
sistemas computacionais
Sistema de Banco de Dados Distribudos
Distribuio de dados atravs de diversos SBDs homogneos
Sistema de Banco de Dados Heterogneos
Distribuio de dados atravs de SBDs heterogneos e
autnomos
Sistema de banco de dados mltiplos (MDBS)
Sistema de banco de dados federados

Sistema de Banco de Dados Mvel


Distribuio de funes do SGBD entre clientes e servidor em
ambientes de computao mvel
Banco de Dados I

40

Sistemas de Bancos de Dados


- Gerenciamento de Transaes -

Coleo de operaes que realizam uma nica


funo lgica em uma aplicao de banco de dados
Controle de acesso concorrente
Isolamento entre transaes concorrentes
Tolerncia a falhas
Atomicidade das operaes
Persistncia dos resultados das transaes bem
sucedidas
Banco de Dados I

41

Sistemas de Bancos de Dados


- Controle de Concorrncia -

Concorrncia em um ambiente multiusurio


Entrelaamento (interleaving) de operaes
Operaes de um programa podem ser executadas
entre duas operaes de outro programa
Alteraes inconsistentes no banco de dados

DBMS precisa monitorar e controlar a execuo


concorrente de programas
Controle de Concorrncia

Banco de Dados I

42

Sumrio
Introduo aos Sistemas de Banco de Dados

Modelo de Entidades e Relacionamentos


Bancos de Dados Relacionais
O Modelo Relacional
Modelagem de Dados
lgebra Relacional
Linguagem de Manipulao e Consulta
Projeto de Bancos de Dados Relacionais
Projeto Lgico de Bancos de Dados

Banco de Dados I

43

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Modelo de dados MER


No implementado por nenhum SBD
Utilizado como modelo conceitual para projeto de BDs
Ferramenta para a modelagem de BDs
Proposto por P. Chen em 1976

Princpio bsico
Representar dados atravs
Entidades
Relacionamentos entre as entidades
Atributos

Propriedades de entidades ou relacionamentos

Banco de Dados I

44

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Entidade
Representao abstrata de um objeto do mundo real
Exemplos de entidades do mundo real
Objeto concreto
Um empregado, um carro, um estudante

Objeto abstrato
Uma empresa, uma conta bancria, uma disciplina

Conjunto de entidades (tipo de entidade)


Entidades que apresentam caractersticas semelhantes
Exemplo
Estudantes, Empregados, Contas

Banco de Dados I

45

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Atributos de uma entidade


Propriedades que caracterizam uma entidade
Exemplos
Atributos de empregados
matrcula, nome, endereo, rg, cpf, data-nasc, salrio, lotao,
data-admisso

Atributos de estudantes
matrcula, nome, curso, rg, cpf, data-ingresso

Conjunto de entidades
Grupo de entidades que apresentam mesmo conjunto
de atributos
A cada atributo de uma entidade deve estar associado um
valor
Banco de Dados I

46

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Atributos de uma entidade (cont.)

Um atributo pode ser ainda definido como


Uma funo que associa um elemento do conjunto de
entidades a um elemento de um conjunto de valores do
atributo (domnio do atributo)

Empregados

matrcula

Conjunto
de matrculas

Brbara

nome

endereo

Banco de Dados I

E
Empregados
Ei
i Empregados
Nome:
Nome:EEi i
onde
nnkk, ,onde
nnkconjunto
conjuntonomes
nomes
k

Conjunto
de nomes

Conjunto
de endereos

R. X, 9
47

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Atributos de uma entidade (cont.)


Atributos chave de uma entidade
Conjunto de atributos que identificam univocamente
uma entidade
Seja f um atributo chave para um conjunto de
entidades D, xD e f(x)=v, ento
dD e dx, f(d)v

Exemplo
Matrcula atributo chave para Estudante

Tipos de atributos
Atributo atmico

endereo

Atributo que no pode ser subdividido

Atributo composto

local

cep cidade

Atributo formado por vrios atributos


rua
Banco de Dados I

nmero
48

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Atributos de uma entidade (cont.)


Tipos de atributos
Atributo mono-valorado

Atributo para o qual est associado um nico valor


Exemplo
Nome

Atributo multi-valorado

Atributo para qual podem estar associados vrios valores


Funo que associa um elemento do conjunto de entidades a um
subconjunto de um conjunto de valores
Exemplo
Para o atributo telefone podem estar associados vrios
valores, como telefone residencial, comercial e celular

Atributo derivado

Atributo cujo valor poder derivado com base no valor de um outro


atributo (atributo base)
Exemplo
Atributo idade pode ser derivado do atributo data-nasc

Banco de Dados I

49

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Relacionamento
Abstrao que representa associaes entre diferentes
conjuntos de entidades
Exemplo
Pode-se definir um relacionamento que associa o
empregado Brbara com o departamento Cincia da
Computao
Conjunto de relacionamentos (tipo de relacionamento)
Grupo de relacionamentos que representam o mesmo
tipo de associao
Exemplo
Conjunto de relacionamentos lotao
+Contm todos os relacionamentos entre empregado e
.departamento

Seja R um conjunto de relacionamentos representando


associaes entre os conjuntos de entidade E 1, E2, ... En,
Banco de Dados I

50

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Relacionamento (cont.)

Conjunto de relacionamentos (cont)


Seja R um conjunto de relacionamentos, representando
associaes entre os conjuntos de entidades E1, E2, ... En, ento
R E1 x E 2 x E n
Seja rR, ento r=(e1, e2, , en), onde e1E1, e2E2, , enEn,

Exemplo

Considere o conjunto de relacionamentos lotao


lotao Departamento x Empregado
(Brbara, Cincia da Computao) lotao

Papel (role)
Funo que uma entidade desempenha no relacionamento
Exemplo
Papel de empregado
lotado (Bbara lotada em Cincia da Computao)
Papel de departamento
Lota (Cincia da Computao lota Brbara)

Banco de Dados I

51

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Relacionamento (cont.)

Grau de Relacionamento
Nmero de entidades participantes no relacionamento
Relacionamento binrio
Relacionamento de grau 2
Exemplo

Relacionamento ternrio

Relacionamento de grau 3
Exemplo
Relacionamento Agncia-Conta-Cliente

Cliente

Agncia_Conta-Cliente
Banco de Dados I

Conta

Agncia

52

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Relacionamento (cont.)

Auto-relacionamento (relacionamento recursivo)


Relacionamento envolvendo um nico conjunto de
entidades
O conjunto de entidades apresenta diferentes papis
Considere o seguinte cenrio:

Cada departamento possui vrios supervisores


responsveis por um subconjunto de empregados do
departamento
Modelagem do relacionamento entre empregado e supervisor
Um supervisor tambm uma entidade do tipo Empregado
Relacionamento supervisiona

Empregado
Empregadodesempenha
desempenhadois
doispapis
papis
---supervisionado-por
-supervisionado-por(1)
(1)
---supervisor-de
-supervisor-de(2)
(2)

1
1

1
1

Empregado
Banco de Dados I

2
2
Supervisiona
53

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Relacionamento (cont.)

Atributos de relacionamento
Propriedades que descrevem um relacionamento
Exemplo

Considere o atributo data-lotao


Representa a data em que um empregado foi lotado em um
determinado departamento
data-lotao um atributo do relacionamento lotao
Considere o atributo nota na modelagem de dados da FCRS
Descreve a nota de um aluno em uma disciplina
nota um atributo do relacionamento cursa
Cursa representa o relacionamento entre os conjuntos de
entidades Estudante e Disciplina

Banco de Dados I

54

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Restries estruturais de relacionamentos

Cardinalidade de relacionamento
Indica o nmero de entidades que podem participar de um
determinado relacionamento

Seja R um relacionamento binrio entre os conjuntos de entidades A e B


A Cardinalidade de R deve ser uma das seguintes :

Um para um (1:1)
Uma entidade de A s pode estar associada a uma

.. entidade de B

Uma entidade de B s pode estar associada a uma


Um para muitos (1:N)
Uma entidade de A pode estar associada a qualquer
de entidades de B
Uma entidade de B s pode estar associada a uma
Muitos para um (N:1)
Uma entidade de A s pode estar associada a uma
B
Uma entidade de B pode estar associada a qualquer
de entidades de A

Banco de Dados I

.. entidade de A

.. quantidade

.. entidade de A

.. entidade de

.. quantidade

55

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Restries estruturais de relacionamentos (cont.)


Cardinalidade de relacionamento (cont.)

Muitos para muitos (N:N)


Uma entidade de A pode estar associada a qualquer
.. quantidade de entidades de B
Uma entidade de B s pode estar associada a qualquer

.. quantidade de entidades de A

Exemplos

1:N

1:Nentre Departamento e
Cardinalidade do relacionamento lotao
Empregado
N:N
N:N
Cardinalidade do relacionamento cursa
entre Estudante e
Disciplina

Cardinalidade do auto-relacionamento supervisiona

1:N
1:N

Cardinalidade do relacionamento que modela o fato de que


1:1
cada departamento da empresa possui 1:1
um gerente
Banco de Dados I

56

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Restries estruturais de relacionamentos (cont.)

Restrio de participao
Especifica a obrigatoriedade ou no de uma entidade e
participar de um relacionamento com outra entidade
Participao total
A participao de um conjunto de entidades A total em um
relacionamento R, se toda entidade de A participa de pelo menos um
relacionamento em R
Dependncia existencial
Exemplo

Considere o relacionamento lotao,


lotao para o qual todo
empregado deve estar lotado em algum departamento
A participao de Empregado em lotao total

Participao parcial
A participao de um conjunto de entidades A parcial em um
relacionamento R, se apenas um subconjunto de entidades de A
participa em R
Exemplo

Relacionamento cursa entre Estudante e Disciplina

Banco de Dados I

57

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -

Entidade fraca
Entidade cuja existncia depende de estar associada, via um
relacionamento (relacionamento de identificao),
identificao com uma
outra entidade (entidade forte)
forte
Exemplo
Considere o relacionamento dependncia entre os
conjuntos de entidades Empregado e Dependente

Dependente contm os dependentes dos empregados da empresa

A existncia de um dependente Brbara

Depende da existncia de um empregado Andr e que


Brbara esteja relacionada a Andr atravs do relacionamento
dependncia

Uma entidade fraca identificada


Por estar relacionada com uma entidade forte
Pelo atributo chave da entidade forte

Atributos da prpria entidade fraca


Chave parcial

Banco de Dados I

58

2. Modelo Entidade-Relacionamento
- Diagrama ER -

Ferramenta de projeto
Capaz de capturar e representar graficamente toda
estrutura lgica de um banco de dados
Utilizada para modelagem de BDs
Existem ferramentas
Fornecem uma interface grfica para o
desenvolvimento de DERs
A partir do DER especificado, geram o esquema do BD
relacional
ERWin

Banco de Dados I

59

2. Modelo Entidade-Relacionamento
- Diagrama ER -

Notao
Smbolo
Smbolo

Representao
Representao

Conjunto de entidades
Conjunto de entidades
fracas
Conjunto de relacionamentos
(relacionamento)
Relacionamento de
identificao
Nome atributo
Banco de Dados I

Atributo
60

2. Modelo Entidade-Relacionamento
- Diagrama ER -

Notao
Smbolo
Smbolo

Representao
Representao

Nome atributo

Atributo chave

Nome atributo

Atributo derivado

Nome atributo

Atributo multivalorado

Nome atributo

Atributo composto
Nome atributo
Banco de Dados I

Nome atributo
61

2. Modelo Entidade-Relacionamento
- Diagrama ER -

Notao
Smbolo
Smbolo

Representao
Representao

Atributo chave parcial de


uma entidade fraca

Nome atributo

E1

R
(min,max)

E1
Banco de Dados I

E2

Cardinalidade 1:N

Restrio estrutural de
participao de E em R

E2

Participao total de E2
em R
62

2. Modelo Entidade-Relacionamento
- Diagrama ER -

Exerccio
Utilize o DER para modelar o BD para o seguinte cenrio
A empresa X tem seus dados organizados da seguinte
forma:
Os empregados esto lotados em diversos departamentos.
Funcionrios so diretamente chefiados por supervisores.
importante identificar o supervisor de cada funcionrio
Todo funcionrio deve estar lotado em um departamento.
Nenhum funcionrio pode estar lotado em mais de um
departamento
Um departamento possui no mnimo 5 empregados, onde um
deles o gerente do departamento.
Os dependentes dos funcionrios devem possuir como
atributos: nome, data-nasc. A idade limite para ser dependente
de um empregado 18 anos
O salrio de um empregado calculado com base nos seus
diversos vencimentos.
Para tipo de vencimento, existe uma descrio e o valor
correspondente
Banco de Dados I

63

2. Modelo Entidade-Relacionamento
- Diagrama ER -

Quando um departamento for participar de lotao,


ter, no mnimo, cinco empregados

Cod_venc

descrio

Vencimento

supervisiona
-supervisionado
-supervisor

dt_lotao

(1,1)
lotao

(1,1)

(0,n)

valor

(0,n)

Empregado

(1,n)

ganha

(0,n)
(5,n)

matr

dt_nasc

nome

(0,1)

dependncia

idade

Departamento
(0,1)

gerncia

(1,1)

nome

Dependente

dt_nasc
Banco de Dados I

64

2. Modelo Entidade-Relacionamento
- Diagrama ER -

Cod_venc

descrio

Vencimento

supervisiona
-supervisionado
-supervisor

dt_lotao

n
lotao

valor

1
n

Empregado

ganha

1
1

matr

dt_nasc

nome

dependncia
n

Departamento
1

gerncia

nome

idade

Dependente

dt_nasc
Banco de Dados I

65

2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -

Especializao
Existem conjuntos de entidades compostos de subgrupos de
entidades
Cada subgrupo apresenta propriedades diferentes dos
outros subgrupos
Considere o conjuntos de entidades Empregado na
modelagem dos dados de um universidade
Podemos identificar os seguintes subconjuntos dentro de
Empregado
Professores
Titulao
Universidade de titulao
Regime de trabalho (DE, 40h, 20h)
Escriturrios
Grau de instruo
rea de atuao (contador, secretria, etc)
Engenheiros
Especialidade

Subconjuntos diferenciados por tipo de empregado


Banco de Dados I

66

2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -

Especializao (cont.)
Definio
Processo de identificao de subgrupos de entidades
dentro de um conjunto de entidades
Processo de especializao pode ser recursivo
Um nico conjunto de entidades pode ser especializado
por mais de uma caracterstica de diferenciao
(especializao)
No exemplo de Empregado em uma universidade
Especializao por tipo de empregado
Especializao por tipo de contrato
CLT
Servios prestados

Um entidade deve pertencer s vrias especializaes


Os subgrupos identificados em um processo de especializao
podem participar de relacionamentos que no se aplicam a
todas entidades do conjunto de entidades de origem
Banco de Dados I

67

2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -

Especializao (cont.)
Notao MER
Empregado

is
isaa(
(um)
um)

Empregado
EmpregadoisisaaProfessor
Professorou
ou
Empregado
is
a
Escriturrio
Empregado is a Escriturrioou
ou
Empregado
is
a
Engenheiro
Empregado is a Engenheiro

ISA
regime_tr

Professor
titulao

uni_tit

Banco de Dados I

Escriturrio
Grau_ins

rea_atua

Engenheiro
especialidade
68

2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -

Especializao (cont.)
Herana de propriedades
Os subgrupos de entidades herdam todas as
propriedades do conjunto de entidade de mais alto
nvel
nome

Empregado
dt_nasc
matr

ISA
regime_tr

Professor
titulao

uni_tit

Banco de Dados I

Escriturrio
Grau_ins

rea_atua

Engenheiro
especialidade
69

2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -

Especializao (cont.)
realizada sobre um nico conjunto de entidades
Identificar subgrupos
nfase nas diferenas entre entidades de um mesmo
subconjunto de entidades
Atravs dos subgrupos mais especializados
Generalizao
Processo de identificao de conjuntos de entidades que
possuem caractersticas em comum
Mesmos atributos e participam de mesmos
relacionamentos
Formao de um nico conjunto de entidades de mais alto
nvel
realizada sobre vrios conjuntos de entidades
Identificar um conjunto de entidades de mais alto nvel
Banco de Dados I

70

2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -

Generalizao (cont.)
nfase nas similaridades entre diversos conjuntos de
entidades
Reduo de redundncia de representao
Atributos compartilhados s sero representados no
conjunto de entidades de nvel mais alto
No sero repetidos

Na prtica
Generalizao o processo inverso da especializao
Duas estratgias que devem ser utilizadas
Especializar onde for necessrio
Generalizar onde for possvel

Banco de Dados I

71

2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -

Especificao de restries de generalizao e especializao


Sejam E1, E2, , En conjuntos de entidades de nvel mais baixo que o
conjunto de entidades E
E

ISA
E1

E2

...
...

En

Disjuno
0<i,jn, ij : Ei Ej =
Nenhuma entidade de E pode pertencer a mais de um
subgrupo
Banco de Dados I

72

2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -

Especificao de restries de generalizao e

especializao

Completeza
Especifica se uma entidade de E tem que pertencer
obrigatoriamente a um dos conjuntos de entidades de
mais baixo nvel ou no
Total
E=

E
n

i=1

Parcial
E

n E

i=1

Banco de Dados I

73

2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -

Agregao
Abstrao que representa relacionamentos como
entidades
Mecanismo utilizado para representar relacionamentos de
relacionamentos
Exemplo
Considere a modelagem de dados em um banco BX.
Clientes do BX esto relacionados a agncia e conta
Estratgia 1
Agncia

Conta

n
Cliente
Banco de Dados I

74

2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -

Agregao (cont.)
Problemas na Estratgia 1
No representa a estrutura lgica que deve ser
modelada
Relacionamento de cliente com o relacionamento agnciaconta

Na prtica, para acessar todas as contas de uma


agncia
Tero que ser acessadas todas triplas (agncia,conta,cliente)
Uma conta pode pertencer a vrios clientes
Vrios acessos redundantes

Banco de Dados I

75

2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -

Agregao (cont.)
Utilizar o mecanismo de agregao
cod_ag

nome

Agncia

ender gerente

num_conta

saldo

Conta

n
data_abertura

cod_cliente
CPF
nome
Banco de Dados I

n
Cliente

ender
data-nasc
76

Sumrio

Introduo aos Sistemas de Banco de Dados


Modelo de Entidades e Relacionamentos
Bancos de Dados Relacionais
O Modelo Relacional
Modelagem de Dados
lgebra Relacional
Linguagem de Manipulao e Consulta
Projeto de Bancos de Dados Relacionais
Projeto Lgico de Bancos de Dados

Banco de Dados I

77

Sumrio
Introduo aos Sistemas de Banco de Dados
Projeto de Bancos de Dados Relacionais

Bancos de Dados Relacionais


O Modelo Relacional
Modelagem de Dados
lgebra Relacional
Linguagem de Manipulao e Consulta
Projeto Lgico de Bancos de Dados

Banco de Dados I

78

3. Modelo Relacional
- Introduo -

Proposto em 1970 por Codd


IBM
Consolidou-se como principal modelo de dados para

aplicaes comerciais
Modelo de dados para Bancos de Dados Relacionais
SBDs relacionais
DB2 (IBM)
Informix
ADABAS
Sybase
Oracle
SQL Server (Microsoft)
Banco de Dados I

79

3. Modelo Relacional

- Estrutura de um Banco de Dados Relacional Um banco de dados relacional consiste


Um conjunto de tabelas
Estudante
Relaes
matr nome
cpf
Tabelas
1
1
231
Conjunto de linhas
2
1
451
3
1
472
Tuplas
3
2
549
Linhas
3
3
465
Conjunto de colunas
Nome das colunas

end
R X, 50
R Y, 1
R V, 502
R Z, 501
R A, 501

dt-nasc
20000102
19991001
19990510
19980601
20000203

Atributos

Banco de Dados I

80

3. Modelo Relacional
- Conceitos Bsicos -

Domnio
Conjunto de valores permitidos para um atributo
Valores so atmicos
Indivisveis

Exemplo: Domnio do atributo matrcula

Conjunto de todos os valores vlidos de matrcula

dom(A) denota o domnio do atributo A


Tipo de dados e formato
Utilizados para especificar um domnio

Exemplo: telefone
tipo char com formato (ddd)ddd-dddd
dom(telefone) representa o conjunto de valores atmicos
vlidos para o tipo char e formato especificado

O atributo Ai um papel de D no esquema de R


Grau de R = nmero de Ai

Banco de Dados I

81

3. Modelo Relacional
- Conceitos Bsicos -

Restries do modelo relacional


Restrio de domnio
O valor de cada atributo A

Tem que ser um valor atmico de dom(A)

Restrio de Chave
Uma relao definida como um conjunto de tuplas
Elementos de um conjunto so distintos entre si

Tuplas de uma relao tm que serem distintas entre si


Duas tuplas em uma relao no podem ter a mesma combinao de
valores para seus atributos

Geralmente existe um subconjunto SC de atributos em um


esquema de relao R
Todas as tuplas de qualquer instncia r(R) apresentam uma
combinao diferente de valores para os atributos de SC
ti, tj r 0<i,jn, ij : ti[SC] tj[SC]
Super chave (superkey)

Banco de Dados I

82

3. Modelo Relacional
- Conceitos Bsicos -

Restries do modelo relacional (cont.)


Restrio de Chave (cont.)
Super chave pode apresentar atributos redundantes

Empregado(matr,nome,ender,cpf)
matr e cpf so atributos da super chave
Apenas matr ou apenas cpf
- condio necessria e suficiente para garantir a no
existncia de tuplas repetidas

Chave (key)

Super chave sem atributos redundantes


Para Empregado existem duas possveis chaves
matr ou cpf

Chave candidata (candidate key)

Atributos da super chave que podem funcionar como chave da relao

Chave primria (primary key)


Chave candidata escolhida como chave da relao
Identifica tuplas em uma relao
Garante a unicidade de uma tupla na relao

Banco de Dados I

83

3. Modelo Relacional
- Conceitos Bsicos -

Restries do modelo relacional (cont.)


Restrio de Integridade de Entidade
Especifica que nenhuma chave primria pode ter valor
nulo (null)
Garante que a chave primria identifique tuplas em uma relao

Restrio de Integridade Referencial


Sejam dois esquemas de relao R e S
Um conjunto de atributos FK de um esquema de relao
R chave estrangeira (foreign key) em R se
FK
s
utom S
b
i
atr ncia
s
O fere
re

Os atributos em FK tm o mesmo domnio que a chave primria


PK de um outro esquema de relao S, e
Um valor de FK em uma tupla t1 de r(R)
Ou ocorre em como valor de PK para uma tupla t2 em s(S)
t1[FK] = t2[PK]
ou nulo
t1 referencia a tupla t2

Banco de Dados I

84

3. Modelo Relacional
- Conceitos Bsicos -

Restries do modelo relacional (cont.)


Restrio de Integridade Referencial (cont.)
Exemplo: Considere o seguinte esquema de banco de
dados
Departamento(cod_depart, nome, ender)
Empregado(matr, nome, ender, cpf, lotao)
Se lotao referenciar cod_depart, ento lotao chave
estrangeira em Empregado
Deve ser garantido que o valor de lotao ou seja nulo ou
referencie um valor existente em Departamento
Integridade referencial
Atualmente garantida automaticamente pelos SGBD
existente no mercado

Banco de Dados I

85

3. Modelo Relacional
- Conceitos Bsicos -

Restries do modelo relacional (cont.)


Restrio de Integridade Referencial (cont.)
Exemplo: Considere o seguinte esquema de banco de
dados
Departamento(cod_depart, nome, ender)
Empregado(matr, nome, ender, cpf, lotao)

Create
Createtable
tableDepartamento
Departamento
(cod_depart
integer
(cod_depart integernot
notnull,
null,
nome
varchar(30)
nome
varchar(30)not
notnull,
null,
ender
varchar(30),
ender
varchar(30),
primary
primarykey
key(cod_depart))
(cod_depart))

Banco de Dados I

Create
Createtable
tableEmpregado
Empregado
(matr
integer
(matr integernot
notnull,
null,
nome
varchar(30)
nome
varchar(30)not
notnull,
null,
ender
varchar(30),
ender
varchar(30),
cpf
integer
not
cpf
integer
notnull,
null,
lotao
integer
not
null,
lotao
integer
not null,
primary
key
(matr),
primary key (matr),
unique
uniquekey
key(cpf),
(cpf),
foreign
key
(lotao)
foreign key (lotao)references
references
Departamento
Departamentoon
ondelete
deletecascade)
cascade)
86

3. Modelo Relacional

- Operaes de Atualizao Incluso


Insere t em r(R)
Lista de valores
Pode violar:
Restrio de domnio
Restrio de chave
Integridade existencial
Integridade referencial

Tratamento
Rejeitar a incluso
Solicitar novas informaes

Banco de Dados I

87

3. Modelo Relacional

- Operaes de Atualizao Excluso


Exclui t em r(R)
Condio sobre valores de atributos
Pode violar:
Integridade referencial

Tratamento
Rejeitar a excluso
Propagao em cascata
Mudar fk em R que referencia R

Banco de Dados I

88

3. Modelo Relacional

- Operaes de Atualizao Modificao


Modifica t[A1,A2,...,Ak] em r(R)
Condio sobre valores de atributos
Alguns SGBDs: update=delete+insert
Violao + tratamento:
Depende do atributo modificado
Domnio para qualquer atributo
PK = excluso + incluso
FK = verificar integridade referencial

Banco de Dados I

89

3. Modelo Relacional
- lgebra Relacional -

Coleo de operaes usadas para manipular relaes


O resultado de uma operao
op(r) r
Grupos de operaes
Operaes relacionais
Seleo; projeo; juno
Operaes de conjunto
Unio; interseo; diferena; produto cartesiano
Operaes especiais
Banco de Dados I

90

3. Modelo Relacional
- lgebra Relacional -

Linguagem de consulta para bancos de dados

relacionais
Relao

Relao

Consulta

Coleo de operadores sobre relaes


Desenvolvida por Codd

Linguagem procedimental
Operaes bsicas
Seleo
( )
Projeo
Unio
Diferena
Produto cartesiano
Banco de Dados I

()
()
(-)
(x)

Operaes unrias

Operaes binrias

91

3. Modelo Relacional

- lgebra Relacional [Operaes Bsicas] Operao de seleo


Seleciona um subconjunto de tuplas de uma relao
Com base em um predicado
Notao
P (r)

r uma relao e
P representa um predicado (condio de seleo)

Predicados so construdos atravs de tomos


tomos

t[Ai] t[Ak] , t r e Ai e Ak so atributos de r.


t[Ai] k, onde k uma constante
O smbolo denota um operador de comparao
=, , >, , <,
por (and), (or), (not)
tomos podem ser conectados
Os atributos devem possuir domnios iguais

Os atributos devem possuir domnios iguais


Regras para construo de frmulas
Todo tomo uma frmula
Se P1 e P2 so frmulas
P1 P2, P1 P2 e P1 tambm so frmulas

Banco de Dados I

92

3. Modelo Relacional

- lgebra Relacional [Operaes Bsicas] Operao de seleo (cont.)


Exemplo
Considere a relao Empregado

Empregado(matr, nome, ender, cpf, salrio, lotao)

Listar todos os empregados que ganham salrio maior


que 5000

salrio>5000

(Empregado)

Listar todos os empregados do departamento com


cdigo igual a 002 e que ganham salrios maior que
5000
Listar todos os empregados no lotados no
departamento com cdigo igual a 002 e que ganham
salrios entre 5000 e 10000
Banco de Dados I

93

3. Modelo Relacional

- lgebra Relacional [Operaes Bsicas] Operao de seleo (cont.)


Propriedade da seleo

(r) ( (r))
( (r)) ( (r))
12
1

Comutatividade da operao de seleo

Banco de Dados I

94

3. Modelo Relacional

- lgebra Relacional [Operaes Bsicas] Operao de Projeo


Seleciona um subconjunto de atributos de uma relao
Notao
Ai1, Ai2,, Ain (r)
r uma relao com esquema R(A1, A2, , An)
{Ai1, Ai2, , Ain} {A1, A2, , An}
Projeo de R sobre os atributos Ai1, Ai2, , Ain

Exemplo
Listar o nome e salrio de todos os funcionrios
nome, salrio (Empregado)

Listar nome e salrio de todos os empregado que


ganham salrio maior que 9000
Projeo
Projeo

Filtro
Filtrode
deatributos
atributos
Seleo
Seleo

Filtro
Filtrode
detuplas
tuplas

Banco de Dados I

95

3. Modelo Relacional

- lgebra Relacional [Operaes Bsicas] Operao de Unio


Executa a unio de duas relaes compatveis
Duas relaes com esquemas R(A1, A2, , An) e
B2, , Bn) so compatveis
Apresentam o mesmo nmero de atributos
dom(Ai)= dom(Bi), 0<in
Notao
r s
Exemplo
Considere as seguintes relaes

S(B1,

Empregado(matr, nome, ender, dt-nasc, cpf, salrio, lotao)


Dependente(nome-dep, data-nasc, matr-resp)

Liste o nome e data de nascimento de todos os


funcionrios e dependentes existentes na empresa
nome, dt-nasc (Empregado) nome-dep, data-nasc (Dependente)
Banco de Dados I

96

3. Modelo Relacional

- lgebra Relacional [Operaes Bsicas] Operao de Diferena


O resultado da operao r - s uma relao que contm
todas as tuplas de r que no pertencem a s
r e s so relaes compatveis
Exemplo
Considerando que na empresa s existam as relaes
Empregado e Dependente que referem-se a pessoas,
execute a seguinte consulta. Listar nomes de
empregados, desde que no existam dependentes com
mesmo nome
nome (Empregado) - nome-dep (Dependente)

Banco de Dados I

97

3. Modelo Relacional

- lgebra Relacional [Operaes Bsicas] Operao de Produto Cartesiano


Sejam r e s relaes com esquemas R(A1, A2, , An) e
S(B1, B2, , Bm), respectivamente
Resultado da operao r x s uma relao
T(r.A1, r.A2, , r.An, s.B1, s.B2, , s.Bm)
com n+m atributos
cada tupla de T uma combinao entre uma tupla de
r e uma tupla de s
tT v r e u s, tal que t[Ai]=v[Ai], 0<in, e
t[Bj]=u[Bj], 0<jm
Se a cardinalidade de r nr tuplas e a cardinalidade s
ns tuplas
A cardinalidade de T nr ns

Banco de Dados I

98

3. Modelo Relacional

- lgebra Relacional [Operaes Bsicas] Operao de Produto Cartesiano (cont.)


Exemplo
Sejam r e s mostradas abaixo. Calcule r x s
rxs
r
s
r.A r.B s.A s.B

A
a1
a1
a2

B
b1
b2
b1

Banco de Dados I

A
a1
a2
a2

B
b1
b3
b1

C
c1
c3
c4

a1
a1
a1
a1
a1
a1
a2
a2
a2

b1
b1
b1
b2
b2
b2
b1
b1
b1

a1
a2
a2
a1
a2
a2
a1
a2
a2

b1
b3
b1
b1
b3
b1
b1
b3
b1

s.C
c1
c3
c4
c1
c3
c4
c1
c3
c4
99

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de juno theta (theta-join)


Sejam r e s relaes com esquemas R(A 1, A2, , An) e
S(B1, B2, , Bm), respectivamente
O resultado da operao juno theta entre r e s uma
relao T(r.A1, r.A2, , r.An, s.B1, s.B2, , s.Bm) definida por

condio

s = condio (r x s)

condio de juno da forma


r.Ag s.Bi r.Ah s.Bk ... r.Am s.BL
Para cada r.Ai s.Bj, dom(r.Ai) = dom(s.BJ) e
{=, , >, , <, }

cada tupla de T uma combinao entre uma tupla de


r e uma tupla de s, sempre que a combinao satisfaa
condio de juno
Banco de Dados I

100

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de juno theta (cont.)


Exemplo
Sejam r e s mostradas abaixo. Calcule T= r
s
T
r
s

A
a1
a1
a2

B
b1
b2
b1

Banco de Dados I

A
a1
a2
a2

B
b1
b3
b1

C
c1
c3
c4

r.B s.B

r.A

r.B

s.A s.B s.C

a1
a1
a1
a1
a2

b1
b2
b2
b2
b1

a2
a1
a2
a2
a2

b3
b1
b3
b1
b3

c3
c1
c3
c4
c3

101

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de Juno de Igualdade (Equijoin)


Operao de juno theta, cujo operador de comparao
a igualdade (=)
Sejam r e s relaes com esquemas R(A1, A2, , An) e
S(B1, B2, , Bm), respectivamente
O resultado da operao juno de igualdade entre r e s
uma relao T(r.A1, r.A2, , r.An, s.B1, s.B2, , s.Bm)
definida por

condio

s = condio (r x s)

condio de juno da forma


r.Ag = s.Bi r.Ah = s.Bk r.Am = s.BL
Para cada r.Ai=s.BJ, dom(r.Ai) = dom(s.BJ)
Banco de Dados I

102

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de Juno de Igualdade (cont.)


Exemplo
Considere as relaes Departamento (d) e Empregado (e) mostradas
abaixo. Calcule a seguinte juno de igualdade
Departamento

Departamento
cod-dep
1
2
3

nome
Informtica
R. Humanos
Financeiro

Banco de Dados I

d.cod-dep=e.lotao

Empregado

Empregado
ender
R. X,10
R. Y,5
R. Z. 2

gerente
21
11
40

Matr
11
21
33
35
37
40
57

Nome
Brbara
Andr
Sofia
Lucas
Rebeca
Caio
Yasmin

cpf
231
451
472
549
465
555
800

salrio lotao
8000
2
9000
1
3000
2
500
2
400
3
800
1
400
1

103

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de Juno de Igualdade (cont.)


Exemplo
Departamento

d.cod-dep=e.lotao

Empregado

d.cod-dep d.nome
d. ender d. gerente
1
Informtica R. X,10
21
1
Informtica R. X,10
21
1
Informtica R. X,10
21
2
R. Humanos R. Y,5
11
2
R. Humanos R. Y,5
11
2
R. Humanos R. Y,5
11
3
Financeiro R. Z. 2
40

e.nome,d.nome (Departamento

e.matr e.nome e.cpf e.salrio e.lotao


21
Andr
451
9000
1
40
Caio
555
800
1
57
Yasmin
800
400
1
11
Brbara
231
8000
2
33
Sofia
472
3000
2
35
Lucas
549
500
2
37
Rebeca
465
400
3
Empregado)

d.cod-dep=e.lotao

Para
Paracada
cadaempregado,
empregado,listar
listarseu
seunome
nomeeeoo
nome
nomedo
dodepartamento
departamentoonde
ondeest
estlotado.
lotado.
Banco de Dados I

104

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de Juno Natural (Natural Join)


Operao de juno de igualdade
Todos os com o mesmo nome nas duas relaes

Participam obrigatoriamente da condio de juno


Envolvidos no operador de comparao (=)
Aparecem s uma vez na relao resultado

Sejam r e s relaes com esquemas


R(A1, A2, , An, B1, B2, , Bi) e
S(B1, B2, , Bi, C1, C2, , Cm), respectivamente
O resultado da operao juno natural entre r e s uma relao
T(r.A1, r.A2, , r.An,B1, B2, , Bi,s.C1, s.C2, ,s.Cm) definida por

s = condio (r x s)
condio de juno da forma
r.B1 = s.B1 r.B2 = s.B2
condio

Notao
r s
Banco de Dados I

r.Bi = s.Bi
105

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de Juno Natural (cont.)


Exemplo
Considere as relaes Departamento (d) e Empregado (e) mostradas
abaixo. Calcule a seguinte juno de igualdade
Departamento

Departamento
cod-dep
1
2
3

nome
Informtica
R. Humanos
Financeiro

Banco de Dados I

Empregado

Empregado
ender
R. X,10
R. Y,5
R. Z. 2

gerente
21
11
40

Matr
11
21
33
35
37
40
57

Nome
Brbara
Andr
Sofia
Lucas
Rebeca
Caio
Yasmin

cpf
231
451
472
549
465
555
800

salrio cod-dep
8000
2
9000
1
3000
2
500
2
400
3
800
1
400
1

106

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de Juno de Igualdade (cont.)


Exemplo
Departamento

Empregado

d.cod-dep d.nome
d. ender d. gerente
1
Informtica R. X,10
21
1
Informtica R. X,10
21
1
Informtica R. X,10
21
2
R. Humanos R. Y,5
11
2
R. Humanos R. Y,5
11
2
R. Humanos R. Y,5
11
3
Financeiro R. Z. 2
40

Banco de Dados I

e.matr e.nome e.cpf e.salrio


21
Andr
451
9000
40
Caio
555
800
57
Yasmin
800
400
11
Brbara
231
8000
33
Sofia
472
3000
35
Lucas
549
500
37
Rebeca
465
400

107

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de Semi-Juno (Semi-join)


Definida por

s = R (r

s)

representa uma condio de juno qualquer


Operao de Interseo
O resultado da operao r s uma relao que contm
todas as tuplas de r e que pertencem a s
r e s so relaes compatveis
O resultado de r s definido por
r s= r - (r-s)

Banco de Dados I

108

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de diviso


Sejam r e s relaes com esquemas
R(A1, A2, , An, B1, B2, , Bm) e
S(B1, B2, , Bm), respectivamente
Resultado da operao r s
uma relao T(A1, A2, , An), onde, para uma tupla v
pertencer a T, todos os valores de v precisam aparecer
em R em associao com toda tupla de S
Exemplo
1
r
s
A
B
C
C
rs
a1
a1
a1
a1
a2

Banco de Dados I

b1
b3
b3
b3
b2

c1
c1
c2
c3
c3

c1
c2
c3

a1

b3

109

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de diviso (cont.)


Exemplo 2
r
s
A
B
C
a1
a1
a2
a2
a2
a2

b1
b3
b3
b3
b1
b1

c1
c1
c1
c2
c1
c2

rs

c1
c2

a2
a2

b3
b1

Exemplo 3

Considere a relao r do exemplo 2 e a relao s abaixo.


rs
Calcule r s

b3

c1

Banco de Dados I

a1
a2
110

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de diviso (cont.)


Sejam r e s relaes com esquemas
R(A1, A2, , An, B1, B2, , Bm) e Atributos
Atributosde
derrpodem
podemaparecer
aparecer
em
qualquer
ordem
em qualquer ordem
S(B1, B2, , Bm), respectivamente
R-S=T(A1, A2, , An)
Resultado da operao da diviso de s por r definido por

r s = R-S(r) - R-S( (R-S(r) x s) - R-S,S(r) )

Re-ordena os atributos de
Associa todas tuplas de r com s

Fornece pares de tuplas de R-S(r) e s, mas que no esto em r. Portanto


uma tupla do resultado desta operao ter, como sua componente s, u
tupla de s, mas que no est associada com uma tupla de r.
Exclui falsas associaes
Banco de Dados I

111

3. Modelo Relacional

- lgebra Relacional [Operaes Derivadas] Operao de diviso (cont.)


Exemplo
Considere as tabelas Emp-Desc(matr,cod-desc) e
Desconto(cod-desc,valor,descrio), onde

A tabela Emp-Desc relaciona os empregados com os diversos


descontos que obrigado a pagar
Emp-Desc
matr Cod-desc
Desconto
11
2
Cod-desc
Valor
descrio
11
3
1
10
IR
15
1
2
8
INSS
15
2
3
5
seguro
15
3
17
2

Exerccio:
Utilizando a definio de diviso, mostrar passo a passo como
encontrado os empregados que tm descontados de seu salrio todos
os tipos de descontos possveis
Banco de Dados I

112

3. Modelo Relacional

- lgebra Relacional [Outras Operaes] Operaes sobre bancos de dados relacional


No pertencentes ao conjunto de operaes da lgebra relacional
convencional
Operao de Atribuio (assignment)

s vezes, importante escrever uma expresso da lgebra relacional


em diferentes partes
Atribuir resultados das partes a relaes temporrias
Notao
:=

Exemplo
rel1 R-S((R-S(r) x s) - R-S,S(r))
rel2R-S(r)
resultado= rel1 - rel2

Banco de Dados I

113

3. Modelo Relacional

- lgebra Relacional [Outras Operaes] Funes Agregadas


Funes aplicadas sobre uma coleo de valores do banco de dados
sum
Retorna o somatrio dos valores de uma coleo
avg
Retorna a mdia dos valores de uma coleo
max
Retorna o maior valor de uma coleo de valores
min
Retorna o menor valor de uma coleo
count
Retorna o nmero de elementos de uma coleo
distinct
Algumas vezes, torna-se necessrio eliminar repeties para o
clculo das funes agregadas
Concatena-se a palavra distinct aps o nome da funo

Banco de Dados I

114

3. Modelo Relacional

- lgebra Relacional [Outras Operaes] Funes Agregadas (cont.)


Exemplos
Considere a relao

Empregado(matr, nome, ender, salrio, cpf, lotao)


matr a chave primria de Empregado

Encontre o nmero de empregados lotados no departamento 001


count(matr(lotao=001 (Empregado)))

Encontre o maior salrio da empresa


max(salrio(Empregado))
Encontre o salrio mdio da empresa
avg-distinct(salrio(Empregado))
Encontre a quantidade de salrios distintos no departamento
001
count-distinct(salrio(lotao=001 (Empregado)))
Encontre o primeiro e segundo maiores salrios da empresa

Banco de Dados I

115

3. Modelo Relacional

- lgebra Relacional [Outras Operaes] Operao de Juno Externa (outer-join)


Considere as seguintes relaes
Vendedor(matr, nome, ender, salrio, cpf, lotao)
Vendas(matr-vend,cod-item,quantidade, pr-venda)
Considere a seguinte consulta
Listar o histrico de vendas de cada vendedor
Esquema do resultado
Res(matr,nome,cod-item,quantidade,pr-venda)
Res(Vendedor
Vendas)

Consulta com perda de informao

No aparecero no resultado
Vendedores que no efetuaram vendas

Definir uma operao que evite esta perda de informao


Outer join
Adcionar tuplas extras ao resultado de uma juno
natural

Banco de Dados I

116

3. Modelo Relacional

- lgebra Relacional [Outras Operaes] Operao de outer-join (cont.)


Tipos
Juno externa esquerda (left outer join)
Juno externa direita (right outer join)
Juno externa completa (full outer join)
left outer join
Notao
A

Calcula o resultado da juno de A com B


Adiciona ao resultado da juno
Tuplas da relao esquerda (A) que no satisfazem a
condio de juno
Atribui valores nulos aos atributos no definidos para estas
tuplas

Banco de Dados I

117

3. Modelo Relacional

- lgebra Relacional [Outras Operaes] Operao de outer-join (cont.)


left outer join (cont.)
Considere as seguintes relaes

Vendedor(matr, nome, salrio)


Vendas(matr,cod-item,qtde, pr-venda)

Listar o histrico de vendas de cada vendedor


Vendedor
matr
nome

11
14
15
17
19
21

Brbara
Andr
Sofia
Caio
Lucas
Camila

Banco de Dados I

salrio
5000
7000
3000
500
700
900

Vendas
matr

11
11
14
21

cod-item

qtde

pr-venda

72727
545
545
13

160
50
87
10

2.00
15.50
15.50
8.75

118

3. Modelo Relacional

- lgebra Relacional [Outras Operaes] Operao de outer-join (cont.)


left outer join (cont.)
Listar o histrico de vendas de cada vendedor
Vendedor

Vendas

matr

nome

salrio

cod-item

qtde

pr-venda

11
11
14
15
17
19
21

Brbara
Brbara
Andr
Sofia
Caio
Lucas
Camila

5000
5000
7000
3000
500
700
900

72727
545
545
Null
Null
Null
13

160
50
87
Null
Null
Null
10

2.00
15.50
15.50
Null
Null
Null
8.75

Banco de Dados I

119

3. Modelo Relacional

- lgebra Relacional [Outras Operaes] Operao de outer-join (cont.)


right outer join
Notao
A

Calcula o resultado da juno de A com B

Adiciona ao resultado da juno


Tuplas da relao direita (B) que no satisfazem a
condio de juno
Atribui valores nulos aos atributos no definidos para estas
tuplas

full outer join


Notao
A

Calcula o resultado da juno de A com B

Adiciona ao resultado da juno


Tuplas das relaes A e B que no satisfazem a condio
de juno
Atribui valores nulos aos atributos no definidos para estas
tuplas

Banco de Dados I

120

3. Modelo Relacional
- Clculo Relacional -

Desenvolvido por Codd


Notao para definir a informao desejada atravs

das propriedades de uma consulta


No h a especificao de um procedimento para a
obteno da informao
Linguagem no procedimental
Notao
t r
a tupla t pertence relao r
t[A]
valor da tupla t sobre o atributo A

Consulta em Clculo Relacional


{t | P(t)}
O conjunto de todas tuplas t, tal que o predicado (frmula) P
verdade para t

Banco de Dados I

121

3. Modelo Relacional
- Clculo Relacional -

Frmulas so construdas atravs de tomos


tomos
t r, onde t varivel do tipo tupla e r uma relao (no
permitida a utilizao do operador )
s[Ai] t [Bk], s e t so variveis do tipo tupla. Ai e Bk
representam atributos sobre os quais s e t esto definidas
respectivamente.
O smbolo denota um operador de comparao (
=, , >, , <,

Os atributos devem possuir domnios cujos elementos possam

ser comparados por

s[Ai] K ,onde K uma constante

Banco de Dados I

122

3. Modelo Relacional
- Clculo Relacional -

tomos podem ser conectados pelos operadores lgicos (and),


(or), (not)
Regras para construo de frmulas

Todo tomo uma frmula


Se P1 e P2 so frmulas, ento P1 P2, P1 P2, P1, P2 e P1 P2
tambm so frmulas
P1 P2 (P1 implica P2)
Se P1 verdade ento P2 necessariamente
Equivalente
P1 P2

Se P uma frmula e r uma relao, ento (tr) (P(t)) uma


frmula
Quantificador existencial
Se P uma frmula e r uma relao, ento
(tr)
(P(t))
uma
uma
Existe
pelo
menos
tupla
Existe
pelo
menos
uma
tuplade
derr
para
frmula
paraaaqual
qualP(t)
P(t)verdade
verdade
Quantificador universal
P(t)
P(t)verdade
verdadepara
paratodas
todasas
astuplas
tuplas
de
r
de r
Banco de Dados I

123

3. Modelo Relacional
- Clculo Relacional -

Exemplos
Considere as seguintes relaes

Departamento(cod_depart, nome, ender)


Empregado(matr, nome, ender, cpf, lotao)

Consulta C1:

Nome e salrio dos empregados que ganham mais que


5000

C1: {e[nome],e[salrio] | e Empregado e[salrio]>5000 }


Consulta na lgebra Relacional:
nome, salrio (salrio>5000 (Empregado))

Banco de Dados I

124

3. Modelo Relacional
- Clculo Relacional -

Consulta C2:

Nome e salrio dos empregados que trabalham no


departamento Informtica

C2: {e[nome],e[salrio] | e Empregado


((d)(d Departamento

d[nome]=DC d[cod_dep]=e[lotacao]))}

Consulta C3:

Nome dos empregados que no possuem dependentes

C3: {e[nome] | e Empregado


(( p) (((p Dependente) (e.matr=p.matr)))}

Banco de Dados I

125

3. Modelo Relacional
- Clculo Relacional -

Expresses seguras
Ck: {e | (e Empregado)}

Retorna um conjunto infinito de tuplas


Domnio de uma expresso
Valores que aparecem como constantes ou que existem
em alguma tupla referenciada (mencionada) na expresso
Dom(e Empregado e[salrio]>5000)
5000 mais todos os valores de tuplas pertencentes a
Empregado

A expresso segura se os valores que aparecem no seu


resultado pertencem ao domnio da expresso

Banco de Dados I

126

3. Modelo Relacional
- Clculo Relacional -

Exemplo
Dom( (e Empregado))
Valores de tuplas pertencentes a Empregado

{e | (e Empregado)}
Tem como resultado tuplas que no pertencem a Empregado

((e Empregado)) no segura

Padro para expressividade relacional

(completeza relacional)

Uma forma de representao relacionalmente completa se


permite a definio de qualquer resultado de consulta definida por
uma expresso de clculo relacional

Emprego no processo de otimizao


P1 (P1 P2) P1
Banco de Dados I

127

4. Projeto de Bancos de Dados


- Fases -

Mini-mundo
(mundo real)
real

Anlise de
Requisitos
Requisitos de dados

Independente
do SGBD

Anlise
Funcional

Projeto
Conceitual
Esquema Conceitual (MER)

Projeto Lgico

(mapeamento de
modelo de dados)
Esquema Conceitual representado
no modelo de dados do SGBD

Especfico para
cada SGBD

Projeto
(Software)

Projeto Fsico
Estruturas de armazenamento
e caminhos de acesso (ndices)

Implementao
Implementao
Banco de Dados I

Expresses DDL e carga do BD


128

4. Projeto de Bancos de Dados


- Fases -

Anlise (especificao) de requisitos


Projetista de banco de dados deve realizar entrevista com
usurios prospectivos do banco de dados
Entender e documentar
Requisitos de dados

Projeto conceitual
Com base nos requisitos de dados
Criar um esquema conceitual para o banco de dados
Modelo de dados conceitual
MER
Construir um DER

Projeto lgico
Com base no DER definido na fase anterior
Criar um diagrama relacional
Representao grfica de um esquema relacional

Banco de Dados I

129

4. Projeto de Bancos de Dados


- Fases -

Projeto Fsico
Definir estruturas de armazenamento
Como e onde devem ser armazenadas as tabelas
Uma tabela em um arquivo
Vrias tabelas em um nico arquivo

Definir caminhos de acesso


Definir ndices
Definir tipo de ndice
Ordenado
Primrio
Secundrio

Utilizar critrios de performance


Especfico por SGBD

Implementao
Com base no DR definido na fase 3 e as estruturas de armazenamento
e caminhos de acesso definidos na fase anterior
Criar o banco de dados
Expresses DDL

Carregar o BD

Banco de Dados I

130

4. Projeto de Bancos de Dados

- Mapeamento do MER para um Banco de Dados Relacional Ferramentas CASE


Modelagem ER grfica
Gerao automtica de esquema (DDL)
Algoritmo de mapeamento
Sete passos

Banco de Dados I

131

4. Projeto de Bancos de Dados

- Mapeamento do MER para um Banco de Dados Relacional Diagrama relacional (DR)


Ferramenta grfica utilizada para representar um
esquema de banco de dados relacional
A partir de um DER, pode-se construir um DR como

descrito a seguir

Passo 1
Para cada conjunto de entidades E, deve ser criada
uma tabela como todos os atributos de E
Escolher uma chave candidata para ser a chave primria da
tabela
Apenas os componentes atmicos de atributos compostos
devem ser includos

Notao de tabela no DR
Nome da
Tabela

Banco de Dados I

132

4. Projeto de Bancos de Dados

- Mapeamento do MER para um Banco de Dados Relacional Passo 2


Para cada relacionamento binrio 1:1 entre os
conjuntos de entidades E1 e E2
Escolher uma das tabelas, por exemplo E2, e incluir como
chave estrangeira em E2 a chave primria da outra tabela (E1)
Critrio de escolha
>> Entidade com participao total no relacionamento
Atributos de relacionamentos devem ser includos na tabela
com chave estrangeira

Notao
E1

PK

E2

PK
Banco de Dados I

133

4. Projeto de Bancos de Dados

- Mapeamento do MER para um Banco de Dados Relacional Passo 3


Para cada relacionamento binrio 1:N entre os
conjuntos de entidades E1 e E2
Identificar o conjunto de entidades que participa do lado N
(suponha que seja E2)
Incluir como chave estrangeira na tabela E2 a chave primria
da outra tabela (E1)
Atributos de relacionamentos devem ser includos na tabela
com chave estrangeira

Notao
E1

Banco de Dados I

PK

E2

134

4. Projeto de Bancos de Dados

- Mapeamento do MER para um Banco de Dados Relacional Passo 4


Para cada relacionamento binrio N:N entre os
conjuntos de entidades E1 e E2
Criar uma nova tabela auxiliar tab-aux para representar o
relacionamento
Incluir como chaves estrangeiras na tabela tab-aux as chaves
primrias de E1 e E2
Estes dois atributos comporo a chave primria de tab-aux
Atributos de relacionamentos devem ser includos na tabela
tab-aux

Notao
E1
PK-E1
Banco de Dados I

PK-E1

Tab-aux

PK-E2

E2
PK-E2
135

4. Projeto de Bancos de Dados

- Mapeamento do MER para um Banco de Dados Relacional Passo 5


Para relacionamento de grau maior que 2
Criar uma nova tabela auxiliar tab-aux para representar o
relacionamento
Incluir como chaves estrangeiras na tabela tab-aux as chaves
primrias das tabelas que participam do relacionamento
Estes atributos comporo a chave primria de tab-aux

Passo 6
Para cada conjunto de entidades fracas F
Cria uma tabela TFr com todos os atributos de F
Incluir como chave estrangeira de TF a chave primria da tabela
correspondentes ao conjunto de entidades fortes R
A chave primria de TFr ser a chave parcial de F mais a chave
primria de R

Banco de Dados I

136

4. Projeto de Bancos de Dados

- Mapeamento do MER para um Banco de Dados Relacional Passo 7


Para cada atributo multivalorado A de um conjunto de
entidades E1
Criar uma tabela T com o atributo A
Incluir como chave estrangeira em T a chave primria de E1
A chave primria de T ser composta do atributo A mais a
chave primria de E1

Banco de Dados I

137

4. Projeto de Bancos de Dados

- Mapeamento do MER para um Banco de Dados Relacional Exerccio


Construa o DR para o seguinte DER
cod-ag

nome

Agncia

ender gerente

num-conta

saldo

Conta

n
data_abertura

cod-cliente
CPF
nome
Banco de Dados I

n
Cliente

ender
data-nasc
138

4. Projeto de Bancos de Dados

- Mapeamento do MER para um Banco de Dados Relacional cod-ag

ender gerente

nome

num-conta
cod_ag

Agncia

saldo

Conta

num-conta

cod-ag

AG_CC

tipo-conta

cod-ag, num-conta

Cliente_Conta

data-abert

cod-cliente
ender

cod-cliente
CPF
nome
Banco de Dados I

Cliente

data-nasc
139

5. SQL

- Histrico Structured Query Language - SQL


Desenvolvida pela IBM
Structured English Query Language - Sequel
Linguagem de consulta para o sistema R
Primeiro prottipo de SBD relacional

Especificar consultas de forma interativa


ad hoc queries
Padro
ANSI
SQL 86
SQL 89
SQL 92
SQL 99
Propriedade de SBDs objeto-relacional
Banco de Dados I

140

5. SQL

- Definio de Esquemas em SQL Esquema de um banco de dados relacional


Conjunto de esquemas de relao mais um conjunto de
restries de integridade IC
Expresses DDL do SQL permitem especificar
Esquema de relaes(tabelas)
Domnio de valores associados a cada atributo
Restries de integridade
Conjunto de ndices a serem mantidos para cada relao
Estrutura de armazenamento fsico de cada relao em
disco
Autorizao de acesso para cada relao

Banco de Dados I

141

5. SQL

- Definio de Esquemas em SQL Criando tabelas


Estrutura bsica
CREATE TABLE nome-tabela
(nome-coluna tipo-de-dados [not null],
[nome-coluna tipo-de-dados [not null] ],
[CONSTRAINT nome-restrio]
UNIQUE nome-coluna
| PRIMARY KEY(nome-coluna {, nome-coluna})
Especifica
| FOREIGN KEY (nome-coluna {, nome-coluna})
chaves
candidatas
REFERENCES nome-tabela
[ON DELETE CASCADE |
SET NULL | NO ACTION ],
Definio
de restries [ON UPDATE CASCADE],
| CHECK (predicado)
)
Banco de Dados I

142

5. SQL

- Definio de Esquemas em SQL Criando tabelas (cont.)


Alguns tipos de dados suportados pelo SQL 92
char(n)
string de caracteres de tamanho fixo n

varchar(n)
string de caracteres de tamanho varivel (mximo n)

integer
smallint
decimal(p,d)

numrico com p dgitos


Dos p dgitos, d dgitos representam casas decimais aps a
vrgula

real

numrico ponto flutuante

date

data de calendrio

Banco de Dados I

Alphabetic
Alphabeticdate
dateformats
formats( (April
April15,
15,1998)
1998)
Numeric
date
formats
(
4/15/1998)
Numeric date formats ( 4/15/1998)
Unseparated
Unseparatedstring
stringformats
formats(19921225')
(19921225')
143

5. SQL

- Definio de Esquemas em SQL Criando tabelas (cont.)


Exemplo: Considere o seguinte esquema de banco de
dados
Departamento(cod_depart, nome, ender)
Empregado(matr, nome, ender, cpf,salrio,lotao)

Crie as tabelas Departamento e Empregado utilizando


a DDL do SQL com as seguintes restries
O salrio de cada empregado deve ser maior que 200
No podem existir valores de cpf repetidos
No se pode permitir a remoo de departamentos para os
quais ainda existam empregados lotados
Ao alterar o cdigo de de um departamento, alterar o valor do
atributo lotao para todos empregados do departamento

Banco de Dados I

144

5. SQL

- Definio de Esquemas em SQL Removendo tabelas


Estrutura bsica
DROP TABLE nome-tabela [CASCADE | RESTRICT]
Remove as tuplas da tabela e sua definio do catlogo

CASCADE remove as restries do tipo foreign key tabelas que


referenciam a tabela removida

Alterando tabelas
Estrutura bsica

ALTER TABLE nome-tabela


[ADD nome-coluna tipo de dados]
No
[DROP nome-coluna ]
Nosuportado
suportadopelo
peloDB2
DB2
[ADD CONSTRAINT nome-restrio]
[DROP CONSTRAINT nome-restrio]
[DROP PRIMARY KEY]
[ repetir ADD ou DROP em qualquer ordem]

Exerccio:
Alterar a tabela Empregado para que nome seja chave candidata
Banco de Dados I

145

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consultas simples sobre o banco de dados
Estrutura bsica
SELECT [ALL | DISTINCT] {* | expr [[AS] c_alias]
{, expr [[AS] c_alias] }}
FROM nome-tabela [[AS] qualificador]
{, nome-tabela [[AS] qualificador] }
WHERE predicado

ALL
Retorna todas as tuplas, inclusive repetidas (default)

DISTINCT
*

Retorna apenas tuplas no repetidas


Retorna todos os atributos da(s) tabela(s)

expr
Representa um atributo ou
Expresso matemtica envolvendo atributos das tabelas
salario*1.40

Banco de Dados I

146

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consultas simples sobre o banco de dados (cont.)

FROM
Representa o produto cartesiano das tabelas referenciadas

WHERE

Corresponde ao predicado de seleo da lgebra relacional


Exemplos: Considere o seguinte esquema de banco de dados
Departamento(cod_depart, nome, ender)
Empregado(matr, nome, ender, cpf,salrio,lotao)
Listar os funcionrios com salrio maior que 3000
Listar funcionrios com salrios maior que 1000 e menor que
2000
Listar nome dos funcionrios com o nome de seu departamento
de lotao
Listar nome dos funcionrios com o nome de seu departamento
de lotao e uma simulao de seu salrio com um aumento
de 15%
Banco de Dados I

147

5. SQL

- Conjunto de Operaes para Manipulao de Dados Predicados com operaes sobre strings
Identificao de padro
%
Casa com qualquer substring

Casa com qualquer caracter

Operador
like
Exemplos
nome like inf%

Retorna strings que iniciam pelo substring inf

nome like %si_


Retorna strings que contenham si como substring e terminem
com um caracter qualquer aps si

Listar todos empregados com sobrenome brayner


Select nome from Empregado where nome like %brayner%
Banco de Dados I

148

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consultas com o operador de unio


UNION
Unio de duas relaes (consultas)
Sem repeties

UNION ALL
Unio de duas relaes
Com repeties

Exemplo
Considere as seguintes relaes

Empregado(matr, nome, ender, dt_nasc, cpf, salrio, lotao)


Dependente(nome_dep, data-nasc, matr_resp)

Liste o nome e data de nascimento de todos os


funcionrios e dependentes existentes na empresa
select nome,dt_nasc from Empregado UNION
select nome,data_nasc from Dependente

Banco de Dados I

149

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consultas com o operador de interseo


INTERSECT
Interseo entre duas relaes (consultas)
Sem repeties

INTERSECT ALL
Interseo entre duas relaes
Com repeties

Consultas com o operador de diferena


EXCEPT
Diferena entre duas relaes (consultas)
Sem repeties

EXCEPT ALL
Diferena entre duas relaes (consultas)
Com repeties

Banco de Dados I

150

5. SQL

- Conjunto de Operaes para Manipulao de Dados Exerccios


Listar matrcula dos empregados que no possuem dependentes
Select
Selecte.matr
e.matr
From
empregado
From empregadoee
EXCEPT
EXCEPT
Select
Selectd.matr-resp
d.matr-resp
From
dependente
From dependentedd

Listar matrcula dos empregados que possuem dependentes


Select
Selecte.matr
e.matr
From
empregado
From empregadoee
INTERSECT
INTERSECT
Select
Selectd.matr-resp
d.matr-resp
From
dependente
From dependentedd

Consultas com consultas ordenadas


ORDER BY coluna-resultado [ASC | DESC]
{, coluna-resultado [ASC | DESC] }
Listar empregados ordenados por salrio na ordem decrescente e
por nome na ordem crescente
Banco de Dados I

151

5. SQL

- Conjunto de Operaes para Manipulao de Dados Funes Agregadas


Funes embutidas (built-in) aplicadas sobre uma coleo
de valores (colunas) do banco de dados
sum
Retorna o somatrio dos valores de uma coleo

avg

Retorna a mdia dos valores de uma coleo

max

Retorna o maior valor de uma coleo de valores

min

Retorna o menor valor de uma coleo

count

Retorna o nmero de elementos de uma coleo

Sintaxe
nome-da-funo (ALL | DISTINCT nome-coluna) | count(*)
No podem ser utilizados na clusula WHERE
Banco de Dados I

152

5. SQL

- Conjunto de Operaes para Manipulao de Dados Exerccios


Encontre o nmero de empregados lotados no
departamento de Informtica
select
selectcount(*)
count(*)
from
Empregado
from Empregadoe,e,Departamento
Departamentoee
where
wheree.lotacao=d.cod_dep
e.lotacao=d.cod_depand
andd.nome
d.nomelike
like'_nform_tica'
'_nform_tica'

Encontre o montante da folha de pagamento da empresa


select
selectsum(salario)
sum(salario)
from
Empregado
from Empregado

Encontre o salrio mdio pago pela empresa


select
selectavg(distinct
avg(distinctsalario)
salario)
from
Empregado
from Empregado

Banco de Dados I

153

5. SQL

- Conjunto de Operaes para Manipulao de Dados Agrupando tuplas no SQL


Aplicar funes agregadas a diferentes grupos de tuplas
Exemplo
Listar a quantidade de empregados por departamento
Clusula
GROUP BY
Exemplo
select lotao, count(*) as quantidade_empregados
from Empregado
AAfuno
group by lotao
funocount
countaplicada
aplicada
lotacao quantidade_empregado
----------- -------------------1
4
2
2
Banco de Dados I

para
paraooconjunto
conjuntode
detuplas
tuplas
de
cada
grupo
de cada grupo

154

5. SQL

- Conjunto de Operaes para Manipulao de Dados Agrupando tuplas no SQL (cont.)


Todas colunas que aparecem na clusula select tm que
aparecer na clusula group by
Exceto os argumentos da funes agregadas
Exemplo de sintaxe incorreta
select lotao, matr, count(*)
group by lotao
Exemplos
Lista de todos dependentes com respectivos
responsveis e nome do departamento de lotao dos
responsveis.
Agrupar o resultado por departamento e por empregado
select
selectd.nome,
d.nome,e.nome,
e.nome,p.nome
p.nome
from
fromDepartamento
Departamentod,
d,Empregado
Empregadoe,
e,Dependente
Dependentepp
where
whered.cod_dep=e.lotacao
d.cod_dep=e.lotacaoand
ande.matr=p.matr_resp
e.matr=p.matr_resp
group
groupby
byd.nome,
d.nome,e.nome,
e.nome,p.nome
p.nome
Banco de Dados I

155

5. SQL

- Conjunto de Operaes para Manipulao de Dados Agrupando tuplas no SQL (cont.)


Exemplos (cont.)
Listar maiores e menores salrios de cada departamento
select
selectd.nome,
d.nome,max(e.salario)
max(e.salario)as
asMaior_Salario,
Maior_Salario,min(e.salario)
min(e.salario)as
as
Menor_Salario
Menor_Salario
from
fromDepartamento
Departamentod,
d,Empregado
Empregadoee
where
whered.cod_dep=e.lotacao
d.cod_dep=e.lotacao
group
groupby
byd.nome
d.nome

Totalizar a quantidade de itens vendidos por vendedor e


por item, considerando o seguinte esquema
Vendedor(matr, nome, salrio)
Vendas(matr,cod_item,qtde, pr-venda,dt-hora-venda)
Estoque(cod_item, referncia, pr_compra,pr_venda,qtde)

select
selectv.nome,
v.nome,e.referncia,
e.referncia,sum(d.qtde)
sum(d.qtde)as
astotal
total
from
fromEstoque
Estoquee,e,Vendedor
Vendedorv,v,Vendas
Vendasdd
where
wheree.cod_item=d.cod_item
e.cod_item=d.cod_itemand
andv.matr=d.matr
v.matr=d.matr
group
groupby
byv.nome,
v.nome,e.referncia
e.referncia
Banco de Dados I

156

5. SQL

- Conjunto de Operaes para Manipulao de Dados Selecionando grupos


Listar nome dos departamentos cuja mdia salarial seja
maior que 7000
Clusula having
Filtro de grupos
Exemplo
select d.nome, avg(salario)
from Departamento d, Empregado e
where d.cod_depart=e.lotacao
group by d.nome
having avg(e.salario)>7000

Consulta com where e having


predicado da clusula where avaliado primeiramente
Tuplas que satisfazem o predicado so agrupadas pelo group by

Predicado da clusula having avaliado


Grupos que satisfazem o predicado aparecem no resultado
Banco de Dados I

157

5. SQL

- Conjunto de Operaes para Manipulao de Dados Selecionando grupos (cont.)


Exemplos
Listar nome e mdia salarial dos departamentos que
possuem mais de 10 empregados lotados
select
selectd.nome,
d.nome,avg(e.salario)
avg(e.salario)as
asMdia_Salarial
Mdia_Salarial
from
fromDepartamento
Departamentod,
d,Empregado
Empregadoee
where
whered.cod_dep=e.lotacao
d.cod_dep=e.lotacao
group
groupby
byd.nome
d.nome
having
havingcount(matr)>=11
count(matr)>=11

Listar nome e quantidade de empregados dos


departamentos cuja mdia salarial maior que 5000
select
selectd.nome,
d.nome,count(*)
count(*)as
asNmero_Empregados
Nmero_Empregados
from
fromDepartamento
Departamentod,
d,Empregado
Empregadoee
where
whered.cod_dep=e.lotacao
d.cod_dep=e.lotacao
group
groupby
byd.nome
d.nome
having
havingavg(e.salario)>=5000
avg(e.salario)>=5000
Banco de Dados I

158

5. SQL

- Conjunto de Operaes para Manipulao de Dados Selecionando grupos (cont.)


Exemplos
Listar nome de vendedores e quantidade de vendas efetuadas
dos vendedores com volume de vendas superior a 10000
(classificado em ordem decrescente por quantidade de
vendas), considerando o seguinte esquema:
Vendedor(matr, nome, salrio)
Vendas(matr,cod_item,qtde, pr-venda,dt-hora-venda)
Estoque(cod_item, referncia, pr_compra,pr_venda,qtde)

select
selectv.nome,
v.nome,count(*)
count(*)as
astotal_de_vendas
total_de_vendas
from
fromVendedor
Vendedorv,v,Vendas
Vendasdd
where
wherev.matr=d.matr
v.matr=d.matr
group
groupby
byv.nome
v.nome
having
havingsum(d.qtde*d.pr_venda)
sum(d.qtde*d.pr_venda)>>10000
10000
order
orderby
bycount(*)
count(*)
Banco de Dados I

159

5. SQL

- Conjunto de Operaes para Manipulao de Dados Checando valores nulos


Predicado IS NULL
Exemplo

select * from Empregado


where dt-nasc is null

Consulta SQL aninhada (subconsulta)


Consulta SQL especificada dentro de uma outra consulta
SQL
Exemplo
Listar todos os empregados que tm salrio maior que a
mdia salarial da empresa
select
selecte.nome
e.nome
from
fromEmpregado
Empregadoee
where
Empregado
wheresalrio
salrio>>((select
selectavg(salrio)
avg(salrio)from
fromEmpregado)
Empregado)
Empregado
subconsulta retorna um conjunto de valores para
a consulta mais externa (executada primeiro)
Banco de Dados I

160

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consulta SQL aninhada (cont.)


Listar o primeiro e segundo maiores salrios da empresa
select
selectmax(salrio)
max(salrio)
from
fromEmpregado
Empregado
union
union
select
selectmax(salario)
max(salario)
from
fromEmpregado
Empregado
where
wheresalrio
salrio<>
<>(select
(selectmax(salrio)
max(salrio)from
fromEmpregado)
Empregado)

Listar nome dos departamentos com mdia salarial maior


que a mdia salarial da empresa
select
selectd.nome
d.nome
from
Departamento
from Departamentod,
d,Empregado
Empregadoee
where
whered.cod_depart=e.lotao
d.cod_depart=e.lotao
group
by
group byd.nome
d.nome
having
Empregado
havingavg(e.salrio)
avg(e.salrio)>>((select
selectavg(salrio)
avg(salrio)from
fromEmpregado)
Empregado)
Empregado
subconsulta na clusula having
Banco de Dados I

161

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consulta SQL aninhada (cont.)


Consulta correlacionada
Listar todos os empregado que possuem salrio maior
que a mdia salarial de seus departamentos
select nome
from Empregado
where
salrio > (select avg(salrio) from
Empregado
where lotao=????? )
A subconsulta precisa utilizar o valor do atributo
lotao de cada tupla da consulta mais externa como
parmetro de entrada

Varivel de correlao

Varivel da consulta mais externa utilizada pela consulta


mais interna
Executado para cada tupla da
select e.nome
consulta mais externa
from Empregado e
where salrio > (select avg(salrio) from Empregado
where lotao=e.lotao)
.lotao

Banco de Dados I

162

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consulta SQL aninhada (cont.)


Predicado IN
Verifica a pertinncia de elementos em um conjunto
Exemplo
select nome
from Empregado
where matr in (1,5,8,9)

Listar os empregados lotados nos departamentos


localizados em Fortaleza, considerando o seguinte
esquema
Departamento(cod_depart, nome, ender,cidade)
Empregado(matr, nome, ender, cpf,salrio,lotao)

select
selectnome
nome
from
Empregado
from Empregado
where
wherelotao
lotaoin
in((select
selectcod_depart
cod_departfrom
fromDepartamento
Departamento
where
wherecidade='Fortaleza'
cidade='Fortaleza'))
Banco de Dados I

163

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consulta SQL aninhada (cont.)


Predicado IN (cont.)
Sintaxe

expr [NOT] IN (subconsulta) | expr [NOT] IN (val [,val ])

Predicados SOME, ANY e ALL


Listar empregados que ganham salrios maior ou igual
a mdia salarial de um departamento
Sintaxe
expr {SOME | ANY | ALL} (subconsulta)

{<, <=,>, >=, =, <>}

select
selectnome
nome
from
Empregado
from Empregado
where
wheresalrio
salrio>=some
>=some((select
selectavg(salrio)
avg(salrio)from
fromEmpregado
Empregado
group
lotao
groupby
bylotao)
lotao)
lotao

Banco de Dados I

164

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consulta SQL aninhada (cont.)


Predicados SOME, ANY e ALL (cont.)

SOME (subconsulta) e ANY (subconsulta)

Retornam verdade se e somente se


Para pelo menos um elemento s retornado pela
subconsulta, expr s verdade
So equivalentes

ALL (subconsulta)

Retorna verdade se e somente se,


Para todo elemento s retornado pela subconsulta,
expr s verdade

Listar empregados que ganham salrios maior ou igual a


mdia salarial de cada departamento
select
selectnome
nome
from
Empregado
from Empregado
where
wheresalrio
salrio>=all
>=all(select
(selectavg(salrio)
avg(salrio)from
fromEmpregado
Empregado
group
lotao
groupby
bylotao)
lotao)
lotao
Banco de Dados I

165

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consulta SQL aninhada (cont.)


Predicados SOME, ANY e ALL (cont.)
Listar o departamento com maior mdia salarial
No permitido funo agregada composta

select
selectd.nome
d.nome
from
Empregado
from Empregadoe,e,Departamento
Departamentodd
where
whered.cod_depart=e.lotao
d.cod_depart=e.lotao
group
by
group byd.nome
d.nome
having
avg(salrio)
having avg(salrio)>=all
>=all((select
selectavg(salrio)
avg(salrio)from
fromEmpregado
Empregado
group
lotao
groupby
bylotao)
lotao)
lotao

Predicado EXISTS
Verifica se o conjunto retornado por uma subconjunto
vazio ou no
Listar empregados que possuem dependentes
select
selecte.nome
e.nome
from
Empregado
from Empregadoee
where
matr_resp=e.matr
whereexists
exists(select
(select**from
fromDependente
Dependentewhere
wherematr_resp=e.matr)
matr_resp=e.matr)
matr_resp=e.matr
Banco de Dados I

166

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consulta SQL aninhada (cont.)


Predicado EXISTS (cont.)
Sintaxe
[NOT] EXISTS (subconsulta)

EXISTS (subconsulta)

Retorna verdade se e somente se


O conjunto retornado por subconsulta no vazio

NOT EXISTS (subconsulta)

Retorna verdade se e somente se


O conjunto retornado por subconsulta vazio

Listar nome de departamentos com empregados ganhando


duas vezes mais que a mdia do departamento
select
selectd.nome
d.nome
from
Departamento
from Departamentodd
where
whereexists
exists(select
(select**from
fromEmpregado
Empregadoee
where
wheree.lotacao=d.cod_depart
e.lotacao=d.cod_departand
and
salrio
salrio>>(2*(
(2*(select
selectavg(salrio)
avg(salrio)from
fromEmpregado
Empregado
where
lotao=e.lotao)))
lotao=e.lotao
where lotao=e.lotao)))
lotao=e.lotao
Banco de Dados I

167

5. SQL

- Conjunto de Operaes para Manipulao de Dados Consulta SQL aninhada (cont.)


Subconsulta escalar
Subconsulta que retorna apenas um valor
Pode aparecer na lista de argumentos da clusula
select e na clusula where
Exemplo
Listar nome dos empregados com a quantidade de
dependentes de cada empregado
select
selecte.nome,
e.nome,(select
(selectcount(*)
count(*)From
Fromdependente
dependentewhere
wherematr_resp=e.matr)
matr_resp=e.matr)
from
Empregado
e
from Empregado e

Predicado Between
Sintaxe
expr1 [NOT] BETWEEN expr2 and expr3
Exemplo
matr between 2 and 10 matr >= 2 and matr<=10
Banco de Dados I

168

5. SQL

- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado


Listar nome dos departamentos dos empregados que tm
salrio maior que 7000
projeo

select d.nome
from Empregado e, Departamento d
where d.cod_depart=e.lotao

produto cartesiano

seleo

d.nome(d.cod_depart=e.lotao(Departamento x Empregado))
Departamento

Banco de Dados I

d.cod_depart=e.lotao

Empregado

169

5. SQL

- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
Sintaxe da clusula FROM
[ FROM {<tabela_fonte>} [,...n] ]
<table_fonte> ::=
nome_tabela [ [AS] qualificador ] [ WITH ( <table_hint> [,...n]) ]
Pode ser
| nome_tabela [ [AS] qualificador ] [ (column_alias [,...n] ) ]
uma viso
(view)
| (subquery) [AS] qualificador [ (column_alias [,...n] ) ]
| <tabela_fonte> <tipo_juno> <tabela_fonte> ON
<condio_juno>
<tipo_juno> ::=
[ INNER | { { LEFT | RIGHT | FULL } [OUTER] } ] [ <join_hint> ]
JOIN

Banco de Dados I

170

5. SQL

- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
Sintaxe da clusula FROM (cont.)
WITH (<table_hint> [,...n]) ])
Especifica estratgias (dicas) para o otimizador de consultas

ndices
tipo e granularidade de bloqueio (lock)
(column_alias [,...n] )

Especifica alias para colunas retornadas de


uma tabela (no suportado pelo SQL Server 7.0) ou
subconsulta
Um alias para cada coluna especificada na lista do select da
subconsulta

join_hint

Indica para o otimizador de consulta qual o algoritmo de juno deve


ser executado
Nested loop join, merge join ou hash join (SQL Server 7.0)

Banco de Dados I

171

5. SQL

- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
Sintaxe da clusula FROM (cont.)
Tipos de juno
Juno theta
INNER JOIN
Juno externa esquerda
LEFT OUTER JOIN
Juno externa direita
RIGHT OUTER JOIN
Juno externa completa
FULL OUTER JOIN

Juno theta
Exemplo
Listar nome dos empregados com o nome do respectivo
departamento
select
selecte.nome,
e.nome,d.nome
d.nome
from
Empregado
from Empregadoeeinner
innerjoin
joinDepartamento
Departamentoddon
one.lotao=d.cod_depart
e.lotao=d.cod_depart
Banco de Dados I

172

5. SQL

- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
Juno theta (INNER JOIN)
Exemplo
Para os empregados que tm salrio maior que 700, listar
nome com o nome do respectivo departamento,
select
selectnome_empregado,
nome_empregado,d.nome
d.nomefrom
fromDepartamento
Departamentoddinner
innerjoin
join
(select
(selectnome,
nome,lotao
lotaofrom
fromEmpregado
Empregadowhere
where salrio>700)
salrio>700)ee
(nome_empregado,departamento_lotao)
(nome_empregado,departamento_lotao)
on
ondepartamento_lotao=d.cod_depart
departamento_lotao=d.cod_depart

Juno Externa (OUTER JOIN)


Adicionar tuplas extras ao resultado de uma juno
natural

Banco de Dados I

173

5. SQL

- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
LEFT OUTER JOIN
Calcula o resultado da juno

Adiciona ao resultado da juno


Tuplas da relao esquerda que no satisfazem a
condio de juno
Atribui valores nulos aos atributos no definidos para estas
tuplas

Exemplo
Listar o histrico de vendas de cada vendedor, considerando o
seguinte esquema

Vendedor(matr, nome, salrio)


Vendas(matr,cod_item,qtde, pr-venda,dt-hora-venda)
Estoque(cod_item, referncia, pr_compra,pr_venda,qtde)
select
selectv.nome,
v.nome,e.referncia,
e.referncia,d.qtde,d.qtde*d.pr_venda
d.qtde,d.qtde*d.pr_venda
from
Vendedor
v
left
outer
join
from Vendedor v left outer join(Vendas
(Vendasddinner
innerjoin
joinEstoque
Estoqueee
on
ond.cod_item=e.cod_
d.cod_item=e.cod_item)
item)on
onv.matr=d.matr
v.matr=d.matr
Banco de Dados I

174

5. SQL

- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
RIGHT OUTER JOIN
Calcula o resultado da juno

Adiciona ao resultado da juno


Tuplas da relao direita que no satisfazem a condio
de juno
Atribui valores nulos aos atributos no definidos para estas
tuplas

Exemplo
Para cada empregado, listar nome do empregado, nome do
departamento e nome dos dependentes
select
selecte.nome,
e.nome,d.nome,
d.nome,p.nome
p.nome
from
fromDepartamento
Departamentoddinner
innerjoin
join(Dependente
(Dependenteppright
rightouter
outerjoin
join
Empregado
Empregadoeeon
onp.matr_resp=e.matr)
p.matr_resp=e.matr)on
ond.cod_dep=e.lotao
d.cod_dep=e.lotao

Banco de Dados I

175

5. SQL

- Conjunto de Operaes para Manipulao de Dados Formas de Juno em SQL Avanado (cont.)
FULL OUTER JOIN
Calcula o resultado da juno

Adiciona ao resultado da juno


Tuplas das relaes envolvidas na juno que no
satisfazem a condio de juno
Atribui valores nulos aos atributos no definidos para estas
tuplas

Incluindo tuplas em uma tabela


Clusula Insert
Sintaxe
INSERT [INTO] nome_tabela [(lista_de_colunas))]
{ VALUES ( { DEFAULT | NULL | expr }[,...n] )
| subquery }
Banco de Dados I

176

5. SQL

- Conjunto de Operaes para Manipulao de Dados Atualizando tuplas de uma tabela


Clusula Update
Sintaxe
UPDATE nome_tabela

SET nome_coluna = {expr | NULL | (subquery) }


{, nome_coluna = {expr | NULL | (subquery) }}
WHERE predicado

Removendo tuplas de uma tabela


Clusula Delete
Sintaxe
DELETE FROM nome_tabela
WHERE predicado

Banco de Dados I

177

5. SQL

- Vises Acesso a um banco de dados


Requer conhecimento do esquema
Indesejvel

Para usurios inexperientes


Desenvolvedores de aplicativos que acessam o BD

Por questes de segurana e privacidade


Grupos de usurios devem ter acesso a dados de
interesse
O acesso a todo o banco de dados perigoso

Janelas sobre o banco de dados


Cada janela mostra parte do banco de dados
Diferentes vises
Vises (views)
Definidas sobre tabelas do banco de dados
Tabelas base
Banco de Dados I

178

5. SQL

- Vises Tipos de vises


Viso virtual
A definio da viso armazenada
Dados da viso no so persistentes

Sempre que referenciada

Os dados so materializados
Custo praticamente igual a cada materializao

Quanto ao acesso
Somente leitura
Vises que s permitem acesso de leitura
Permitem atualizao
Vises que permitem atualizaes nas tabelas base

Banco de Dados I

179

5. SQL

- Vises Tipos de vises (cont.)


Viso materializada
Dados e definio so persistentes
Problema de atualizao dos dados da viso
Sempre que h uma atualizao nas tabelas base da viso
Recalculada
Atualizada
Com interveno humana
Automtica

Reduz custos de materializao de resultado


Vises somente para leitura
Aplicaes
Implementao Data Warehouse
Integrao de fontes de dados heterogneas

Banco de Dados I

180

5. SQL

- Vises Definio de vises em SQL


CREATE VIEW nome_da_viso
[(nome_coluna {, nome_coluna })]
AS
subquery [WITH CHECK OPTION]

WITH CHECK OPTION


Especifica que atualizaes (INSERT ou UPDATE) na
tabela base s sero permitidas se
resultam em tuplas visveis para a viso

Banco de Dados I

181

5. SQL

- Vises Exemplos
Definindo vises
create view V1 (nome_departamento, nome_empregado)
as select d.nome,e.nome
from Departamento d inner join Empregado e
on d.cod_depart=e.lotao

create view V2 (nome_empregado, nmero_de_dependentes)


as select e.nome, (select count(*) from Dependente where
matr_resp=e.matr)

from Empregado e

create view V3 (matrcula, salrio)


as select nome,salrio
from Empregado
where salrio<700 with check option

Banco de Dados I

182

5. SQL

- Vises Exemplos
Acessando o banco de dados atravs de vises
select * from V1
select * from V2 where nmero_de_dependentes>2
select * from V3
matrcula
salrio
----------------------------------- -----------------------caio
500.0
rebeca
500.0

Atualizando o banco de dados atravs de vises


update v3 set salrio=salrio+100
select * from V3

matrcula
salrio
----------------------------------- -----------------------caio
600.0
rebeca
600.0

update v3 set salrio=salrio+150


Banco de Dados I

Erro,
as
Erro
Erro,
poisvo
astuplas
tuplasade
aserem
serem
Erro pois
alteradas
deixar
ser
visveis
alteradas
vo
deixar
de
ser
visveis
para
paraV3
V3

183

5. SQL

- Vises Vises que permitem atualizaes apresentam as

seguintes restries na subconsulta

A clusula FROM deve possuir apenas uma tabela


Tabela base
Viso
Deve permitir atualizao

No esto especificadas as clusulas group by e having


A palavra reservada distinct no est especificada
A clusula where no contm subconsulta que referencia
qualquer tabela na clusula from diretamente ou
Restriono
noexistente
existenteno
noSQL
SQLServer
Server7.0
7.0
indiretamente (via vises) Restrio
Todas as colunas da subconsulta so colunas simples
No so permitidas colunas do tipo avg(salrio) ou
expresses aritmticas
Banco de Dados I

184

5. SQL

- Vises Vises que permitem atualizaes apresentam as

seguintes restries na subconsulta

ORACLE permite atualizao em vises com juno de


duas tabelas
Desde que a juno seja entre tabelas com
relacionamento 1:N
A tabela do lado N tenha chave primria
A atualizao s pode ser feita em colunas da tabela
do lado N
Exceto o atributo de juno

Banco de Dados I

185

You might also like