Você está na página 1de 147

Francisco Alves Carneiro Banco de Dados

1
Modelagem de Dados
Parte I
Francisco Alves Carneiro

Faculdade Estcio do Cear
Estacio-FIC
francisco.carneiro@estacio.br
Francisco Alves Carneiro Banco de Dados 2
Sumrio
- Introduo aos Sistemas de Banco de Dados
- Modelo de Entidades e Relacionamentos
- Bancos de Dados Relacionais
-O Modelo Relacional
-Modelagem de Dados
-Linguagem de Manipulao e Consulta
- Projeto de Bancos de Dados Relacionais

Francisco Alves Carneiro Banco de Dados 3
Introduo aos 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

Descrio
de dados
Programa 1
Descrio
de dados
Programa 2
Descrio
de dados
Programa 3
Arquivo B
Arquivo A
Arquivo C
Francisco Alves Carneiro Banco de Dados 4
Redundncia e inconsistncia
Dificuldade de acesso aos dados
Isolamento dos dados
Problemas de integridade
Anomalias de acesso concorrente
Problemas de segurana
Introduo aos Sistemas de Bancos de Dados
- Histrico -
Dados em Arquivos
Francisco Alves Carneiro Banco de Dados 5
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 dos dados aps situao
de falha
Introduo aos Sistemas de Bancos de Dados
Francisco Alves Carneiro Banco de Dados 6
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
Garantir uma viso abstrata dos dados
Tornar transparente como os dados so
armazenados e gerenciados
Introduo aos Sistemas de Bancos de Dados
Francisco Alves Carneiro Banco de Dados 7
- 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
Sistemas
de
Bancos
de Dados
Usurio tem uma
viso abstrata dos
dados
Introduo aos Sistemas de Bancos de Dados
- Abstrao de Dados -
Francisco Alves Carneiro Banco de Dados 8
Esquema
Externo 1
Esquema
Externo 2
Esquema
Externo n
Esquema Conceitual
Esquema Interno
(Banco de Dados armazenado)
DBMS
Camada
Conceitual
Camada
Interna (Fsica)
Camada
Externa
Introduo aos Sistemas de Bancos de Dados
- Arquitetura em Trs Camadas -
Francisco Alves Carneiro Banco de Dados 9
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
Introduo aos Sistemas de Bancos de Dados
- Arquitetura em Trs Camadas -
Francisco Alves Carneiro Banco de Dados 10
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
Introduo aos Sistemas de Bancos de Dados
- Ocorrncias e Esquemas -
Francisco Alves Carneiro Banco de Dados 11
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
Armazenamento
Acesso
Controle de Concorrncia
Recuperao
Introduo aos Sistemas de Bancos de Dados
- Definio-
Francisco Alves Carneiro Banco de Dados 12
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))

Introduo aos Sistemas de Bancos de Dados
- Linguagem de Banco de Dados -
Francisco Alves Carneiro Banco de Dados 13
Componentes (cont.)
DML - Data Manipulation Language
Utilizada para permitir
Consultas sobre um BD
Exemplo (SQL)
select nome
from Empregado
where salario > 7000
Inseres em uma tabela
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=salrio-1.15
where salrio<1500.00
DML
Procedural
- requer a especificao de quais dados
devem ser acessados e como devem ser
acessados
Nonprocedural
- requer somente a especificao de quais
dados devem ser acessados
Introduo aos Sistemas de Bancos de Dados
- Linguagem de Banco de Dados -
Francisco Alves Carneiro Banco de Dados 14
SGBD
Processador de Consultas + Sistema de Armazenamento
Processador de Consultas
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
Introduo aos Sistemas de Bancos de Dados
- Definio-
Francisco Alves Carneiro Banco de Dados 15
SGBD
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)
Gerenciador de Arquivo (File System)
Responsvel pelo armazenamento fsico em disco
Gerencia a alocao de espao em disco
Introduo aos Sistemas de Bancos de Dados
- Definio-
Definio da poltica de alocao do buffer
MRU, LRU, FIFO, etc
Francisco Alves Carneiro Banco de Dados 16
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
Introduo aos Sistemas de Bancos de Dados
- Definio-
Francisco Alves Carneiro Banco de Dados 17
Esquema Consulta Programa Aplicativo
Gerenciador
de Transaes
Mecanismo
de Consultas
Gerenciador
de Buffer
Gerenciador
de Arquivo
Compilador
DML
Pre-compilador
DML
Sistema de
Armazenamento
Processador
de Consultas
DBMS
DBS
Cdigo Objeto
aplicativos
Arquivos
de dados
ndices
Catlogo
DB
DBA Usurio experiente Programadores
Interpretador
DDL
Introduo aos Sistemas de Bancos de Dados
- Arquitetura de SGBDs-
Francisco Alves Carneiro Banco de Dados 18
- 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
Introduo aos Sistemas de Bancos de Dados
- O Administrador de Bancos de Dados (DBA) -
Francisco Alves Carneiro Banco de Dados 19
- Programadores de aplicao
- Usurios sofisticados
- Usurios especializados em aplicaes no-
convencionais
- Usurios de programas de aplicao
Introduo aos Sistemas de Bancos de Dados
- Usurios de Bancos de Dados -
Francisco Alves Carneiro Banco de Dados 20
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
Introduo aos Sistemas de Bancos de Dados
- Modelo de Dados-
Francisco Alves Carneiro Banco de Dados 21
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
Introduo aos Sistemas de Bancos de Dados
- Classificao de Sistemas de Bancos de Dados -
Francisco Alves Carneiro Banco de Dados 22
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
Introduo aos Sistemas de Bancos de Dados
- Classificao de Sistemas de Bancos de Dados -
Francisco Alves Carneiro Banco de Dados 23
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

Francisco Alves Carneiro Banco de Dados 24
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
Francisco Alves Carneiro Banco de Dados 25
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, Professores

Francisco Alves Carneiro Banco de Dados 26
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
Francisco Alves Carneiro Banco de Dados 27
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)


13
Conjunto
de matrculas





Brbara
Conjunto
de nomes





R. X, 9
Conjunto
de endereos










Empregados matrcula
nome
endereo
Francisco Alves Carneiro Banco de Dados 28
Atributos de uma entidade (cont.)
Atributos chave de uma entidade
Conjunto de atributos que identificam univocamente um
elemento ou objeto da entidade
Seja f um atributo chave para um conjunto de entidades
D, xeD e f(x)=v, ento
deD e d=x, f(d)=v
Exemplo
Matrcula atributo chave para Estudante
Tipos de atributos
Atributo atmico
Atributo que no pode ser subdividido:cargo
Atributo composto
Atributo formado por vrios atributos
Endereo, local

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
endereo
local cep cidade
rua nmero
Francisco Alves Carneiro Banco de Dados 29
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 derivado com base no valor de um
outro atributo (atributo base)
Exemplo
Atributo idade pode ser derivado do atributo data_nasc
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Francisco Alves Carneiro Banco de Dados 30
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
, E
2
, ... E
n
,
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Francisco Alves Carneiro Banco de Dados 31
Relacionamento (cont.)
Conjunto de relacionamentos (cont)
Seja R um conjunto de relacionamentos, representando
associaes entre os conjuntos de entidades E
1
, E
2
, ... E
n
,
ento R _ E
1
x E
2
x E
n
Seja reR, ento r=(e
1
, e
2
, , e
n
), onde e
1
eE
1
, e
2
eE
2
, , e
n
eE
n
,
Exemplo
Considere o conjunto de relacionamentos lotao
lotao _ Departamento x Empregado
(Brbara, Cincia da Computao) elotao
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)
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Francisco Alves Carneiro Banco de Dados 32
Agncia_Conta-Cliente
Relacionamento (cont.)
Grau de Relacionamento
Nmero de entidades participantes no relacionamento
Relacionamento binrio
Relacionamento de grau 2
Exemplo: Relacionamento aluno-disciplina

Relacionamento ternrio
Relacionamento de grau 3
Exemplo
Relacionamento Agncia-Conta-Cliente

2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -







Cliente







Conta







Agncia
Francisco Alves Carneiro Banco de Dados 33
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
Supervisiona




Empregado


1
1
2
2
1
1
Empregado desempenha dois papis
- -supervisionado-por (1)
- -supervisor-de (2)
Francisco Alves Carneiro Banco de Dados 34
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 FIC
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
Francisco Alves Carneiro Banco de Dados 35
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
..entidade de A
Um para muitos (1:N)
Uma entidade de A pode estar associada a qualquer
..quantidade de entidades de B
Uma entidade de B s pode estar associada a uma
..entidade de A
Muitos para um (N:1)
Uma entidade de A s pode estar associada a uma
..entidade de B
Uma entidade de B pode estar associada a qualquer
..quantidade de entidades de A
Francisco Alves Carneiro Banco de Dados 36
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
Cardinalidade do relacionamento lotao entre
Departamento e Empregado

Cardinalidade do relacionamento cursa entre Estudante
e Disciplina

Cardinalidade do auto-relacionamento supervisiona

Cardinalidade do relacionamento que modela o fato de
que cada departamento da empresa possui um gerente
1:N
N:N
1:N
1:1
Francisco Alves Carneiro Banco de Dados 37
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, 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
Francisco Alves Carneiro Banco de Dados 38
2. Modelo Entidade-Relacionamento
- Conceitos Bsicos -
Entidade fraca
Entidade cuja existncia depende de estar associada, via
um relacionamento (relacionamento de identificao), com
uma outra entidade (entidade 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
Francisco Alves Carneiro Banco de Dados 39
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
DBDesigner
Francisco Alves Carneiro Banco de Dados 40
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Notao
Nome atributo
Smbolo Representao
Conjunto de entidades
Conjunto de entidades
fracas
Conjunto de relacionamentos
(relacionamento)
Relacionamento de
identificao
Atributo
Francisco Alves Carneiro Banco de Dados 41
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Notao
Nome atributo
Smbolo Representao
Atributo chave
Nome atributo
Atributo derivado
Nome atributo
*
Nome atributo
Nome atributo
Nome atributo
Atributo multivalorado
Atributo composto
Francisco Alves Carneiro Banco de Dados 42
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Notao
Smbolo Representao
E1 R E2
1 N
Cardinalidade 1:N
R E
(min,max)
Restrio estrutural de
participao de E em R
E1 R E2
Participao total de E2
em R
Nome atributo
Atributo chave parcial de
uma entidade fraca
Francisco Alves Carneiro Banco de Dados 43
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
Francisco Alves Carneiro Banco de Dados 44
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Empregado
(5,n)
Departamento
lotao
(1,1)
(0,n)
Vencimento
ganha
(1,n)
supervisiona
dependncia
Dependente
-supervisionado
-supervisor
Quando um departamento for participar de lotao,
ter, no mnimo, cinco empregados
(1,1) (0,n)
(0,n)
(1,1)
matr
nome
dt_nasc
dt_lotao
dt_nasc
idade
Cod_venc descrio
valor
nome
gerncia
(0,1)
(1,1)
Francisco Alves Carneiro Banco de Dados 45
2. Modelo Entidade-Relacionamento
- Diagrama ER -
Empregado
n
Departamento
lotao
1
n
Vencimento
ganha
n
supervisiona
dependncia
Dependente
-supervisionado
-supervisor
n 1
n
1
matr
nome
dt_nasc
dt_lotao
dt_nasc
idade
Cod_venc descrio
valor
nome
gerncia
1
1
Francisco Alves Carneiro Banco de Dados 46
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
Francisco Alves Carneiro Banco de Dados 47
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
Francisco Alves Carneiro Banco de Dados 48
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Especializao (cont.)
Notao MER
Empregado
Professor Escriturrio Engenheiro
ISA
titulao uni_tit
regime_tr
especialidade
Grau_ins rea_atua
is a ( um)
Empregado is a Professor ou
Empregado is a Escriturrio ou
Empregado is a Engenheiro
Francisco Alves Carneiro Banco de Dados 49
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
Empregado
Professor Escriturrio Engenheiro
ISA
titulao uni_tit
regime_tr
especialidade
Grau_ins rea_atua
nome
dt_nasc
matr
Francisco Alves Carneiro Banco de Dados 50
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
Francisco Alves Carneiro Banco de Dados 51
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
Francisco Alves Carneiro Banco de Dados 52
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Especificao de restries de generalizao e especializao
Sejam E
1
, E
2
, , E
n
conjuntos de entidades de nvel mais baixo que o
conjunto de entidades E
Disjuno
0<i,jsn, i=j : E
i
E
j
= C
Nenhuma entidade de E pode pertencer a mais de um
subgrupo
E
E
1
E
2
E
n
ISA
...
...
Francisco Alves Carneiro Banco de Dados 53
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
i

Parcial
E _ E
i
n
i=1
n
i=1
Francisco Alves Carneiro Banco de Dados 54
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
Cliente
1 n
n
Francisco Alves Carneiro Banco de Dados 55
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
agncia-conta
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
Francisco Alves Carneiro Banco de Dados 56
2. Modelo Entidade-Relacionamento
- Propriedades Avanadas -
Agregao (cont.)
Utilizar o mecanismo de agregao
n
Agncia
Cliente
Conta
n
1 n
saldo
num_conta
cod_ag nome
gerente ender
cod_cliente
nome
data-nasc
ender
CPF
data_abertura
Francisco Alves Carneiro Banco de Dados
57
Bancos de Dados I
Parte II
Francisco Alves Carneiro
- FIC -
Faculdade Integrada do Cear
Sistemas de Informao
alvesfa@fic.br
Francisco Alves Carneiro Banco de Dados 58
Sumrio
OIntroduo aos Sistemas de Banco de Dados
OModelo de Entidades e Relacionamentos
OBancos de Dados Relacionais
O Modelo Relacional
Modelagem de Dados
lgebra Relacional
Linguagem de Manipulao e Consulta
OProjeto de Bancos de Dados Relacionais
OProjeto Lgico de Bancos de Dados

Francisco Alves Carneiro Banco de Dados 59
Sumrio
OIntroduo aos Sistemas de Banco de Dados
OProjeto de Bancos de Dados Relacionais
OBancos de Dados Relacionais
O Modelo Relacional
Modelagem de Dados
lgebra Relacional
Linguagem de Manipulao e Consulta
OProjeto Lgico de Bancos de Dados

Francisco Alves Carneiro Banco de Dados 60
3. Modelo Relacional
- Introduo -
OProposto em 1970 por Codd
IBM
OConsolidou-se como principal modelo de dados para
aplicaes comerciais
OModelo de dados para Bancos de Dados Relacionais
OSBDs relacionais
DB2 (IBM)
Informix
ADABAS
Sybase
Oracle
SQL Server (Microsoft)
Francisco Alves Carneiro Banco de Dados 61
3. Modelo Relacional
- Estrutura de um Banco de Dados Relacional -
OUm banco de dados relacional consiste
Um conjunto de tabelas
RRelaes
OTabelas
Conjunto de linhas
RTuplas
OLinhas
Conjunto de colunas
RNome das colunas
^Atributos
matr nome cpf end dt-nasc
1 1 231 R X, 50 20000102
2 1 451 R Y, 1 19991001
3 1 472 R V, 502 19990510
3 2 549 R Z, 501 19980601
3 3 465 R A, 501 20000203
Estudante
Francisco Alves Carneiro Banco de Dados 62
3. Modelo Relacional
- Conceitos Bsicos -
ODomnio
Conjunto de valores permitidos para um atributo
RValores so atmicos
^Indivisveis
RExemplo: 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
RUtilizados 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
OO atributo A
i
um papel de D no esquema de R
OGrau de R = nmero de A
i

Francisco Alves Carneiro Banco de Dados 63
3. Modelo Relacional
- Conceitos Bsicos -
OEsquema de relao
Utilizado para descrever uma relao
Representado por R(A
1
, A
2
, , A
n
), onde
RR nome de uma relao e
RA
1
, A
2
, , A
n
uma lista de atributos
Francisco Alves Carneiro Banco de Dados 64
3. Modelo Relacional
- Conceitos Bsicos -
OInstncia de Relao
Seja o esquema de relao R(A
1
, A
2
, , A
n
)
Um instncia de relao (ou relao) para este esquema
Rr(R)={t
1
, t
2
, , t
k
}
RCada t
i
representa uma n-tupla de n valores
<v
1
, v
2
, , v
n
>, onde cada v
j
e dom(A
j
), 0<jsn
r representa a extenso para R
Rr contm os dados
RR descreve os dados armazenados em r
ORelao
Seja r uma relao com esquema R
r(R) _ dom(A
1
) x dom(A
2
) x dom(A
3
) x x dom(A
n
)
Rr(R) um subconjunto do produto cartesiano dos
domnios dos atributos que definem R
Rcada tupla de r(R) relaciona valores dos vrios domnios
^r uma relao (matemtica)
Rr(R) representa um conjunto de tuplas
Francisco Alves Carneiro Banco de Dados 65
3. Modelo Relacional
- Conceitos Bsicos -
O Esquema de um banco de dados relacional
Conjunto de esquemas de relao mais um conjunto de restries de
integridade IC
RS={R
1
, R
2
, , R
n
} e um conjunto de restries de integridade IC
O Instncia de um banco de dados relacional
Seja o esquema S
Uma instncia DB para o esquema S
RDB={r
1
, r
2
, , r
n
} , onde
RCada r
i
uma instncia de relao de R
i
e
RCada r
i
satisfaz as restries de integridade especificadas em IC
O Exerccio
Considere uma banco de dados relacional DBR com as relaes
Empregado e Departamento
Construa um esquema S e mostre uma possvel instncia para DBR
Francisco Alves Carneiro Banco de Dados 66
3. Modelo Relacional
- Conceitos Bsicos -
O Restries do modelo relacional
Restrio de domnio
RO valor de cada atributo A
^Tem que ser um valor atmico de dom(A)
Restrio de Chave
RUma relao definida como um conjunto de tuplas
^Elementos de um conjunto so distintos entre si
RTuplas 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
RGeralmente 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
^ t
i
, t
j
e r 0<i,jsn, i=j : t
i
[SC] = t
j
[SC]
^Super chave (superkey)
Francisco Alves Carneiro Banco de Dados 67
3. Modelo Relacional
- Conceitos Bsicos -
O Restries do modelo relacional (cont.)
Restrio de Chave (cont.)
RSuper 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
RChave (key)
^Super chave sem atributos redundantes
^Para Empregado existem duas possveis chaves
+matr ou cpf
RChave candidata (candidate key)
^Atributos da super chave que podem funcionar como chave da
relao
RChave primria (primary key)
^Chave candidata escolhida como chave da relao
^Identifica tuplas em uma relao
+Garante a unicidade de uma tupla na relao
Francisco Alves Carneiro Banco de Dados 68
3. Modelo Relacional
- Conceitos Bsicos -
ORestries do modelo relacional (cont.)
Restrio de Integridade de Entidade
REspecifica que nenhuma chave primria pode ter valor
nulo (null)
^Garante que a chave primria identifique tuplas em uma
relao
Restrio de Integridade Referencial
RSejam dois esquemas de relao R e S
RUm conjunto de atributos FK de um esquema de relao
R chave estrangeira (foreign key) em R se
^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 t
1
de r(R)
+Ou ocorre em como valor de PK para uma tupla t
2
em s(S)
t
1
[FK] = t
2
[PK]
+ou nulo
t
1
referencia a tupla t
2

Francisco Alves Carneiro Banco de Dados 69
3. Modelo Relacional
- Conceitos Bsicos -
ORestries do modelo relacional (cont.)
Restrio de Integridade Referencial (cont.)
RExemplo: 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
Francisco Alves Carneiro Banco de Dados 70
3. Modelo Relacional
- Conceitos Bsicos -
ORestries do modelo relacional (cont.)
Restrio de Integridade Referencial (cont.)
RExemplo: Considere o seguinte esquema de banco de
dados
Departamento(cod_depart, nome, ender)
Empregado(matr, nome, ender, cpf, lotao)
Create table Departamento
(cod_depart integer not null,
nome varchar(30) not null,
ender varchar(30),
primary key (cod_depart))
Create table Empregado
(matr integer not null,
nome varchar(30) not null,
ender varchar(30),
cpf integer not null,
lotao integer not null,
primary key (matr),
unique key (cpf),
foreign key (lotao) references
Departamento on delete cascade)
Francisco Alves Carneiro Banco de Dados 71
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
Incluso
3. Modelo Relacional
- Operaes de Atualizao -
Francisco Alves Carneiro Banco de Dados 72
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
Excluso
3. Modelo Relacional
- Operaes de Atualizao -
Francisco Alves Carneiro Banco de Dados 73
Modifica t[A1,A2,...,Ak] em r(R)
Condio sobre valores de atributos
Alguns SGBDs: update=delete+insert
Violao + tratamento:
RDepende do atributo modificado
^Domnio para qualquer atributo
^PK = excluso + incluso
^FK = verificar integridade referencial
Modificao
3. Modelo Relacional
- Operaes de Atualizao -
Francisco Alves Carneiro Banco de Dados 74
4. Projeto de Bancos de Dados
- Fases -
Anlise de
Requisitos
Projeto
Conceitual
Projeto Lgico
(mapeamento de
modelo de dados)
Projeto Fsico
Requisitos de dados
Esquema Conceitual (MER)
Esquema Conceitual representado
no modelo de dados do SGBD
Mini-mundo
(mundo real)
Anlise
Funcional
Projeto
(Software)
Implementao
Independente
do SGBD
Especfico para
cada SGBD
Implementao
Estruturas de armazenamento
e caminhos de acesso (ndices)
Expresses DDL e carga do BD
Francisco Alves Carneiro Banco de Dados 75
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
REntender e documentar
^Requisitos de dados
-Projeto conceitual
Com base nos requisitos de dados
RCriar um esquema conceitual para o banco de dados
^Modelo de dados conceitual
+MER
+Construir um DER
4Projeto lgico
Com base no DER definido na fase anterior
RCriar um diagrama relacional
^Representao grfica de um esquema relacional
Francisco Alves Carneiro Banco de Dados 76
4. Projeto de Bancos de Dados
- Fases -
^ Projeto Fsico
Definir estruturas de armazenamento
RComo e onde devem ser armazenadas as tabelas
^Uma tabela em um arquivo
^Vrias tabelas em um nico arquivo
Definir caminhos de acesso
RDefinir ndices
RDefinir tipo de ndice
^Ordenado
+Primrio
+Secundrio
^Hash
Utilizar critrios de performance
REspecfico por SGBD
= Implementao
Com base no DR definido na fase 3 e as estruturas de armazenamento
e caminhos de acesso definidos na fase anterior
RCriar o banco de dados
^Expresses DDL
RCarregar o BD
Francisco Alves Carneiro Banco de Dados 77
OFerramentas CASE
Modelagem ER grfica
Gerao automtica de esquema (DDL)
OAlgoritmo de mapeamento
Sete passos
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
Francisco Alves Carneiro Banco de Dados 78
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
ODiagrama relacional (DR)
Ferramenta grfica utilizada para representar um
esquema de banco de dados relacional
OA partir de um DER, pode-se construir um DR como
descrito a seguir
Passo 1
RPara 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
RNotao de tabela no DR

Nome da
Tabela
Francisco Alves Carneiro Banco de Dados 79
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
Passo 2
RPara 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
RNotao
E1 E2
PK
PK
Francisco Alves Carneiro Banco de Dados 80
Passo 3
RPara 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
RNotao
E1 E2
PK
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
Francisco Alves Carneiro Banco de Dados 81
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
Passo 4
RPara 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
RNotao
E1 E2
Tab-aux
PK-E1 PK-E2
PK-E1
PK-E2
Francisco Alves Carneiro Banco de Dados 82
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
Passo 5
RPara 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
RPara 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
Francisco Alves Carneiro Banco de Dados 83
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
Passo 7
RPara 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
Francisco Alves Carneiro Banco de Dados 84
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
OExerccio
Construa o DR para o seguinte DER
n
Agncia
Cliente
Conta
n
1 n
saldo
num-conta
cod-ag nome
gerente ender
cod-cliente
nome
data-nasc
ender
CPF
data_abertura
Francisco Alves Carneiro Banco de Dados 85
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
Agncia
cod-ag nome
gerente ender
Conta
saldo
num-conta
data-abert
Cliente
cod-cliente
nome
data-nasc
ender
CPF
cod_ag
AG_CC
Cliente_Conta
cod-ag, num-conta
tipo-conta
cod-ag
num-conta
cod-cliente
Francisco Alves Carneiro Banco de Dados 86
O A cada pedido est associado um ou mais produtos e pertence a
somente um cliente;
O Os produtos so adquiridos em mais de um fornecedor;
O H fornecedores cadastrados que podero no estar fornecendo
produtos;
O Os fornecedores podero ser locais ou estaduais;
O Para os fornecedores estaduais faz-se necessrio indicar o estado de
origem, a taxa de ICMS do estado, o tempo previsto para entrega e o tipo
de transporte utilizado (areo, terrestre ou martimo).

Elabore o projeto lgico da aplicao acima descrita,
considerando que cada entidade tem no mnimo 4 atributos
fundamentais e execute o mapeamento para implementao em
um BD relacional.
Controle de Fornecimento Semntica da aplicao
3. Modelo Relacional
- Estudo de caso -
Francisco Alves Carneiro Banco de Dados 87
OO resultado de uma operao
op(r) r
OGrupos de operaes
Operaes relacionais
RSeleo; projeo; juno
Operaes de conjunto
RUnio; interseo; diferena; produto cartesiano
Operaes especiais
Coleo de operaes usadas para manipular relaes
3. Modelo Relacional
- lgebra Relacional -
Francisco Alves Carneiro Banco de Dados 88
3. Modelo Relacional
- lgebra Relacional -
OLinguagem de consulta para bancos de dados
relacionais

Relao Consulta Relao
OColeo de operadores sobre relaes
ODesenvolvida por Codd
-Linguagem procedimental
OOperaes bsicas
Seleo (o)
Projeo (H)
Unio ()
Diferena (-)
Produto cartesiano (x)
Operaes unrias
Operaes binrias
Francisco Alves Carneiro Banco de Dados 89
3. Modelo Relacional
- lgebra Relacional [Operaes Bsicas] -
O Operao de seleo
Seleciona um subconjunto de tuplas de uma relao
RCom base em um predicado
Notao
Ro
P
(r)
^r uma relao e
^P representa um predicado (condio de seleo)
RPredicados so construdos atravs de tomos
^tomos
+t[A
i
] u t[A
k
] , t e r e A
i
e A
k
so atributos de r.
+t[A
i
] u k, onde k uma constante
+O smbolo u denota um operador de comparao
=, =, >, >, <, s
-tomos podem ser conectados por . (and), v (or), (not)
RRegras para construo de frmulas
^Todo tomo uma frmula
^Se P
1
e

P
2
so frmulas
+ P
1
.

P
2
, P
1
v

P
2
e P
1
tambm so frmulas
Os atributos devem possuir domnios iguais
Francisco Alves Carneiro Banco de Dados 90
3. Modelo Relacional
- lgebra Relacional [Operaes Bsicas] -
OOperao de seleo (cont.)
Exemplo
RConsidere a relao Empregado
^Empregado(matr, nome, ender, cpf, salrio, lotao)
RListar todos os empregados que ganham salrio maior
que 5000
^ o
salrio>5000
(Empregado)
RListar todos os empregados do departamento com
cdigo igual a 002 e que ganham salrios maior que
5000

RListar todos os empregados no lotados no
departamento com cdigo igual a 002 e que ganham
salrios entre 5000 e 10000
Francisco Alves Carneiro Banco de Dados 91
3. Modelo Relacional
- lgebra Relacional [Operaes Bsicas] -
OOperao de seleo (cont.)
Propriedade da seleo
Ro
u1.u2
(r) o
u1
(o
u2
(r))
Ro
u1
(o
u2
(r)) o
u2
(o
u1
(r))
^Comutatividade da operao de seleo
Francisco Alves Carneiro Banco de Dados 92
3. Modelo Relacional
- lgebra Relacional [Operaes Bsicas] -
OOperao de Projeo
Seleciona um subconjunto de atributos de uma relao
Notao
RH
A
i
1
, A
i
2
,, A
i
n

(r)
^r uma relao com esquema R(A
1
, A
2
, , A
n
)
^{A
i
1
, A
i
2
, , A
i
n
} _ {A
1
, A
2
, , A
n
}
^Projeo de R sobre os atributos A
i
1
, A
i
2
, , A
i
n

Exemplo
RListar o nome e salrio de todos os funcionrios
^H
nome, salrio

(Empregado)
RListar nome e salrio de todos os empregado que
ganham salrio maior que 9000
Projeo
Filtro de atributos
Seleo
Filtro de tuplas
Francisco Alves Carneiro Banco de Dados 93
3. Modelo Relacional
- lgebra Relacional [Operaes Bsicas] -
OOperao de Unio
Executa a unio de duas relaes compatveis
Duas relaes com esquemas R(A
1
, A
2
, , A
n
) e
S(B
1
, B
2
, , B
n
) so compatveis
RApresentam o mesmo nmero de atributos
Rdom(A
i
)= dom(B
i
), 0<isn
Notao
Rr s
Exemplo
RConsidere as seguintes relaes
^Empregado(matr, nome, ender, dt-nasc, cpf, salrio, lotao)
^Dependente(nome-dep, data-nasc, matr-resp)
RListe o nome e data de nascimento de todos os
funcionrios e dependentes existentes na empresa
^H
nome, dt-nasc

(Empregado) H
nome-dep, data-nasc

(Dependente)
Francisco Alves Carneiro Banco de Dados 94
3. Modelo Relacional
- lgebra Relacional [Operaes Bsicas] -
OOperao de Diferena
O resultado da operao r - s uma relao que contm
todas as tuplas de r que no pertencem a s
Rr e s so relaes compatveis
Exemplo
RConsiderando 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
^H
nome

(Empregado) - H
nome-dep

(Dependente)
Francisco Alves Carneiro Banco de Dados 95
3. Modelo Relacional
- lgebra Relacional [Operaes Bsicas] -
OOperao de Produto Cartesiano
Sejam r e s relaes com esquemas R(A
1
, A
2
, , A
n
) e
S(B
1
, B
2
, , B
m
), respectivamente
Resultado da operao r x s uma relao
RT(r.A
1
, r.A
2
, , r.A
n
, s.B
1
, s.B
2
, , s.B
m
)
Rcom n+m atributos
Rcada tupla de T uma combinao entre uma tupla de
r e uma tupla de s
RteT -v e r e -u e s, tal que t[A
i
]=v[A
i
], 0<isn, e
t[B
j
]=u[B
j
], 0<jsm
RSe a cardinalidade de r n
r
tuplas e a cardinalidade s
n
s
tuplas
^A cardinalidade de T n
r
- n
s

Francisco Alves Carneiro Banco de Dados 96
3. Modelo Relacional
- lgebra Relacional [Operaes Bsicas] -
OOperao de Produto Cartesiano (cont.)
Exemplo
RSejam r e s mostradas abaixo. Calcule r x s
A B
a1 b1
a1 b2
a2 b1
A B C
a1 b1 c1
a2 b3 c3
a2 b1 c4
r.A r.B s.A s.B s.C
a1 b1 a1 b1 c1
a1 b1 a2 b3 c3
a1 b1 a2 b1 c4
a1 b2 a1 b1 c1
a1 b2 a2 b3 c3
a1 b2 a2 b1 c4
a2 b1 a1 b1 c1
a2 b1 a2 b3 c3
a2 b1 a2 b1 c4
r s
r x s
Francisco Alves Carneiro Banco de Dados 97
Rr
condio
s = o
condio
(r x s)
Rcondio de juno da forma
Rr.A
g
u s.B
i
. r.A
h
u s.B
k
..... r.A
m
u s.B
L

R Para cada r.A
i
u s.B
j
, dom(r.A
i
) = dom(s.B
J
) e
ue{=, =, >, >, <, s}

3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
OOperao de juno theta (theta-join)
Sejam r e s relaes com esquemas R(A
1
, A
2
, , A
n
) e
S(B
1
, B
2
, , B
m
), respectivamente
O resultado da operao juno theta entre r e s uma
relao T(r.A
1
, r.A
2
, , r.A
n
, s.B
1
, s.B
2
, , s.B
m
) definida
por
Rcada tupla de T uma combinao entre uma tupla de
r e uma tupla de s, sempre que a combinao satisfaa
condio de juno
Francisco Alves Carneiro Banco de Dados 98
3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
OOperao de juno theta (cont.)
Exemplo
RSejam r e s mostradas abaixo. Calcule T= r s
A B
a1 b1
a1 b2
a2 b1
A B C
a1 b1 c1
a2 b3 c3
a2 b1 c4
r.A r.B s.A s.B s.C
a1 b1 a2 b3 c3
a1 b2 a1 b1 c1
a1 b2 a2 b3 c3
a1 b2 a2 b1 c4
a2 b1 a2 b3 c3
r s
T
r.B = s.B
Francisco Alves Carneiro Banco de Dados 99
3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
OOperao de Juno de Igualdade (Equijoin)
Operao de juno theta, cujo operador de comparao
a igualdade (=)
Sejam r e s relaes com esquemas R(A
1
, A
2
, , A
n
) e
S(B
1
, B
2
, , B
m
), respectivamente
O resultado da operao juno de igualdade entre r e s
uma relao T(r.A
1
, r.A
2
, , r.A
n
, s.B
1
, s.B
2
, , s.B
m
)
definida por
Rr
condio
s = o
condio
(r x s)
Rcondio de juno da forma
Rr.A
g
= s.B
i
. r.A
h
= s.B
k
. . r.A
m
= s.B
L

R Para cada r.A
i
=s.B
J
, dom(r.A
i
) = dom(s.B
J
)
Francisco Alves Carneiro Banco de Dados 100
OOperao de Juno de Igualdade (cont.)
Exemplo
RConsidere as relaes Departamento (d) e Empregado (e) mostradas
abaixo. Calcule a seguinte juno de igualdade
Departamento Empregado
3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
cod-dep nome ender gerente
1 Informtica R. X,10 21
2 R. Humanos R. Y,5 11
3 Financeiro R. Z. 2 40
Departamento
Matr Nome cpf salrio lotao
11 Brbara 231 8000 2
21 Andr 451 9000 1
33 Sofia 472 3000 2
35 Lucas 549 500 2
37 Rebeca 465 400 3
40 Caio 555 800 1
57 Yasmin 800 400 1
Empregado
d.cod-dep=e.lotao
Francisco Alves Carneiro Banco de Dados 101
3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
OOperao de Juno de Igualdade (cont.)
Exemplo

Para cada empregado, listar seu nome e o
nome do departamento onde est lotado.
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
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
Departamento Empregado
d.cod-dep=e.lotao
H
e.nome,d.nome
(Departamento Empregado)
d.cod-dep=e.lotao
Francisco Alves Carneiro Banco de Dados 102
3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
O Operao de Juno Natural (Natural Join)
Operao de juno de igualdade
RTodos 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
RR(A
1
, A
2
, , A
n
, B
1
, B
2
, , B
i
) e
S(B
1
, B
2
, , B
i
, C
1
, C
2
, , C
m
), respectivamente
O resultado da operao juno natural entre r e s uma relao T(r.A
1
,
r.A
2
, , r.A
n
,B
1
, B
2
, , B
i
,s.C
1
, s.C
2
, ,s.C
m
) definida por
Rr
condio
s = o
condio
(r x s)
Rcondio de juno da forma
Rr.B
1
= s.B
1
. r.B
2
= s.B
2
. . r.B
i
= s.B
i
Notao
Rr s
Francisco Alves Carneiro Banco de Dados 103
OOperao de Juno Natural (cont.)
Exemplo
RConsidere as relaes Departamento (d) e Empregado (e) mostradas
abaixo. Calcule a seguinte juno de igualdade
Departamento Empregado
3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
cod-dep nome ender gerente
1 Informtica R. X,10 21
2 R. Humanos R. Y,5 11
3 Financeiro R. Z. 2 40
Departamento
Matr Nome cpf salrio cod-dep
11 Brbara 231 8000 2
21 Andr 451 9000 1
33 Sofia 472 3000 2
35 Lucas 549 500 2
37 Rebeca 465 400 3
40 Caio 555 800 1
57 Yasmin 800 400 1
Empregado
Francisco Alves Carneiro Banco de Dados 104
3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
OOperao de Juno de Igualdade (cont.)
Exemplo

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
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
Departamento Empregado
Francisco Alves Carneiro Banco de Dados 105
3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
OOperao de Semi-Juno (Semi-join)
Definida por
r s = H
R
(r s)

u
u
OOperao de Interseo
O resultado da operao r s uma relao que contm
todas as tuplas de r e que pertencem a s
Rr e s so relaes compatveis
O resultado de r s definido por
Rr s= r - (r-s)
Ru representa uma condio de juno qualquer
Francisco Alves Carneiro Banco de Dados 106
3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
OOperao de diviso
Sejam r e s relaes com esquemas
R(A
1
, A
2
, , A
n
, B
1
, B
2
, , B
m
) e
S(B
1
, B
2
, , B
m
), respectivamente
Resultado da operao r s
R uma relao T(A
1
, A
2
, , A
n
), 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
A B C
a1 b1 c1
a1 b3 c1
a1 b3 c2
a1 b3 c3
a2 b2 c3
r
C
c1
c2
c3
s
A B
a1 b3
r s
Francisco Alves Carneiro Banco de Dados 107
3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
OOperao de diviso (cont.)
Exemplo 2
A B C
a1 b1 c1
a1 b3 c1
a2 b3 c1
a2 b3 c2
a2 b1 c1
a2 b1 c2
r
C
c1
c2
s
A B
a2 b3
a2 b1
r s
Exemplo 3
RConsidere a relao r do exemplo 2 e a relao s abaixo.
Calcule r s
B C
b3 c1
s
A
a1
a2
r s
Francisco Alves Carneiro Banco de Dados 108
3. Modelo Relacional
- lgebra Relacional [Operaes Derivadas] -
OOperao de diviso (cont.)
Exemplo
RConsidere 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
matr Cod-desc
11 2
11 3
15 1
15 2
15 3
17 2
Emp-Desc
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
Cod-desc Valor descrio
1 10 IR
2 8 INSS
3 5 seguro
Desconto
Francisco Alves Carneiro Banco de Dados 109
3. Modelo Relacional
- lgebra Relacional [Outras Operaes] -
O Funes Agregadas
Funes aplicadas sobre uma coleo de valores do banco de dados
sum
RRetorna o somatrio dos valores de uma coleo
avg
RRetorna a mdia dos valores de uma coleo
max
RRetorna o maior valor de uma coleo de valores
min
RRetorna o menor valor de uma coleo
count
RRetorna o nmero de elementos de uma coleo
distinct
RAlgumas vezes, torna-se necessrio eliminar repeties para o
clculo das funes agregadas
RConcatena-se a palavra distinct aps o nome da funo
Francisco Alves Carneiro Banco de Dados 110
3. Modelo Relacional
- lgebra Relacional [Outras Operaes] -
O Funes Agregadas (cont.)
Exemplos
RConsidere a relao
^Empregado(matr, nome, ender, salrio, cpf, lotao)
+matr a chave primria de Empregado
REncontre o nmero de empregados lotados no departamento 001
^count(H
matr
(o
lotao=001
(Empregado)))
REncontre o maior salrio da empresa
^max(H
salrio
(Empregado))
REncontre o salrio mdio da empresa
^avg-distinct(H
salrio
(Empregado))
REncontre a quantidade de salrios distintos no departamento
001
^count-distinct(H
salrio
(o
lotao=001
(Empregado)))
REncontre o primeiro e segundo maiores salrios da empresa
Francisco Alves Carneiro Banco de Dados 111
3. Modelo Relacional
- lgebra Relacional [Outras Operaes] -
OOperao de Juno Externa (outer-join)
Considere as seguintes relaes
RVendedor(matr, nome, ender, salrio, cpf, lotao)
RVendas(matr-vend,cod-item,quantidade, pr-venda)
Considere a seguinte consulta
RListar o histrico de vendas de cada vendedor
^Esquema do resultado
+Res(matr,nome,cod-item,quantidade,pr-venda)
^H
Res
(Vendedor Vendas)
RConsulta com perda de informao
^No aparecero no resultado
+Vendedores que no efetuaram vendas
RDefinir uma operao que evite esta perda de informao
^Outer join
+Adicionar tuplas extras ao resultado de uma juno
natural
Francisco Alves Carneiro Banco de Dados 112
3. Modelo Relacional
- lgebra Relacional [Outras Operaes] -
OOperao de outer-join (cont.)
Tipos
RJuno externa esquerda (left outer join)
RJuno externa direita (right outer join)
RJuno externa completa (full outer join)
left outer join
RNotao
^A B
RCalcula 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
Francisco Alves Carneiro Banco de Dados 113
3. Modelo Relacional
- lgebra Relacional [Outras Operaes] -
OOperao de outer-join (cont.)
left outer join (cont.)
RConsidere as seguintes relaes
^Vendedor(matr, nome, salrio)
^Vendas(matr,cod-item,qtde, pr-venda)
RListar o histrico de vendas de cada vendedor

matr nome salrio
11 Brbara 5000
14 Andr 7000
15 Sofia 3000
17 Caio 500
19 Lucas 700
21 Camila 900
Vendedor
matr cod-item qtde pr-venda
11 72727 160 2.00
11 545 50 15.50
14 545 87 15.50
21 13 10 8.75
Vendas
Francisco Alves Carneiro Banco de Dados 114
3. Modelo Relacional
- lgebra Relacional [Outras Operaes] -
OOperao de outer-join (cont.)
left outer join (cont.)
RListar o histrico de vendas de cada vendedor
^Vendedor Vendas
matr nome salrio cod-item qtde pr-venda
11 Brbara 5000 72727 160 2.00
11 Brbara 5000 545 50 15.50
14 Andr 7000 545 87 15.50
15 Sofia 3000 Null Null Null
17 Caio 500 Null Null Null
19 Lucas 700 Null Null Null
21 Camila 900 13 10 8.75
Francisco Alves Carneiro Banco de Dados 115
3. Modelo Relacional
- lgebra Relacional [Outras Operaes] -
OOperao de outer-join (cont.)
right outer join
RNotao
^A B
RCalcula 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
RNotao
^A B
RCalcula 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
Francisco Alves Carneiro Banco de Dados 116
5. SQL
- Histrico -
OStructured Query Language - SQL
Desenvolvida pela IBM
RStructured English Query Language - Sequel
RLinguagem de consulta para o sistema R
^Primeiro prottipo de SBD relacional
Especificar consultas de forma interativa
Rad hoc queries
OPadro
ANSI
RSQL 86
RSQL 89
RSQL 92
RSQL 99
^Propriedade de SBDs objeto-relacional
Francisco Alves Carneiro Banco de Dados 117
5. SQL
- Definio de Esquemas em SQL -
OEsquema de um banco de dados relacional
Conjunto de esquemas de relao mais um conjunto de
restries de integridade IC
OExpresses 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

Francisco Alves Carneiro Banco de Dados 118
5. SQL
- Definio de Esquemas em SQL -
OCriando tabelas (cont.)
Alguns tipos de dados suportados pelo SQL 92
Rchar(n)
^string de caracteres de tamanho fixo n
Rvarchar(n)
^string de caracteres de tamanho varivel (mximo n)
RInteger (Int)
Rsmallint
Rdecimal(p,d)
^numrico com p dgitos
^Dos p dgitos, d dgitos representam casas decimais
aps a vrgula
Rreal
^numrico ponto flutuante
Rdate
^data de calendrio
Alphabetic date formats ( April 15, 1998)
Numeric date formats ( 4/15/1998, April 15, 1998)
Unseparated string formats (19981207,
December 12, 1998)
Francisco Alves Carneiro Banco de Dados 119
OCriando Objeto
Estrutura bsica
RCREATE <nome do Objeto> [Caracteristicas]
REx: CREATE DATABASE <nome do banco>
RCREATE 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})
| FOREIGN KEY (nome-coluna {, nome-coluna})
REFERENCES nome-tabela
[ON DELETE CASCADE | SET NULL | NO ACTION ],
[ON UPDATE CASCADE],
| CHECK (predicado)
)
5. SQL
- Definio de Esquemas em SQL -
Definio
de restries
Especifica
chaves
candidatas
Francisco Alves Carneiro Banco de Dados 120
5. SQL
- Definio de Esquemas em SQL -
OCriando tabelas (cont.)
Exemplo: Considere o seguinte esquema de banco de
dados fornecimento:
pedido(codigo, data, cod_cli)
Restrio: codigo>0
cliente(cod_cli, nome)
produto (codigo_prod, nome, quant)
Restrio:quant>=5
ped_prod (cod_ped, cod_prod, quant)
Restrio: quant>0
Francisco Alves Carneiro Banco de Dados 121
5. SQL
- Definio de Esquemas em SQL -
ORemovendo tabelas
Estrutura bsica
RDROP TABLE nome-tabela
RRemove todas as tuplas da tabela e a definio da
tabela do catlogo
OAlterando tabelas
Estrutura bsica
RALTER TABLE nome-tabela
[ADD nome-coluna tipo de dados]
[ADD CONSTRAINT nome-restrio]
[DROP CONSTRAINT nome-restrio]
[DROP nome da coluna]
[ repetir ADD ou DROP em qualquer ordem]

Francisco Alves Carneiro Banco de Dados 122
5. SQL
- Conjunto de Operaes para Manipulao de Dados -
O INSERINDO DADOS NA TABELA

RINSERT INTO <nome da tabela> VALUES (<valores dos
atributos>)

R ALTERANDO DADOS
RUPDATE <nome da tabela> SET <nome da coluna>
WHERE <condio>

REXCLUINDO DADOS
DELETE FROM < nome da tabela> WHERE <condio
para determinas as linhas a serem excluidas>



Francisco Alves Carneiro Banco de Dados 123
5. SQL
- Conjunto de Operaes para Manipulao de Dados -
O Consultas simples sobre o banco de dados

Estrutura bsica para recuperar dados de uma ou mais tabelas

SELECT- especifica as colunas a serem recuperadas (*=todas)

FROM especifica a(s) tabela(s)

WHERE especifica o criterio de seleo

GROUP BY agrupa dados por coluna

HAVING especifica criterios para consultas agregadas

ORDER BY - especifica a ordem dos valores retornados

Francisco Alves Carneiro Banco de Dados 124
5. SQL
- Conjunto de Operaes para Manipulao de Dados -
O Consultas simples sobre o banco de dados
Estrutura bsica
RSELECT [ALL | DISTINCT] {* | expr [[AS] c_alias]
{, expr [[AS] c_alias] }}
FROM nome-tabela [[AS] qualificador]
{, nome-tabela [[AS] qualificador] }
WHERE predicado

ALL
RRetorna todas as tuplas, inclusive repetidas (default)
DISTINCT
RRetorna apenas tuplas no repetidas
*
RRetorna todos os atributos da(s) tabela(s)
expr
RRepresenta um atributo ou
RExpresso matemtica envolvendo atributos das tabelas
^salario*1.40
Francisco Alves Carneiro Banco de Dados 125
5. SQL
- Conjunto de Operaes para Manipulao de Dados -
O Consultas simples sobre o banco de dados (cont.)
FROM
RRepresenta o produto cartesiano das tabelas referenciadas
WHERE
RCorresponde 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)
RListar os funcionrios com salario maior que 3000
RListar funcionrios com salrios maior que 1000 e menor
que 2000
RListar nome dos funcionrios com o nome de seu
departamento de lotao
RListar nome dos funcionrios com o nome de seu
departamento de lotao e uma simulao de seu salrio
com um aumento de 15%
Francisco Alves Carneiro Banco de Dados 126
Vises
OTabelas virtuais
ODerivadas de tabelas base atravs de comandos SQL
OLimitaes de atualizao
OInteressantes para consultas freqentes
Francisco Alves Carneiro Banco de Dados 127
Especificao de Vises
CREATE VIEW INFO_DEP (DNome, NEmp, SalTotal)
AS SELECT DNome, COUNT(*), SUM(Salario)
FROM Departamentos, Empregados
WHERE Departamentos.Codigo = Empregados.DCod
GROUP BY DNome
SELECT DNome
FROM Info_Dep
WHERE NEmp < 10
Recupere o nome dos departamentos
que tm menos de 10 empregados
Francisco Alves Carneiro Banco de Dados 128
CHECK
CREATE TABLE Empregados
( ....
salario DECIMAL(6,2),
....
sexo CHAR,
....
CHECK (salario <= 11000.00),
CHECK (sexo IN ( M, F ) )
)
O salrio de um empregado no pode
ser maior do que R$11000,00 e ele s
pode ser homem ou mulher
Francisco Alves Carneiro Banco de Dados 129
Definio de Novos Domnios
OSQL-92 permite a definio de novos domnios para
os atributos. Ex.s:
create domain salario-hora numeric(5,2) constraint
test-val-pag check(value >= 4.00)
create domain numero-conta char(10)
constraint test-null-num-conta check(value not null)
create domain sexo-pessoa char(1)
constraint test-sex-pessoa check(value in(M, F))
Francisco Alves Carneiro Banco de Dados 130
Definio de Novos Domnios-1
CREATE TABLE Empregado
( Mat: CHAR(5) NOT NULL,
Nome: VARCHAR(40) NOT NULL,
Sal-hor: salario-hora NOT NULL,
CDep: CHAR(3),
CONSTRAINT pk PRIMARY KEY (Mat),
CONSTRAINT depart_fk
FOREIGN KEY (CDep) REFERENCES
Departamento (Codigo)
)
Francisco Alves Carneiro Banco de Dados 131
Definio de Novos Domnios-2
CREATE TABLE Cliente
( CPF: CHAR(11) NOT NULL,
Nome_Cli: VARCHAR(40) NOT NULL,
Num_Conta: numero-conta NOT NULL,
Sexo: sexo-pessoa,
CONSTRAINT pk PRIMARY KEY (CPF),
)
Francisco Alves Carneiro Banco de Dados 132
Asseres
CREATE ASSERTION SalEmp
CHECK ( NOT EXISTS (SELECT *
FROM Departamentos D,
Empregados E,
Empregados G
WHERE E.Salrio > G.Salario AND
E.CDep = D.Codigo AND
D.Gerente = G.CPF) )
O salrio de um empregado no pode
ser maior do que o salrio do gerente
do departamento em que ele trabalha
Francisco Alves Carneiro Banco de Dados 133
Stored Procedures
O Coleo denominada de comandos
SQL
O Mecanismo semelhante ao RPC
O Cdigo sob o controle do SGBD
O Passagem de parmetros
O 1 chamada n procedures
O Diminui trfego de rede

Aplicao
Stored
Procedures
exec
procedure
retorna
resultado
Francisco Alves Carneiro Banco de Dados 134
Stored Procedures
OFunes
Regras de negcio e integridade dos dados no SGBD
Administrao do sistema
Lado servidor da lgica da aplicao
OCaractersticas
Comandos SQL compartilhados por aplicaes
Melhor desempenho em ambientes C/S
Melhora autonomia de stio
Francisco Alves Carneiro Banco de Dados 135
Stored Procedures
OMenor flexibilidade
OPode piorar desempenho se o plano de execuo no
for periodicamente refeito
OCada procedure por default uma transao separada
OFalta de padronizao!!!
Francisco Alves Carneiro Banco de Dados 136
CREATE PROCEDURE mathtutor
@m1 smallint,
@m2 smallint,
@result smallint OUTPUT
AS
SELECT @result = @m1 * @m2
GO
OStored Procedures
> EXEC livro_res 7498, sistema%
Microsoft SQL Server
Francisco Alves Carneiro Banco de Dados 137
OStored Procedures
DECLARE @guess smaliint
SELECT @guess = 50
EXECUTE mathtutor 5, 6, @guess OUTPUT
SELECT O resultado , @guess
GO
Microsoft SQL Server
Francisco Alves Carneiro Banco de Dados 138
Triggers
insert
update
delete
Eventos
Comando
SQL
Stored
Procedure
Reao automtica a
eventos monitorados
Francisco Alves Carneiro Banco de Dados 139
Triggers
Usar 650 parafusos
estoque de parafusos: 850
parafusos 1500
850
Se quantidade de parafusos em
estoque menor que 1000, ento
acordar comprador
= > comprar 1000
SGBD Ativo
Francisco Alves Carneiro Banco de Dados 140
Trigger - Exemplo
DEFINE TRIGGER Departamentos D,
Empregados E,
Empregados G:
WHERE E.Salario > G.Salario AND
E.CDep = D.Codigo AND
D.Gerente = G.CPF
ACTION_PROCEDURE(NOTIF_GERENTE(D.Gerente);
Notificar o gerente se qualquer empregado do seu
departamento tem o salrio maior do que o seu
Francisco Alves Carneiro Banco de Dados 141
OTriggers (Gatilhos)
Um trigger um tipo especial de stored procedure que
invocado (disparado) quando ocorre uma tentativa
de modificao nos dados da tabela (relao) qual
ele est associado (vinculado). Isto ocorre quando
modificaes so feitas na tabela usando-se as
clusulas (operaes) INSET, UPDATE ou DELETE.
Microsoft SQL Server
Francisco Alves Carneiro Banco de Dados 142
OTriggers (Gatilhos)
Os triggers so usados para garantir regras de negcio
e integridade dos dados, ou para aes complexas, tais
como automaticamente atualizar um resumo dos dados.
Caso a execuo de um trigger possa violar alguma
restrio ento ele no ser executado.
So automaticamente disparados pelo SQL Server
No podem ser executados diretamente por um usurio
Microsoft SQL Server
Francisco Alves Carneiro Banco de Dados 143
OTriggers (Gatilhos)
CREATE TRIGGER update_usuario
ON usuario
FOR UPDATE
AS
IF UPDATE (num_usuario)
BEGIN
RAISERROR(Tabela no pode ser atualizada)
ROLLBACK TRANSACTION
END
Microsoft SQL Server
Francisco Alves Carneiro Banco de Dados 144
OTriggers (Gatilhos)
CREATE TRIGGER insert_reserva
ON reserva
FOR INSERT
AS
IF (SELECT COUNT(*)
FROM usuario, inserted
WHERE usuario.num_usuario = inserted. num_usuario) =0
BEGIN
PRINT A atualizao no pode ser executada
PRINT Nenhuma entidade USURIO para esta RESERVA
ROLLBACK TRANSACTION
END
Microsoft SQL Server
Francisco Alves Carneiro Banco de Dados 145
OTriggers (Gatilhos)
CREATE TRIGGER delete_usuario
ON usuario FOR DELETE
AS
IF (SELECT COUNT(*)
FROM emprestimo, deleted
WHERE emprestimo.num_usuario = deleted. num_usuario) > 0
BEGIN
PRINT A transao no pode ser executada.
PRINT Este usurio possui livro no devolvido
ROLLBACK TRANSACTION
END

Microsoft SQL Server
Francisco Alves Carneiro Banco de Dados 146
OTriggers (Gatilhos)
ELSE
DELETE reserva
FROM reserva, deleted
WHERE reserva.num_usuario = deleted.num_usuario
Microsoft SQL Server
Francisco Alves Carneiro Banco de Dados 147
Dependncias Funcionais
O uma generalizao da noo de Chave;
ONotao: ( R e R)
acontece em R, se para todo par de tuplas t
1
e t
2

em R tal que t
1
[] = t
2
[], ento t
1
[] = t
2
[]
OUsando a notao de dependncia funcional
K uma superchave de R se K R
OF o conjunto das dependncias funcionais