Академический Документы
Профессиональный Документы
Культура Документы
☞ 1.
2.
Introdução aos Sistemas de Banco de Dados
O Modelo Relacional
3. Modelo de Entidades e Relacionamentos (MER)
4. Projeto de Bancos de Dados Relacionais
5. A Linguagem SQL
6. Acesso a Bancos de Dados
7. Restrições de Integridade
8. Técnicas Avançadas de Projeto de BD’s
Relacionais (Normalização)
Arquivo A
Arquivo B
Arquivo C
Descrição
de Dados
Banco
de Dados
Sistema de Banco de Dados
•Conjunto de dados inter-relacionados (banco de dados)
•Componente de software (SGBD)
•Acesso e modificação dos dados
Tornar transparente como os dados são
• Garantir uma visão abstrata dos dados
armazenados e gerenciados
♥ José Maria Monteiro Banco de Dados 15
Introdução aos Sistemas de Bancos de Dados
- Abstração de Dados -
Sistemas
Usuário tem uma
de
visão abstrata dos
Bancos
dados
de Dados
Camada
Esquema Interno
Interna (Física) (Banco de Dados armazenado)
♥ José Maria Monteiro Banco de Dados 17
Introdução aos Sistemas de Bancos de Dados
- Arquitetura em Três Camadas -
• Esquema Interno - Camada Interna
• Descreve como os dados estão fisicamente armazenados
• Exemplo
• Organização de arquivo
• seqüencial-indexado, hashing, seqüencial, heap
• Alocação em disco
• Contígua, lista encadeada, lista encadeada utilizando índice
• Tipo de registro
• Fixo, variável
• Esquema Conceitual - Camada Conceitual
• Descreve quais dados estão armazenados no banco de dados
• Descreve os relacionamentos entre os dados armazenados
• Esquema Externo - Camada Externa
• Descreve parte do banco de dados
• Simplificar a visão do usuário
• “Ver” só o que interessa
• Segurança
♥ José Maria Monteiro Banco de Dados 18
Introdução aos Sistemas de Bancos de Dados
- Ocorrências e Esquemas -
• Ocorrências (instâncias)
• Coleção de informações armazenadas na base
• Altamente mutáveis
• Esquemas
• Projeto ou estrutura da base - definição
• Um esquema para cada nível de abstração
• Esquema físico - nível interno
• Esquema lógico - nível conceitual
• Sub-esquemas ou esquemas de visualização - nível
externo
Habilidade de modificar
Habilidade de modificar
o esquema lógico sem
o esquema físico sem
causar redefinição dos
causar redefinição dos
programas de aplicação
programas de aplicação
Modificações são
Modificações são
necessárias quando a
necessárias para
estrutura lógica da
melhorar desempenho
base é alterada
Gerenciador Gerenciador
de Buffer de Transações
Sistema de
Armazenamento
Gerenciador
de Arquivo
DBMS
Código Objeto
índices Arquivos
Catálogo
DB
aplicativos de dados
DBS
♥ José Maria Monteiro Banco de Dados 27
Introdução aos Sistemas de Bancos de Dados
- O Administrador de Bancos de Dados (DBA) -
• Programadores de aplicação
• Usuários sofisticados
☞
2. O Modelo Relacional
a. Conceitos Básicos
b. Modelagem de Dados
c. Álgebra Relacional
d. Cálculo Relacional de Tupla
3. Modelo de Entidades e Relacionamentos (MER)
4. Projeto de Bancos de Dados Relacionais
5. A Linguagem SQL
6. Acesso a Bancos de Dados
7. Restrições de Integridade
8. Técnicas Avançadas de Projeto de BD’s Relacionais
(Normalização)
• Linhas
• Conjunto de colunas (Atributos ou campos)
♥ José Maria Monteiro Banco de Dados 40
2. Modelo Relacional
- Conceitos Básicos -
• Domínio
• Conjunto de valores permitidos para um atributo
• Valores são atômicos (indivisíveis) e monovalorados
• O valor nulo significa valor desconhecido ou inexistente
• Exemplo: Domínio do atributo matrícula
• Conjunto de todos os valores válidos de matrícula
• dom(A) denota o domínio do atributo A
• Tipo de dados e formato
• Utilizados para especificar um domínio
• Exemplo: telefone
• tipo char com formato (ddd)ddd-dddd
• dom(telefone) representa o conjunto de valores atômicos
válidos para o tipo char e formato especificado
• Relação
• Seja r uma relação com esquema R
• r(R) ⊆ dom(A1) x dom(A2) x dom(A3) x … x dom(An)
• r(R) é um subconjunto do produto cartesiano dos
domínios dos atributos que definem R
• cada tupla de r(R) relaciona valores dos vários domínios
• r é uma relação (matemática)
• r(R) representa um conjunto de tuplas
SEXO EST_CIVIL
M Casado
M Solteiro
M Divorciado
M Viúvo
F Casado
F Solteiro
F Divorciado
F Viúvo
Departamento Empregado
Inclusão
• Insere t em r(R)
• Lista de valores
• Pode violar:
• Restrição de domínio
• Restrição de chave
• Integridade existencial
• Integridade referencial
• Tratamento
• Rejeitar a inclusão
• Solicitar novas informações
Exclusão
Modificação
• σθ1∧θ2(r) ⇔ σθ1(σθ2(r))
• σθ1(σθ2(r)) ⇔ σθ2(σθ1(r))
• Comutatividade da operação de seleção
• Exemplo
• Listar nome e salário de todos os empregado que
ganham salário maior que 9000
• Πnome, salário ( σ salario>9000 (Empregado)) (A)
• σ salario>9000 (Πnome, salário (Empregado)) (B)
r s T
Departamento Empregado
cod-dep nome ender gerente Matr Nome cpf salário lotação
1 Informática R. X,10 21 11 Bárbara 231 8000 2
2 R. Humanos R. Y,5 11 21 André 451 9000 1
3 Financeiro R. Z. 2 40 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
Departamento Empregado
d.cod-dep=e.lotação
d.cod-dep d.nome d. ender d. gerente e.matr e.nome e.cpf e.salário e.lotação
1 Informática R. X,10 21 21 André 451 9000 1
1 Informática R. X,10 21 40 Caio 555 800 1
1 Informática R. X,10 21 57 Yasmin 800 400 1
2 R. Humanos R. Y,5 11 11 Bárbara 231 8000 2
2 R. Humanos R. Y,5 11 33 Sofia 472 3000 2
2 R. Humanos R. Y,5 11 35 Lucas 549 500 2
3 Financeiro R. Z. 2 40 37 Rebeca 465 400 3
• Exemplo 3
Considere a relação r do exemplo 2 e a relação s abaixo. Calcule
r ⎟ s r ⎟ s
s
Fornece pares de tuplas de ΠR-S(r) e s, mas que não estão em r. Portanto,
uma tupla do resultado desta operação terá, como sua componente s, uma
tupla de s, mas que não está associada com uma tupla de r.
• ☞ Exclui falsas associações
♥ José Maria Monteiro Banco de Dados 83
2. Modelo Relacional
- Álgebra Relacional [Operações Derivadas] -
Exercício:
Utilizando a definição de divisão, mostrar passo a passo como é
encontrado os empregados que têm descontados de seu salário todos
os tipos de descontos possíveis
♥ José Maria Monteiro Banco de Dados 84
2. Modelo Relacional
- Álgebra Relacional [Outras Operações] -
• Funções Agregadas
• Funções aplicadas sobre uma coleção de valores do banco de dados
• sum
• Retorna o somatório dos valores de uma coleção
• avg
• Retorna a média dos valores de uma coleção
• max
• Retorna o maior valor de uma coleção de valores
• min
• Retorna o menor valor de uma coleção
• count
• Retorna o número de elementos de uma coleção
• distinct
• Algumas vezes, torna-se necessário eliminar repetições para o
cálculo das funções agregadas
• Concatena-se a palavra distinct após o nome da função
1 10200 9000
2 11500 8000
3 400 400
• Expressões Aritméticas
• Ex: Obtenha uma relação de inscrições com as
classificações inflaccionadas de 20%.
• Πcoddis, bia, resultado, novo = resultado*1.2 ( Inscrito )
• Πcoddis, bia, resultado, novo = resultado + (20-resultado)/10 ( Inscrito )
91
♥ José Maria Monteiro Banco de Dados
2. Modelo Relacional
- Álgebra Relacional [Outras Operações] -
• Reunião
• associativa: R ∪ ( S ∪ T ) = ( R ∪ S ) ∪ T
• comutativa: R ∪ S = S ∪ R
• Produto cartesiano
• associativo: R ⋅ ( S ⋅ T ) = ( R ⋅ S ) ⋅ T
• não comutativo: R ⋅ S ≠ S ⋅ R
• Junção natural
• associativa e comutativa (independência da ordem das colunas
devida aos atributos): R ⋈ S = S ⋈ R
• Por isso ⋈ generaliza facilmente: R = R1 ⋈ ... ⋈ Rn
• R contém os tuplos µ tais que, para 1≤ i ≤ n, µ restringido aos
atributos de Ri é um tuplo de Ri
• θ - junção
• não é comutativa mas é associativa (no caso de os índices serem
válidos)
• R ⋈ ( S ⋈ T ) = ( R ⋈ S ) ⋈ T
i θ1 j k θ2 l i θ1 j (r+k) θ2 l
97
♥ José Maria Monteiro Banco de Dados
2. Modelo Relacional
- Cálculo Relacional -
• Exemplos
Considere as seguintes relações
Departamento(cod_depart, nome, ender)
Empregado(matr, nome, ender, cpf, lotação, salario)
Dependente(matr_resp, nome_dep, data_nascimento)
Consulta C1:
Nome e salário dos empregados que ganham mais que
5000
C1: {e[nome],e[salário] | e ∈ Empregado ∧ e[salário]>5000 }
Consulta C2:
Nome e salário dos empregados que trabalham no
departamento ‘DC’
• Expressões Inseguras
Ck: {e | ←(e ∈ Empregado)}
• Retorna um conjunto infinito de tuplas
• Domínio de uma expressão
• Valores que aparecem como constantes ou que existem
em alguma tupla referenciada (mencionada) na expressão
• Dom(e ∈ Empregado ∧ e[salário]>5000)
• 5000 mais todos os valores de tuplas pertencentes a
Empregado
• A expressão é segura se os valores que aparecem no seu
resultado pertencem ao domínio da expressão
• Exemplo
Dom(← (e ∈ Empregado))
• Valores de tuplas pertencentes a Empregado
{e | ←(e ∈ Empregado)}
• Tem como resultado tuplas que não pertencem a Empregado
• (←(e ∈ Empregado)) não é segura
• Padrão para expressividade relacional (completeza
relacional)
Uma forma de representação é relacionalmente completa se permite
a definição de qualquer resultado de consulta definida por uma expressão
de cálculo relacional
• Emprego no processo de otimização
• P1 ∧ (P1∨ P2) ⇔ P1
☞ 3.
4.
Modelo de Entidades e Relacionamentos (MER)
Projeto de Bancos de Dados Relacionais
5. A Linguagem SQL
6. Acesso a Bancos de Dados
7. Restrições de Integridade
8. Técnicas Avançadas de Projeto de BD’s Relacionais
(Normalização)
• Entidade
• Representação 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 bancária, uma disciplina
• Conjunto de entidades (tipo de entidade)
• Entidades que apresentam características semelhantes
• Exemplo
• Estudantes, Empregados, Contas
●
●
Conjunto
endereço ●
●
de endereços
●
R. X, 9
♥ José Maria Monteiro Banco de Dados 110
3. Modelo Entidade-Relacionamento
- Conceitos Básicos -
• Relacionamento
• Abstração que representa associações entre diferentes
entidades
• Exemplo
• Pode-se definir um relacionamento que associa o
empregado Bárbara com o departamento “Ciência da
Computação”
• Conjunto de relacionamentos (tipo de relacionamento)
• Grupo de relacionamentos que representam o mesmo tipo
de associação
• Exemplo
• Conjunto de relacionamentos lotação
+Contém todos os relacionamentos entre empregado e
.departamento
• Seja R um conjunto de relacionamentos representando
associações entre os conjuntos de entidade E1, E2, ... En,
• Relacionamento (cont.)
• Conjunto de relacionamentos (cont)
• Seja R um conjunto de relacionamentos, representando
associações entre os conjuntos de entidades E1, E2, ... En, então
R ⊆ E1 x E2 x En
• Seja r∈R, então r=(e1, e2, …, en), onde e1∈E1, e2∈E2, …, en∈En,
• Exemplo
• Considere o conjunto de relacionamentos lotação
• lotação ⊆ Departamento x Empregado
• (Bárbara, Ciência da Computação) ∈lotação
• Papel (role)
• Função que uma entidade desempenha no relacionamento
• Exemplo
• Papel de empregado
• É lotado (Bábara é lotada em Ciência da Computação)
• Papel de departamento
• Lota (Ciência da Computação lota Bárbara)
• Relacionamento (cont.)
• Grau de Relacionamento
• Número de entidades participantes no relacionamento
• Relacionamento binário
• Relacionamento de grau 2
• Exemplo
• Relacionamento ternário
• Relacionamento de grau 3
• Exemplo
• Relacionamento Agência-Conta-Cliente
Cliente ●
● ● Conta
● ● ●
● ● ● ●
● ● ●
●
● ● ● ● Agência
● ●●
● ●
Agência_Conta-Cliente
♥ José Maria Monteiro Banco de Dados 115
3. Modelo Entidade-Relacionamento
- Conceitos Básicos -
• Relacionamento (cont.)
• Auto-relacionamento (relacionamento recursivo)
• Relacionamento envolvendo um único conjunto de
entidades
• O conjunto de entidades apresenta diferentes papéis
• Considere o seguinte cenário:
• Cada departamento possui vários supervisores
• responsáveis por um subconjunto de empregados do
departamento
• Modelagem do relacionamento entre empregado e supervisor
• Um supervisor também é uma entidade do tipo Empregado
• Relacionamento supervisiona
● 1
Empregado desempenha dois papéis
● 1
- é-supervisionado-por (1) ● 2
● 1
- é-supervisor-de (2) ● 1
● 2
Supervisiona
Empregado
♥ José Maria Monteiro Banco de Dados 116
3. Modelo Entidade-Relacionamento
- Conceitos Básicos -
• Relacionamento (cont.)
• Atributos de relacionamento
• Propriedades que descrevem um relacionamento
• Exemplo
• Considere o atributo data-lotação
• Representa a data em que um empregado foi lotado em um
determinado departamento
• data-lotação é um atributo do relacionamento lotação
• Considere o atributo nota na modelagem de dados da
Unifor
• 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
• Exemplos
• Cardinalidade do relacionamento lotação entre
Departamento e Empregado 1:N
• Entidade fraca
• Entidade cuja existência depende de estar associada, via um
relacionamento (relacionamento de identificação), com uma
outra entidade (entidade forte)
• Exemplo
• Considere o relacionamento dependência entre os
conjuntos de entidades Empregado e Dependente
• Dependente contém os dependentes dos empregados da
empresa
• A existência de um dependente Bárbara
• Depende da existência de um empregado André e que
• Bárbara esteja relacionada a André através do relacionamento
dependência
• Uma entidade fraca é identificada
• Por estar relacionada com uma entidade forte
• Pelo atributo chave da entidade forte
• Atributos da própria entidade fraca
• Chave parcial
• Ferramenta de projeto
• Capaz de capturar e representar graficamente toda
estrutura lógica de um banco de dados
• Utilizada para modelagem de BDs
• Existem ferramentas
• Fornecem uma interface gráfica para o desenvolvimento
de DERs
• A partir do DER especificado, geram o esquema do BD
relacional
• ERWin
Notação
Símbolo Representação
Relacionamento de
identificação
Notação
Símbolo Representação
* Nome atributo
Atributo multivalorado
Nome atributo
Atributo composto
Nome atributo Nome atributo
Notação
Símbolo Representação
1 N
E1 R E2 Cardinalidade 1:N
• Exercício
• Utilize o DER para modelar o BD para o seguinte cenário
• A empresa X tem seus dados organizados da seguinte
forma:
• Os empregados estão lotados em diversos departamentos.
Funcionários são diretamente chefiados por supervisores.
É importante identificar o supervisor de cada funcionário
• Todo funcionário deve estar lotado em um departamento.
Nenhum funcionário pode estar lotado em mais de um
departamento
• Um departamento possui no mínimo 5 empregados, onde
um deles é o gerente do departamento.
• Os dependentes dos funcionários devem possuir como
atributos: nome, data-nasc. A idade limite para ser
dependente de um empregado é 18 anos
• O salário de um empregado é calculado com base nos
seus diversos vencimentos.
• Para tipo de vencimento, existe uma descrição e o valor
correspondente
supervisiona Vencimento
é-supervisionado
dt_lotação é-supervisor (0,n) valor
(1,1) (0,n)
(1,1) (1,n)
lotação Empregado ganha
(0,n)
(5,n)
matr dt_nasc (1,1)
dependência
nome (0,1) idade
Departamento
(0,1) nome
Dependente
gerência
dt_nasc
♥ José Maria Monteiro Banco de Dados 127
3. Modelo Entidade-Relacionamento
- Diagrama ER -
Cod_venc descrição
supervisiona Vencimento
é-supervisionado
dt_lotação é-supervisor n valor
n 1
n n
lotação Empregado ganha
1
1
matr dt_nasc
dependência
nome 1 idade
Departamento n
1 nome
Dependente
gerência
dt_nasc
• Especialização
• Existem conjuntos de entidades compostos de subgrupos
de entidades
• Cada subgrupo apresenta propriedades diferentes
dos outros subgrupos
• Especialização
• Considere o conjuntos de entidades Empregado na
modelagem dos dados de um universidade. Podemos
identificar os seguintes subconjuntos dentro de Empregado:
• Professores
• Titulação
• Universidade de titulação
• Regime de trabalho (DE, 40h, 20h)
• Técnicos Administrativos
• Grau de instrução
• Área de atuação (contador, secretária, etc…)
• Engenheiros
• CREA
• Especialidade
• Especialização (cont.)
• Definição
• Processo de identificação de subgrupos de entidades
dentro de um conjunto de entidades
• Processo de especialização pode ser recursivo
• Um único conjunto de entidades pode ser especializado
por mais de uma característica de diferenciação
(especialização)
• No exemplo de Empregado em uma universidade
• Especialização por tipo de empregado
• Especialização por tipo de contrato
• CLT
• Serviços prestados
• Um entidade deve pertencer às várias especializações
• Os subgrupos identificados em um processo de especialização
podem participar de relacionamentos que não se aplicam a
todas entidades do conjunto de entidades de origem
• Especialização (cont.)
• Notação MER
Empregado
is a (é um)
Empregado is a Professor ou
Empregado is a Técnico Adm ou
Empregado is a Engenheiro
ISA
regime_tr CREA
• Especialização (cont.)
• Herança de propriedades
• Os subgrupos de entidades herdam todas as
propriedades do conjunto de entidade de mais alto nível
nome
Empregado
dt_nasc
matr
ISA
CREA
regime_tr
• Especialização (cont.)
• Relacionamentos dt_lotação
Disciplina n 1
Empregado lotação Departamento
n
oferta
ISA
n CREA
regime_tr
• Especialização (cont.)
• É realizada sobre um único conjunto de entidades
• Identificar subgrupos
• Ênfase nas diferenças entre entidades de um mesmo
subconjunto de entidades
• Através dos subgrupos mais especializados
• Generalização
• Processo de identificação de conjuntos de entidades que
possuem características em comum
• Mesmos atributos e participam de mesmos
relacionamentos
• Formação de um único conjunto de entidades de mais alto
nível
• É realizada sobre vários conjuntos de entidades
• Identificar um conjunto de entidades de mais alto nível
• Generalização (cont.)
• Ênfase nas similaridades entre diversos conjuntos de
entidades
• Redução de redundância de representação
• Atributos compartilhados só serão representados no
conjunto de entidades de nível mais alto
• Não serão repetidos
• Na prática
• Generalização é o processo inverso da especialização
• Duas estratégias que devem ser utilizadas
• Especializar onde for necessário
• Generalizar onde for possível
ISA
...
E1 E2 ... En
• Disjunção
• ∀ 0<i,j≤n, i≠j : Ei ∩ Ej = ∅
• Nenhuma entidade de E pode pertencer a mais de um
subgrupo
• Agregação
• Abstração 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 estão relacionados a agência e conta
• Estratégia 1
data_abertura
Agência
1 n Conta
n
Cliente
Agência Conta
cod-ag num-conta
Cliente_Conta data-abert
cod-cliente
cod-cliente ender
CPF Cliente
data-nasc
nome
• Agregação (cont.)
• Problemas na Estratégia 1
• Não representa a estrutura lógica que deve ser
modelada
• Relacionamento de cliente com o relacionamento
agência-conta
• Na prática, para acessar todas as contas de uma
agência
• Terão que ser acessadas todas triplas
(agência,conta,cliente)
• Uma conta pode pertencer a vários clientes
• Vários acessos redundantes
• Agregação (cont.)
• Utilizar o mecanismo de agregação
cod_ag nome ender gerente num_conta saldo
Agência 1 n Conta
n data_abertura
cod_cliente n ender
CPF Cliente
data-nasc
nome
♥ José Maria Monteiro Banco de Dados 143
3. Modelo Entidade-Relacionamento
- Diagrama no Modelo Relacional -
cod_ag
Agência Conta
cod-ag num-conta
data-abert
Cliente_Conta
cod-cliente
cod-cliente ender
CPF Cliente
data-nasc
nome
144
♥ José Maria Monteiro Banco de Dados
3. Modelo Entidade-Relacionamento
- Diagrama no Modelo Relacional -
Agência 1 n Conta
data_abertura n
cod_cliente n ender
CPF Cliente
data-nasc
nome
data_consulta
Médico
n consulta n Paciente
n
Exame
Consulta
mid pid eid data_consulta
1 2 3 10/11
1 2 1 10/12
2 3 null 10/12 Se o médico não passar nenhum exame???
n n
Médico Paciente
n data_consulta
n enome
eid
Exame
• Agregação (cont.)
• Agregação (cont.)
• Agregação (cont.)
☞ 4.
5.
Projeto de Bancos de Dados Relacionais
A Linguagem SQL
6. Acesso a Bancos de Dados
7. Restrições de Integridade
8. Técnicas Avançadas de Projeto de BD’s Relacionais
(Normalização)
Análise de
Requisitos
Requisitos de dados
Projeto
Conceitual
Análise Esquema Conceitual (MER)
Independente Funcional
do SGBD Projeto Lógico
(mapeamento de
Específico para modelo de dados)
cada SGBD
Esquema Conceitual representado
no modelo de dados do SGBD
Projeto Projeto Físico
(Software) Estruturas de armazenamento
e caminhos de acesso (índices)
Implementação
Implementação
Expressões DDL e carga do BD
• Projeto Físico
• Definir estruturas de armazenamento
• Como e onde devem ser armazenadas as tabelas
• Uma tabela em um arquivo
• Várias tabelas em um único arquivo
• Definir caminhos de acesso
• Definir índices
• Definir tipo de índice
• Ordenado
• Primário
• Secundário
• Hash
• Utilizar critérios de performance
• Específico por SGBD
• Implementação
• 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
• Expressões DDL
• Carregar o BD
• Ferramentas CASE
• Modelagem ER gráfica
• Geração automática de esquema (DDL)
• Algoritmo de mapeamento
• Sete passos
• Passo 2
• Para cada relacionamento binário 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 primária da outra tabela
(E1)
• Critério de escolha
>> Entidade com participação total no relacionamento
• Atributos de relacionamentos devem ser incluídos na
tabela com chave estrangeira
• Notação
PK
E1 E2
PK
• Passo 2
• Para cada relacionamento binário 1:1 entre os conjuntos
de entidades E1 e E2
PK
Empregado Emp Dep
codigo
nome PK
matr dt_nasc
nome 1 PK
Departamento Dep Emp
1
gerência
PK
• Passo 2
• Para cada relacionamento binário 1:1 entre os conjuntos
de entidades E1 e E2
PK
Departamento Empregado
PK
Empregado Departamento
matr nome codigo codigo nome
1 RH
1 Gal NULL
2 Vendas
2 Gil NULL
3 Sá 1
4 Dé 2
5 Ana NULL
♥ José Maria Monteiro Banco de Dados 163
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
• Passo 2
• Para cada relacionamento binário 1:1 entre os conjuntos
de entidades E1 e E2
PK
Empregado Departamento
PK
Empregado Departamento
matr nome codigo nome matr
1 RH 3
1 Gal
2 Vendas 4
2 Gil
3 Sá
4 Dé Valores nulos não são armazenados….
5 Ana
♥ José Maria Monteiro Banco de Dados 164
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
• Passo 3
• Para cada relacionamento binário 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
primária da outra tabela (E1)
• Atributos de relacionamentos devem ser incluídos na
tabela com chave estrangeira
• Notação
PK
E1 E2
• Passo 4
• Para cada relacionamento binário 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 primárias de E1 e E2
• Estes dois atributos comporão a chave primária de tab-aux
• Atributos de relacionamentos devem ser incluídos na
tabela tab-aux
• Notação
PK-E1 PK-E2
E1 Tab-aux E2
PK-E1
PK-E2
♥ José Maria Monteiro Banco de Dados 166
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
primárias das tabelas que participam do relacionamento
• Estes atributos comporão a chave primária 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 primária da
tabela correspondentes ao conjunto de entidades fortes R
• A chave primária de TFr será a chave parcial de F mais a chave
primária de R
• 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 primária de
E1
• A chave primária de T será composta do atributo A mais a
chave primária de E1
• Exercício
• Construa o DR para o seguinte DER
cod-ag nome ender gerente num-conta saldo
Agência 1 n Conta
n
data_abertura
cod-cliente n ender
CPF Cliente
data-nasc
nome
♥ José Maria Monteiro Banco de Dados 169
4. Projeto de Bancos de Dados
- Mapeamento do MER para um Banco de Dados Relacional -
cod_ag
Agência Conta
cod-ag num-conta
data-abert
Cliente_Conta
cod-cliente
cod-cliente ender
CPF Cliente
data-nasc
nome
cic N End
Sal
DN
Empregado
ISA ISA
Es
Piloto Técnico
B HV
DataInP
Monitorado DataInM
por
Empregado
☞ 5.
6.
A Linguagem SQL
Acesso a Bancos de Dados
7. Restrições de Integridade
8. Técnicas Avançadas de Projeto de BD’s Relacionais
(Normalização)
• Criando tabelas
• Estrutura básica
• CREATE TABLE nome-tabela
(nome-coluna tipo-de-dados [not null],
[nome-coluna tipo-de-dados [not null] … ],
[CONSTRAINT nome-restrição]
UNIQUE nome-coluna
| PRIMARY KEY(nome-coluna {, nome-coluna})
Especifica
chaves | FOREIGN KEY (nome-coluna {, nome-coluna})
candidatas REFERENCES nome-tabela
[ON DELETE CASCADE |
SET NULL | NO
ACTION ],
Definição
de restrições [ON UPDATE CASCADE],
| CHECK (predicado)
)
♥ José Maria Monteiro Banco de Dados 181
5. SQL
- Definição de Esquemas em SQL -
• Removendo tabelas
• Estrutura básica
• DROP TABLE nome-tabela [CASCADE | RESTRICT]
• Remove as tuplas da tabela e sua definição do catálogo
• CASCADE remove as restrições do tipo foreign key tabelas
que referenciam a tabela removida
• Alterando tabelas
• Estrutura básica
• ALTER TABLE nome-tabela
[ADD nome-coluna tipo de dados]
[DROP nome-coluna ] Não suportado pelo DB2
[ADD CONSTRAINT nome-restrição]
[DROP CONSTRAINT nome-restrição]
[DROP PRIMARY KEY]
[ repetir ADD ou DROP em qualquer ordem]
• Exercício:
• Alterar a tabela Empregado para que nome seja chave candidata
♥ José Maria Monteiro Banco de Dados 184
5. SQL
- Conjunto de Operações para Manipulação de Dados -
• Exercícios
• Listar matrícula dos empregados que não possuem dependentes
Select e.matr
From empregado e
EXCEPT
Select d.matr-resp
From dependente d
• Funções Agregadas
• Funções embutidas (built-in) aplicadas sobre uma coleção
de valores (colunas) do banco de dados
• sum
• Retorna o somatório dos valores de uma coleção
• avg
• Retorna a média dos valores de uma coleção
• max
• Retorna o maior valor de uma coleção de valores
• min
• Retorna o menor valor de uma coleção
• count
• Retorna o número de elementos de uma coleção
• Sintaxe
• nome-da-função (ALL | DISTINCT nome-coluna) | count(*)
• Não podem ser utilizados na cláusula WHERE
• Exercícios
• Encontre o número de empregados lotados no
departamento de Informática
select count(*)
from Empregado e, Departamento e
where e.lotacao=d.cod_dep and d.nome like '_nform_tica'
• Selecionando grupos
• Listar nome dos departamentos cuja média salarial seja maior
que 7000
• Cláusula having
• Filtro de grupos
• Exemplo Funções Agregadas
select d.nome, avg(salario) => Podem ser
from Departamento d, Empregado e
where d.cod_depart=e.lotacao utilizados na cláusula
group by d.nome HAVING
having avg(e.salario)>7000
• Consulta com where e having
• predicado da cláusula where é avaliado primeiramente
• Tuplas que satisfazem o predicado são agrupadas pelo group by
• Predicado da cláusula having é avaliado
• Grupos que satisfazem o predicado aparecem no resultado
• Selecionando grupos
select lotação, count(*) as quantidade_empregados
from Empregado
group by lotação
Empregado
matr nome cpf salário lotação lotação quantidade_empregados
11 Bárbara 231 8000 2
1 3
21 André 451 9000 1
33 Sofia 472 3000 2 2 3
35 Lucas 549 500 2 3 1
37 Rebeca 465 400 3
40 Caio 555 800 1
57 Yasmin 800 400 1
• Selecionando grupos
select lotação, count(*) as quantidade_empregados
from Empregado
group by lotação
Empregado
matr nome cpf salário lotação lotação quantidade_empregados
11 Bárbara 231 8000 2
1 3
21 André 451 9000 1
33 Sofia 472 3000 2 2 3
35 Lucas 549 500 2 3 1
37 Rebeca 465 400 3
40 Caio 555 800 1
57 Yasmin 800 400 1
• Selecionando grupos
select lotação, sum(salário), max(salário)
from Empregado
group by lotação
Empregado
matr nome cpf salário lotação lotação sum of salário max of salário
11 Bárbara 231 8000 2
21 André 451 9000 1 1 10200 9000
33 Sofia 472 3000 2
2 11500 8000
35 Lucas 549 500 2
37 Rebeca 465 400 3 3 400 400
40 Caio 555 800 1
57 Yasmin 800 400 1
• Selecionando grupos
select lotação, sum(salário), max(salário)
from Empregado
group by lotação
Empregado
matr nome cpf salário lotação lotação sum of salário max of salário
11 Bárbara 231 8000 2
21 André 451 9000 1 1 10200 9000
33 Sofia 472 3000 2
2 11500 8000
35 Lucas 549 500 2
37 Rebeca 465 400 3 3 400 400
40 Caio 555 800 1
57 Yasmin 800 400 1
select nome
from Empregado e, Departamento d
where e.lotação = d.cod_depart
and d.cidade='Fortaleza' )
select nome
from Empregado
where salário >=some (select avg(salário) from Empregado
group by lotação)
• Predicado EXISTS
• Verifica se o conjunto retornado por uma subconjunto é
vazio ou não
• Listar empregados que possuem dependentes
select e.nome
from Empregado e
where exists (select * from Dependente where matr_resp=e.matr)
• Predicado EXISTS
• Verifica se o conjunto retornado por uma subconjunto é
vazio ou não
• Listar empregados que possuem dependentes
select e.nome
from Empregado e
where exists (select * from Dependente where matr_resp=e.matr)
• Predicado Between
• Sintaxe
• expr1 [NOT] BETWEEN expr2 and expr3
• Exemplo
• matr between 2 and 10 ⇔ matr >= 2 and matr<=10
♥ José Maria Monteiro Banco de Dados 216
5. SQL
- Conjunto de Operações para Manipulação de Dados -
Πd.nome(σd.cod_depart=e.lotação(Departamento x Empregado))
⇔
Πd.nome( Departamento d.cod_depart=e.lotação Empregado )
<tipo_junção> ::=
[ INNER | { { LEFT | RIGHT | FULL } [OUTER] } ] [ <join_hint> ]
JOIN
• Exemplos
• Definindo visões
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.lotação
• Exemplos
• Acessando o banco de dados através de visões
select * from V1
select * from V2 where número_de_dependentes>2
select * from V3
matrícula salário
----------------------------------- ------------------------
caio 500.0
rebeca 500.0