Banco de Dados II
Banco de Dados II
Banco de Dados II
1 de fevereiro de 2006
Sumário
1 Introdução 4
1.1 Sistema de Processamento de Arquivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.2 Independência de Dados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.3 Sistema Gerenciador de Banco de Dados (SGBD) . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.3.1 Caracteríticas de um SGBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.4 Motivação para SGBDs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.4.1 Linguagens de acesso a um SGBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.4.2 Arquitetura de um SGBD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
1.5 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.6 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2 O Modelo Entidade-Relacionamento 10
2.1 Entidades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2 Atributos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.1 Chave Primária . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Atributos Multivalorados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.3 Atributos Compostos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.2.4 Atributo Derivado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Entidades Fracas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4 Relacionamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.1 Atributos de Relacionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.4.2 Cardinalidade dos Relacionamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.3 Grau dos Relacionamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.3.1 Relacionamentos Binários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.4 Relacionamentos Ternários . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.4.5 Auto-Relacionamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5 MER Estendido . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.1 Generalização e Especilização . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2.5.1.1 Relacionamentos entre Entidades Especializadas . . . . . . . . . . . . . . . . . 20
2.5.1.2 Multiplas Especializações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.5.1.3 Restrições da Abstração de Generalização . . . . . . . . . . . . . . . . . . . . 20
2.5.2 Agregação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.5.2.1 1 Caso do uso de Agregação (Opcionalidade) . . . . . . . . . . . . . . . . . . . 23
2.5.2.2 2 Caso do uso de Agregação (Identificador em Relacionamento) . . . . . . . . . 23
2.5.2.3 3 Caso do uso de Agregação (indica tempo) . . . . . . . . . . . . . . . . . . . 23
2.6 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.6.1 Primeira Lista . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.7 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
1
SUMÁRIO 2
3 O Modelo Relacional 28
3.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2 Domínios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.3 Relações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.4 Chave no Modelo Relacional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.1 Superchave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.2 Chave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.4.3 Chave Candidata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.4 Restrições de Integridade . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.4.4.1 Chave Estrangeira (Integridade Referencial) . . . . . . . . . . . . . . . . . . . 31
3.4.4.2 Exemplos de Restrições de Integridade . . . . . . . . . . . . . . . . . . . . . . 32
3.5 Outros tipos de Restrições . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.6 Bibliografia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5 Normalização de Relações 42
5.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.2 Normalização de Relações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.3 Anomalias de Modificações . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4 Primeira Forma Normal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.5 Dependência Funcional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.6 Segunda Forma Normal (2FN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.7 Terceira Forma Normal (3FN) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.8 Exemplo Prático . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.9 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
6 Álgebra Relacional 49
6.1 Introdução . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
6.2 Operação Selecionar ( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
6.3 A Operação Projetar ( ) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6.10 Exercícios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
Capítulo 1
Introdução
Um Sistema Gerenciador de Banco de Dados (SGBD) é constituído por um conjunto de dados associados a
um conjunto de programas para acesso a esses dados. O conjunto de dados, comumente chamado de
banco de dados, contém informações sobre uma empresa em particular. O principal objetivo de um SGBD
é proporcinar um ambiente tanto conveniente quanto eficiente para a recuperação e armazenamento das
informações do banco de dados.
SGBDs são projetados para gerir grandes volumes de informações. Devem possuir mecanismos para definição e
manipulação de dados, além de prover compartilhamento e segurança dos mesmos.
Neste Sistema de Processamento deArquivos que acabamos de descrever, os registros são armazenados em vários
arquivos e diversos programas são escritos para extrair e gravar estes registros.
Obter informações organizacionais em sistemas de processamento de arquivos apresenta numerosas desvanta-
gens:
4
CAPÍTULO 1. INTRODUÇÃO 5
Dificuldade no acesso aos dados: Suponha que um diretor necessite encontrar os clientes que residem em
uma área da cidade onde o CEP seja 12133-433. Se este modulo do sistema de informação não estiver
implementado, o diretor terá duas opções: ele pega a lista de clientes e extrai a informação necessária, ou
pede para o departamento de informática implementar a rotina necessária para obtenção do relatório.
Isolamento de dados: Uma vez que os dados estão espalhados em diversos arquivos e podem ter formatos
diferentes, é difícil escrever novos programasaplicativos para recuperar os dados adequados.
Anomalia de acesso concorrente: Evitar problemas relacionados a acesso concorrentes em um dado. Por
exemplo, se duas pessoas sacarem dinheiro de uma conta ao mesmo tempo, o resultado das operações
concorrentes podemdeixar um saldo inconsistente. Considere uma conta com a quantia de $400 e dois
saques simultâneo de $100 e $50. Se houver problema de concorrência, a conta pode ficar com valores de
$300 ou de $350 ao invés de $250
Segurança: Cada usuário do sistema poderá ter acesso aos dados relativos a sua função. Por exemplo, um
caixa não pode ver dados pertencentes as diretoria.
Arquivo de Cliente
De acordo com a figura 1.1, nota-se que os programas gravam seus dados em disco, seguindo estruturas próprias.
Para acessá-los é necessário conhecer sua estrutura.
Se vários programas compartilham seus dados, todos devem conhecer e manipular as mesmas estruturas.
Se algum programa precisar de alguma mudança de dados, todos os programas terão que ser alterados, mesmo
que a alteração ocorra em dados que ele não utiliza.
CAPÍTULO 1. INTRODUÇÃO 6
Se entre os programas e os dados for colocado um sistema que converte o formato em que os dados estão gravados
para o formato específico que cada programa precisa dos dados, então cada programa:
Não precisa entrar em detalhes de como seus dados estão fisicamente gravados;
Não precisa ser modificado se a estrrutura de dados que ele não utiliza for mudada.
É feita uma conversão específica dos dados gravados para a forma usada em cada programa. Alterar os dados
obriga a alterar a forma de conversão para cada programa, mas não cada programa em si. As alterações
ficam concentradas nesse sistema intermediário.
Esse sistema intermediário é chamado de Sistema Gerenciador de Banco de Dados (Figura 1.2).
SGBD
Banco de Dados
Com a introdução de um SGBD em uma organização demanda o surgimento de um novo profissional, o Admi-
nistrador de Banco de Dados (DBA).
O DBA é responsável pela manutenção do SGBD e da Base de Dados em si, centralizando todo o gerenciamento
sobre a estrutura dos dados da empresa.
CONTROLE DE REDUNDÂNCIA:A redundância, ou seja, a repetição de dados, deve ser evitada para se
minimizar possibilidade de inconsistências.
CONTROLE DE ACESSO: Verificação automática do tipo de acesso pedido por cada usuário. Os níveis
de segurança são estabelecidos para cada usuário independentemente, de acordo com suas necessidades.A
identificação de cada usuário, por parte do SGBD, é feita pelo nome e senha cadastrados.
CONTROLE DE TRANSAÇÃO: Transação é o conjunto de operações que devem ser executadas comple-
tamente. São normalmente usadas em situações críticas (atualizações ou inclusões) de longa duração que
podem afetar a consistência do BD. Exemplo: bug milênio, corte dos 3 zeros, aumento geral dos produtos,
etc. O SGBD deve utilizar mecanismos internos para que nenhuma falha ocorra durante a execução da
transação.
INDENPENDÊNCIA DE DADOS: A descrição física dos arquivos é mantida internamente pelo SGBD e é
de suainteira responsabilidade e exclusividade.Programas aplicativos não dispõem da descrição física esim
de uma descriçãoexterna.Alterações nos arquivos podem não afetar os programas aplicativos.
INDEXAÇÃO AUTOMÁTICA: Com a indicação explícita dos atributos queserão mais utilizados em con-
sultas,o SGBD cria os arquivos de indexação que tornarão mais rápidas as pesquisas. A estrutura de inde-
xação e de organização dos arquivos de dados é próprio decada SGBD e normalmente não é de domínio
dos usuários comuns.
É um produto caro;
O SGBD é a ferramenta por excelência para promover a integração dos diversos componentes de um sistema
de software;
CAPÍTULO 1. INTRODUÇÃO 8
Concentram o maior potencial para promover aceso compartilhado de informação, sem bloquear desneces-
sariamente o acesso compartilhado;
retiram dos programas aplicativos muita da complexidade de gerenciamento de estruturas de acesso aos
dados;
Linguagem de Definição de Dados (DDL): Reponsável por criar e manipular os “objetos” de armazena-
mento de dados no SGBD.
Linguagem de Controle dos Dados (DCL): Responsável por permitir o acesso de usuários ao SGBD.
Os aplicativos são escritos em uma linguagem de programação, que pode ser: DELPHI, VISUAL BASIC, CO-
BOL, C, PASCAL, ETC. A SQL é utilizada de forma embutida nestas linguagens.
A linguagem SQL engloba numa única linguagem todos os recursos necessários para a manipulação da Base de
Dados.
Nível Interno ou Físico: é o mais próximo do meio de armazenamento físico, ou seja, é aquele que se ocupa
do modo como os dados são fisicamente armazenados.
Nível Conceitual ou Lógico: Descreve quais dados estão armazenados no banco de dados e quais os inter-
relacionamentos entre eles. Este nível é utilizado pelos administradores.
Nível externo: é o mais próximo dos usuários, ou seja, é aquele que se ocupa do modo como os dados são
vistos por usuários individuais.
No nível conceitual: O banco de dados contém informações relativas a um tipo de entidade chamada EM-
PREGADO. Cada empregado contém um NÚMERO_EMPREGADO, um NÚMERO_DEPARTAMENTO
e um SALÁRIO.
No nível interno: Os empregados são representados por um tipo de registro armazenado, denominado
EMP_ARMAZENADO, com 20 bytes de comprimento. Contém 4 campos: um prefixo de 6 bytes mais 3
campos de informação de empregado. Além disso os registros são indexados sobre o campo EMP.
No nível externo: O usuário SECRETÁRIA tem uma visão na qual cada empregado tem 2 campos: Nome
e Salário. Já o usuário CONTADOR tem uma visão que cada empregado tem os campos Nome e Salário.
CAPÍTULO 1. INTRODUÇÃO 9
VISAO 1 VISAO 2
S Esquema Conceitual
G
B
D Esquena Fisico
1.5 Exercícios
1. Resolver em grupo as questões 1.2, 1.4, 1.7, 1.8, 1.9, 1.10, 1.17 e 1.23 do capítulo 1 da bibliografia 2.
Atenção: Este capítulo encontra-se no Xerox. 14 páginas.
1.6 Bibliografia
[1] Traina Jr, Caetano, Modelagem de Dados, Apostila, ICMC-USP.
[2] Kroenke, David M., Banco de Dados:Fundamentos, Projeto e Implementação, Editora LTC, 6 ed, Capítulo
1, Rio de Janeiro, 1999
[3] Date, C. J., Introdução a Sistemas de Banco de Dados, Editora Campus, Ed. 7, Capítulo 2, Rio de Janeiro,
2000.
Capítulo 2
O Modelo Entidade-Relacionamento
Este capítulo descreve e ilustra o uso do Modelo Entidade-Relacionamento (MER), que foi apresentado por
Peter Cher em 1976.
Hoje não existe um padrão único de modelo E-R aceito universamente; em vez disto, há um conjunto de conceitos
dos quais se origina a maioria das variantes do E-R.
No MER, os elementos que o compõe são representados graficamente através da ferramenta denominada Dia-
grama Entidade - Relacionamento (DER).
2.1 Entidades
Define-se entidade como aquele objeto que existe no mundo real com uma identificação distinta e com um
significado próprio.
Se alguma “coisa” , existente no negócio nos proporciona algum interesse em mantermos dados (informaçòes
armazenadas sobre ele), ista a caracteriza como uma Entidade do Negócio.
O FUNCIONÁRIO João;
O VEICULO Corsa;
A ALUNA Maria;
O CLIENTE Pedro;
O PRODUTO A323....
Entidades de um mesmo tipo são agrupadas em Classes de Entidade. Assim, a classe de entidades FUNCI-
ONÁRIOS é o conjunto de todas as instâncias de funcionários. Neste texto, classes de entidades estão
impressas em letra maiúscula.
A representação gráfica de uma entidade no MER se realiza através de um retângulo, com o nome desta entidade
em seu interior, como mostra a figura 2.1.
10
CAPÍTULO 2. O MODELO ENTIDADE-RELACIONAMENTO 11
2.2 Atributos
Toda entidade possui propriedade que são descritas por Atributos. No MER supõe que todas as instâncias de
uma dada classe de entidade possuem os mesmos atributos.
número de mátricula
nome
data da admissão
No DER os atributos PODEM ser representados por um circulo em torno de seu nome, como mostra a figura
2.2.
FUNCIONARIO
Este atributo tem a função de atuar como identificador único das instâncias da entidade e é denominado de
CHAVE PRIMÁRIA.
Então, como a chave primária identifica uma instância da entidade, ela tem duas restrições importantes:
Não se repete;
Um VALOR NULO é um valor que não tem significado algum para o mundo real, somente para o conceitual.
No DER, um atributo chave primária é representa por um traço abaixo de seu nome, como mostra a figura 2.3.
ALUNO
Chave
RA Primaria
Data_Nasc
Nome
Chaves candidatas: chaves com unicidade em uma relação: Ex: CIC, RG, título eleitoral. Todos os atributos
que conseguem identificar uma Relação.
Chave secundária: chave sem unicidade em uma relação. Ex: idade, sexo,endereço.
Clientes
RG Telefone
Nome
RG Nome
11 Pedro
16 Afonso
RG_Cliente Telefone
16 442
16 3244
11 1231
Atributo Composto
Sala
Numero Dimensao
codigo
data_nasc FUNCIONARIO
idade qtde_de_funcion
Dizer que uma Entidade é fraca, significa dizer:QUE NÃO INTERESSA MANTER NA BASE OS DADOS
DE UMA ENTIDADE SE ELA NÃO ESTIVER RELACIONADA COM OUTRA ENTIDADE.
Este tipo de Entidade é denominada Entidade Fraca. Exemplo: Dependente é um tipo de Entidade Fraca pois
existe somente se existir o funcionário.
2.4 Relacionamentos
Nenhuma informação armazenada no Banco de Dados existe isoladamente.
Todos os elementos pertencentes ao mundo real modelado de alguma forma está associado a outros elementos.
Normalmente essas associações representam ações físicas ou alguma forma de dependência entre os elementos
envolvidos.
Relacionamento: é a associação entre Entidades.
No DER, os relacionamentos são representados conforme mostra a figura2.8.
CAPÍTULO 2. O MODELO ENTIDADE-RELACIONAMENTO 15
FUNCIONARIO PRODUTOS
DEPENDENTE LOTES
Entidades Fracas
Figura 2.7: Entidade Fraca
Agora que já temos as definições de Entidades e de Relacionamento, vamos aprender como encontrá-los em
um problema:
Cliente faz emprestimos
Pode-se dizer que os SUBSTANTIVOS são as Entidades e os VERBOS são os Relacioanamentos. Sendo assim
tem-se:
Entidades:Cliente e Emprestimo.
Relacionamento: Faz
Relacionamento
RA Codigo
Nota
Nome Nome
1 1
EMENTA Possui DISCIPLINA
N 1
TURMA Pertence CURSO
1. Escolha uma Entidade, por exemplo ALUNO, e pergunte:Para cada Aluno, quantos pares Professor-Disciplina
eu tenho.
2. Coloque a resposta na Entidade ALUNO. Neste caso N. Isto é, um Professor lecionando uma Disciplina
pode ter vários Alunos.
3. Escolhendo a Entidade PROFESSOR. Pergunta-se: Para cada Professor, quantos pares Aluno-Disciplina
eu tenho.
4. Coloque a resposta na Entidade PROFESSOR. Neste caso 1. Isto é, um Aluno não pode ter em uma certa
Disciplina mais do que um Professor.
5. Escolhendo a Entidade DISCIPLINA. Pergunta-se: Para cada Disciplina, quantos pares Aluno-Professor
eu tenho.
6. Coloque a resposta na Entidade Disciplina. Neste caso N. Isto é, um Professor pode dar a um certo Aluno
mais do que uma Disciplina.
CAPÍTULO 2. O MODELO ENTIDADE-RELACIONAMENTO 18
DISCIPLINA
CARTAO_MAGNETICO
2.4.5 Auto-Relacionamentos
Uma instância ou conjunto de instância de uma mesma Entidade, pode se relacionar com outra(s) instância(s) da
mesma Entidade.
DISCIPLINA Pre-Requisito
M
N
FUNCIONARIO Gerencia
Suponha que um CLIENTE pode ser uma única pessoa individual, uma associação ou uma coporação e que
serão armazenados dados adicionais dependendo do tipo.
1. Alocar todos estes atributos na entidade CLIENTE. Neste caso, alguns dos atributos não são aplicáveis a
todas as entidades.
2. Definir 3 entidades para cada um dos tipos. As quais seriam: CLIENTE-INDIVIDUAL, CLIENTE-
ASSOCIACAO e CLIENTE-CORPORACAO.
Outros exemplos:
– SECRETARIA:cursos, linguas
– ENGENHEIRO:crea, especialidade
VEICULO:chassis, marca
– UTILITARIO:capacidade_lugares
– TRANSPORTE:Tara
A figura 2.15 demonstra esta situação do cliente. Uma vez que a entidade CLIENTE é uma entidade genérica, ela é
denominada de GENERALIZAÇÃO (ou entidade de nível superior) e as entidades INDIVIDUAL, ASSOCIADO
e CORPORAÇÃO são denominadas ESPECIALIZAÇÃO (ou entidade de nível inferior).
CAPÍTULO 2. O MODELO ENTIDADE-RELACIONAMENTO 20
NumeroCliente
CLIENTE
NomeCliente
QuantiaDevida
idade cpf
Pessoa nome
nrprof titulo
ra Funcionario
Aluno Professor
curso funcao
nrfunc
Leciona
Exclusão Mútua/Sobrepostos: Onde EXCLUSÃO MÚTUA exige que uma entidade de nível superior
pode pertencer a apenas um conjunto de nível entidades de nível inferior. No exemplo da figura 2.15 uma
cliente só pode ser ou INDIVIDUAL ou ASSOCIADO ou CORPORATIVO. Já SOBREPOSTOS, uma
entidade superior pode pertencer a mais de um conjunto de entidades de nível inferior. O que é o caso da
figura 2.17, onde um ALUNO pode ser um FUNCIONARIO da escola.
CAPÍTULO 2. O MODELO ENTIDADE-RELACIONAMENTO 21
idade cpf
Pessoa nome
nrprof titulo
ra
Aluno Professor
curso Leciona
semestre area
Total/Parcial: Onde TOTAL, significa que cada entidade superior deve pertencer a um conjunto de entida-
des de nível inferiores. Já PARCIAL, significa que uma entidade superior pode pertencer a a um conjunto
de entidades de nível inferior.
As possíveis combinações são:
Parcial Exclusiva: Por exemplo, Um departamento ministra disciplinas para cursos de graduação e pós-
graduação (deve haver estas entidades). Além disso pode ministrar disciplinas para treinamento sob solici-
tação de empresas (não precisa haver a entidade empresa).
Graduac pos-grad
Parcial Sobreponível: Um departamento contrata pessoal para desempenhar suas funções, tais como vi-
gias, secretários, bliblitecários, etc.
pessoa
Um funcionário pode acumular
mais de uma função
Além de Vigia, secret. e
bibliot. existem outras
funções
vigia secretario
bibliotecário
Total Exclusiva: Um departamento ministra disciplinas para cursos de grad.e pos-grad. Além disso pode
ministrar disciplinas de especialização para treinamento sob solicitação de empresas.
CAPÍTULO 2. O MODELO ENTIDADE-RELACIONAMENTO 22
Aluno
Um aluno pode cursar mais de um
curso ao mesmo tempo
Só existem alunos de grad.,
pós ou de especialização.
2.5.2 Agregação
Uma limitação do modelo E-R é que não é possivel expressar relacionamentos entre relacionamentos. Além
Para ilustrar esta necessidade, considere um banco de dados descrevendo informações sobre Funcionários que
trabalham em um determinado Projeto e utilizam uma série de diferentes Máquinas em seus trabalhos.
Usando o modelo básico de construção E-R, obtemos o diagrama E-R da figura 2.22.
Horas
Id M Numero
N
Nome Usa Descricao
Id
MAQUINA
Descricao
No exemplo da figura 2.22, o relacionamento Usa deve empregar informações já existentes previamente no con-
junto de relacionamento Trabalho. Além disso, há pares Funcionário-Trabalho que não usam nenhuma
máquina, isto é, não estão em Usa.
CAPÍTULO 2. O MODELO ENTIDADE-RELACIONAMENTO 23
A solução é usar a Agregação. A agregação é uma abstração por meio da qual relacionamentos são tratados
como entidades de nível superior. Assim, para nosso exemplo, o relacionamento Trabalho e as entidades
FUNCIONÁRIO e PROJETO, torna-se-ão uma única entidade.
Isto permite que relacionar o conjunto FUNCIONARIO, TRABALHO e PROJETO com a entidade MÁQUINA.
Nome Descricao
Id Numero
Horas
Usa
Id
M
Descricao
MAQUINA
Agora com a gregação, significa dizer que o conjunto Funcionário-Projeto nem sempre utilizam máquinas.
Agora que já temos a noção do uso da Agregação vamos analisar os casos em que se deve usá-la:
2.6 Exercícios
2.6.1 Primeira Lista
1 - Obtenha o modelo Entidade-Relacionamento dos seguinte enunciados. Coloque os atributos necessários
das entidades. Coloque pelo menos 3 atributos em cada entidade.
1. Uma Empresa possui funcionários. Um funcionário trabalha em uma Empresa
3. Deseja-se fazer um banco de dados para uma rede de hotelaria. Um hotel possui quartos. Cada quarto
pertence a apenas um hotel.
CAPÍTULO 2. O MODELO ENTIDADE-RELACIONAMENTO 24
4. Um soldado, que possui as características nome, Registro Militar (RM), data de nascimento, possui armas.
Uma arma, que possui as características de série, registro e calibre, é de um soldado. Uma arma é limpa
por vários soldados. Um soldado limpa várias armas.
6. Um médico trata de pacientes. Do médico deseja-se saber CRM, nome e suas especialições. Um paciente,
no qual há a necessidade de sabermos seu nome, endereço e idade, é tratado por vários médico. Um paciente
realiza vários tipos de exames. Um tipo de exame, destes há a necessidade de guardar seu número, data e
descrição, é feito por vários paciente.
7. O aluno cursa disciplinas lecionadas por um professor cada uma. Para cada aluno deve-se manter as in-
formações de ra, nome e seus telefones. Uma disciplina é cursada por vários alunos e é lecionada por um
professor. Das disciplinas deseja-se saber codigo, número de créditos e descrição. Os professores lecionam
diversas disciplinas cada um e em cada disciplina possui diversos alunos. Dos professores deseja-se saber
seu código, nome e telefone.
8. Um médico trata de pacientes. Do médico deseja-se saber CRM, nome e suas especialições. O médico pede
exames para vários pacientes. Um paciente, no qual há a necessidade de sabermos seu nome, endereço e
idade, é tratado por vários médico. Um paciente realiza vários tipos de exames pedidos pelos médicos. Um
tipo de exame, destes há a necessidade de guardar seu número, data e descrição, é feito por vários paciente
a pedido dos médicos.
9. Uma empresa possui funcionários. Os funcionários podem ser engenheiros, secretárias ou técnicos.
10. Uma empresa fabrica automóveis. Os automóveis podem ser carros de passeio, caminhões ou ônibus.
2. Um Hotel deseja montar um banco de dados de Hospedagem. Do cliente que hospeda-se no hotel, e
desejado saber seu nome, RG, Endereço, telefone e o quarto que esta hospedado. Dos quartos, deseja-se
saber seu numero, andar, a quantidade de leitos e os clientes que dormiram no quarto(um quarto pode
abrigar mais de um cliente). Deseja-se saber também a data de hospedagem e o que o cliente consumiu.
CAPÍTULO 2. O MODELO ENTIDADE-RELACIONAMENTO 25
3. Uma Transportadora quer automatizar seu controle de transporte. Ela deseja ter as seguintes informações
de seus caminhões: Marca, modelo, ano, capacidade de transporte e a data em que um motorista viajou
com o caminhão(mais de um motorista pode dirigir um caminhão). Do motorista deseja-se saber Nome,
RG, Idade, Endereço e o caminhão com o qual já viajou. Um caminhão pode transportar diversos produtos,
destes deseja-se saber nome, marca, fabricante e data de transporte( um tipo de produto pode viajar em
mais de um caminhão).
4. A Federação Paulista de Futebol deseja elaborar um cadastro geral para o Campeonato Paulista de 1999.
Para cada time é desejado armazenar seu nome, sua cidade, seu número de cadastro na FPF, a situação
do time no campeonato, o estádio que o time possui (todo time possui um estádio), os jogos que o time
participa (todos os times participam de jogos) bem como, o número de gols que o time marcou na partida,
as diversas torcidas organizadas que o time possui (um time não é obrigado a possuir torcida organizada),
os diversos jogadores que compõem o elenco do time (todo time possui jogadores no elenco) e os diversos
jogadores cujos passes pertencem ao time (um time não é obrigado a possuir passes de jogadores). Para cada
jogo é desejado armazenar seu número, a data, horário, os diversos membro da comissão de arbitragem, o
estádio no qual o jogo é realizado (todo jogo é realizado em estádio), os times que participam do jogo (todo
jogo é realizado por times), as diversas torcidas organizadas que frequentaram o jogo (nem todo jogo deve
frequentado por torcidas organizadas) e os diversos jogadores que participaram ativamente do jogo, sendo
desejado armazenar o número de gols, o número de cartões amarelos e o número de cartôes vermelhos que
o jogador recebeu no jogo (todo jogo é disputado por jogadores). Para cada estádio é desejado armazenar
seu nome, localização, o número de torcedores, os diversos jogos que o estádio abriga (um estádio não é
obrigado a abrigar jogos) e o time proprietário do estádio (um estádio pode ser público). Para cada torcida
organizada é desejado armazenar seu número de cadastro na FPF, seu nome, o nome de seu presidente,
sua sede, o número de associados, os diversos jogos que a torcida frequenta (uma torcida não é obrigada a
frequentar jogos) e o time para o qual a torcida torce (toda torcida torce para um time). Para cada jogador
é desejado armazenar o número de cadastro do jogador na FPF, seu nome, apelido, idade, o time ao qual
o passe do jogador pertence (o jogador pode ter passe livre), o time para o qual o jogador atua (o jogador
pode estar cadastrado na FPF e não atuar em um time) e os jogos dos quais o jogador participa ativamente
(um jogador não é obrigado a participar de jogos ativamente).
5. Uma universidade deseja elaborar um cadastro acadêmico, envolvendo seus alunos, cursos e disciplinas.
Para cada faculdade é desejado armazenar seu nome, seu número, os diversos departamentos que a facul-
dade possui (toda faculdade é dividida em departamentos) e os diversos professores que a faculdade possui
(toda faculdade possui professores). Para cada departamento é necessário armazenar seu número, sendo que
para cada faculdade, a numeração de seus departamentos vai de 1 até N, seu nome, o professor que chefia
este departamento (todo departamento é chefiado por um professor), a faculdade à qual o departamento
pertence (todo departamento pertence a uma faculdade), as diversas disciplinas que o departamento oferece
(nem todo departamento oferece. Para cada curso é desejado armazenar seu código, seu nome, os diversos
períodos nos quais o curso é oferecido, o departamento ao qual o curso pertence (todo curso pertence a
um departamento), os diversos alunos que frequentam o curso (se não hover alunos frequentando o curso
o mesmo não será cancelado) e as diversas disciplinas que são oferecidas pelo curso (todo curso oferece
disciplinas). Para cada disciplina é desejado armazenar seu nome, código, carga horária, o departamento
pelo qual a mesma é oferecida (toda disciplinas é oferecida por um departamento), os diversos cursos para
os quais a disciplina é oferecida (mesmo que uma disciplina não seja oferecida por um curso ela não será
cancelada), os diversos professores que lecionam a disciplina (toda disciplina é lecionada por professores)
e os diversos alunos que frequentam a disciplina, sendo necessário armazenar para cada aluno a nota 1 N1,
nota 2 N2, as faltas F, a média final do aluno ((N1 + N2)/2) e a situação do aluno (média final > 7) e F
<= 25% aluno é aprovado (se não houver alunos frequentando a disciplina, a mesma não será cancelada).
Para cada aluno é desejado armazenar seu nome, ra, seus endereços completos (o da cidade onde reside e
o da cidade da universidade) com rua, número, bairro, cep, cidade, seus telefones (o da cidade onde reside
e o da cidade da universidade) com DDD + número, o curso que o aluno frequenta (todo aluno frequenta
CAPÍTULO 2. O MODELO ENTIDADE-RELACIONAMENTO 26
um curso, não podendo frequentar mais que um), as diversas disciplinas que o aluno frequenta (todo aluno
frequenta disciplina) e o professor que orienta o aluno (nem todo aluno é orientado por professor). Para
cada professor é desejado armazenar seu número funcional, seu nome, a faculdade à qual ele pertence (todo
professor pertence a uma faculdade), o departamento o qual o professor chefia (um professor não é obrigado
a chefiar um departamento) e as diversas disciplinas que o professor leciona (um professor não é obrigado
a lecionar disciplinas).
6. Um hospital deseja elaborar um cadastro para controlar as atividades de suas clínicas. Para cada clínica
é desejado armazenar seu nome, seu código, sua especialidade e os diversos médicos que a clínica possui
(toda clínica possui médicos). Para cada médico é desejado armazenar seu nome, número do CRM, sua
especialidade, as diversas consultas que o médico faz (o médico não é obrigado a realizar consultas), as
diversas cirurgias que o médico faz (um médico não é obrigado a realizar cirurgias) e a clínica ao qual o
médico pertence. Para cada consulta é desejado armazenar seu número, sua data, horário, o médico que
realizou a consulta (toda consulta é realizada por um médico) e o paciente que foi consultado (toda consulta
é feita em um paciente). Para cada cirurgia é necessário armazenar seu número, a data , o horário, os
diversos médicos que realizaram a cirurgia (toda cirurgia é realizada por médicos), as diversas enfermeiras
que auxiliaram na cirurgia (toda cirurgia é auxiliada por enfermeiras) e o paciente no qual é realizada
a cirurgia (toda cirurgia é realizada em um paciente). Para cada paciente é desejado armazenar seu cod,
nome, rg, dt de nascimento, endereço completo (rua, número, bairro, cep, cidade), as diversas consultas que
o paciente realizou (um paciente não é obrigado a realizar consultas), as cirurgias que o paciente realizou
(um paciente não é obrigado a realizar cirurgias) e as diversas enfermeiras que atenderam o paciente assim
como a data e o horário do atendimento (nem todo paciente é atendido por enfermeira). Caso o paciente seja
menor de idade e não possua RG, então será necessário armazenar o RG do responsável pelo mesmo. Para
cada enfermeira é desejado armazenar seu número, seu nome, sua especialidade, as diversas cirurgias que
a enfermeira auxiliou (nem toda enfermeira auxília em cirurgia) e os diversos pacientes que a enfermeira
atendeu (toda enfermeira atende paciente).
7. Uma empresa deseja elaborar um sistema para controlar suas vendas. Para cada vendedor é necessário
armazenar seu nome, seu número, endereço, os diversos clientes que o vendedor atende (todo vendedor
atende clientes) e as diversas notas fiscais que o vendedor emite (todo vendedor emite notas fiscais). Para
cada cliente é necessário armazenar seu código, nome fantasia, nome da empresa, cgc, os diversos vende-
dores que atenderam este cliente (todo cliente é atendido por vendedor) e todos os pedidos de compra que
os clientes emitiram (nem todo cliente cadastrado emite pedido de compra). Para cada pedido de compra é
desejado armazenar o seu número, a data de emissão, o valor total do pedido de compra, o cliente que emi-
tiu o pedido de compra (todo pedido de compra é emitido por um cliente), as notas fiscais geradas para este
pedido de compra (todo pedido de compra gera notas fiscais) e os diversos itens de pedido de compra (todo
pedido de compra possui itens de pedido de compra). Cada item de pedido de compra é identificado por seu
número que vai de 1..20 para cada pedido de compra, a quantidade, o valor do item, o pedido de compra
ao qual o item pertence (todo item pertence a um pedido de compra) e o produto que o item descreve (todo
item de pedido descreve um produto). Para cada nota fiscal é necessário armazenar seu número, sua série
(a numeração varia pela série), a data de emissão, o valor total da nota, o vendedor que emitiu a nota (toda
nota é emitida por um vendedor), o pedido de compra que gerou a nota (toda nota é gerada por um pedido
de compra) e os diversos itens de nota que a mesma contém (toda nota contém itens de nota). Para cada
item de nota é necessário armazenar seu número que vai de 1..20 para cada nota fiscal, a quantidade de
produto, o valor total do item, a nota fiscal ao qual o item pertence (todo item pertence a uma nota fiscal e
o produto que o item descreve (todo item de nota fiscal descreve um produto). Cada produto é descrito por
seu código, descrição, valor unitário, os diversos itens de pedido de compra nos quais o mesmo é citado
(um produto não é obrigado a estar citado em um item de pedido de compra) e todos os itens de nota fiscal
nos quais o produto é descrito (nem todo produto deve ser descrito em item de nota fiscal).
CAPÍTULO 2. O MODELO ENTIDADE-RELACIONAMENTO 27
2.7 Bibliografia
[1] - Machado, F.; Mauricio, A. Projeto de Banco de Dados, Editora. Érica, 5 ed., Capítulo 4.
[2] - Korth, H.; Silberschatz, A. Sistema de Banco de Dados. Editora Makron Books, 3 ed., 1999
Capítulo 3
O Modelo Relacional
3.1 Introdução
Criado por Edgar Codd, nos anos 70, começou a ser realmente utilizado nas empresas a partir de 1987, através
do SGBDs. A abordagem relacional está baseada no princípio de que as informações em uma base de dados
podem ser consideradas como relações matemáticas e que estão representadas de maneira uniforme, através do
uso de tabelas, ou falando de uma forma mais direta, um arquivo. Porém, um arquivo é mais restrito que uma
tabela. Toda tabela pode ser considerada um arquivo, porém, nem todo arquivo pode ser considerado uma tabela.
Este princípio coloca os dados (entidades e relacionamentos) dirigidos para estruturas mais simples de armazenar
dados, que são as tabelas.
O conceito principal vem da teoria dos conjuntos (álgebra relacional) atrelado à idéia de que não é relevante
ao usuário saber onde os dados estão nem como os dados estão (transparência). Os usuários manipulam objetos
dispostos em linhas e colunas das tabelas, como mostra a figura a seguir. O usuário pode lidar com estes objetos,
conta com um conjunto de operadores e funções de alto nível, constantes na álgebra relacional.
Terminologia do modelo relacional:
28
CAPÍTULO 3. O MODELO RELACIONAL 29
Relacao
Atributo
3.2 Domínios
O Domínio de um atributo é, em geral, um tipo de dado que especifica o que o atributo pode receber.
Exemplo:
Nomes de alunos
Códigos de Disciplinas
3.3 Relações
Dado o seguinte esquema de uma Relação de Alunos:
Como um esquema de uma Relação R é definido como um cojunto, não existe a idéia de ordem. Assim, desde
que se indique que cada valor Vi corresponde a um atributo Ai, a ordem dos atributos em esquemas de
relações é apenas uma questão de disposição física.
Importante: A instância de uma relação em um determinado momento, é toda a relação no momento, ou seja,
uma instância de Alunos são todos os alunos cadastrados no momento. Se amanhã acrescentar mais
alunos, a instância será todos os alunos antigos mais os novos
3.4.2 Chave
CHAVE é uma Superchave da qual não se pode retirar nenhum atributo e ainda preservar-se a propriedade de
identificação unívoca.
Exemplo:
Em geral, adota-se a convenção de que os atributos chaves são grifados. Se mais de um atributo participa de uma
mesma chave, grifam-se esses atributos todos com o mesmo número de traços.
Exemplo:
Quando existe mais de uma, grifa-se cada chave candidata com um número diferente de traços.
Exemplo
Restrição de Integridade da Chave: Uma chave candidata qualquer não pode ter o mesmo valor em duas
tuplas distintas da mesma relação.
Restrição de Integridade da Entidade:A chave primária de qualquer relação não pode ser nula em ne-
nhuma tupla dessa relação.
com outro conjunto de domínio de atributos D R2 que é a Chave Primária da relação R2.
Exemplo:
Nao existe uma representação formal para chave estrangeira. Normalmente, identifica-se com um arco direto
de cada chave estrangeira à relação que ela faz referência. Para maior clareza, a seta deve apontar para a chave
primária da relação referida (figura 3.2).
Uma outra maneira é colocar a sigla FK (Foreign Key) na frente de cada campo. Neste caso se os nomes dos
atributos não forem os mesmos (chave primária com chave estrangeira) fica difícil de identificar de qual relação
o atributo é chave estrangeira.
CAPÍTULO 3. O MODELO RELACIONAL 32
departamento={numDep, descricao, c
Dom(aluno.RA)=Dom(disciplina.RA_Monitor)
Relações Válidas: Apesar de RA_Monitor ser chave estrangeira, ela não é Chave Candidata.
====================================================================
Dom(aluno.RA)=Dom(disciplina.RA_Monitor)
Relações Inválidas: Valor 222 para RA_Monitor inexistente na tabela Aluno
Integridade Referencial Violada
====================================================================
CAPÍTULO 3. O MODELO RELACIONAL 33
Dom(aluno.RA)=Dom(disciplina.RA_Monitor)
Relações Inválidas: Valor NULL para o atributo RA na relação Aluno e existem duas chaves primá-
rias com o mesmo valor.
Integridades de Entidade e de Chave Violadas Respectivamentes
3.6 Bibliografia
[1] - Machado, F.; Mauricio, A. Projeto de Banco de Dados, Editora. Érica, 5 ed., Capítulo 13.
4.1 Introdução
O MER é um Modelo Conceitual: Pode ser usado para especificar conceitualmente a estrutura de dados de uma
aplicação.
O Modelo Relacional é um Modelo Lógico (porém bem próximo ao Físico): É uma descrição de um banco de
dados no nível de abstração visto pelo usuário do SGBD. Assim, o modelo lógico é dependente do tipo
particular de SGBD que está sendo usado.
O Mapeamento permite que se traduzam os esquemas concebidos com um modelo de conteúdo semântico mais
alto para uma implementação utilizando um modelo lógico (ou físico).
O Mapeamento do MER para o Mod. Relacional (MRel) é um procedimento executado em 6 passos consecutivos
apresentados a seguir.
34
CAPÍTULO 4. MAPEAMENTO DO MODELO ER PARA MODELO RELACIONAL 35
Nome
Aluno
RA
Aluno={Nome,RA}
N 1
Dependente possui Funcionario
rg codigo
nome
nome
idade telefone
1 1
Ementa possui Disciplina
nome Sigla
Data Aprov
nome
Num. de Creditos
codigo Sigla
Horario
nome nome
Num. de Creditos
professor={codigo, nome}
disciplina={sigla, nome, num_creditos, horario, codigo_prof}
M N
Aluno matriculado Disciplina
ra Sigla
nome Nota
nome
Num. de Creditos
M N
Aluno monitora Disciplina
ra P
Sigla
nome nome
professor Num. de Creditos
codigo
nome
4.8 Exemplo 1
A figura 4.7 demonstra um exemplo de mapeamento de um DER completo para o modelo Relacional.
CAPÍTULO 4. MAPEAMENTO DO MODELO ER PARA MODELO RELACIONAL 38
1 N Turma
Professor ministra
cod_prof 1
N cod_turma
nome numero_alunos
N M
Monitora composto por
Aluno M N
matricula
1
ra Disciplina
nome
sigla
num_credito
nome
professor = {cod_prof, nome} | disciplina = {sigla, nome, n_credito} | aluno = {ra, nome}
turma = {cod_turma, sigla, n_aluno, cod_prof} | monitora = {cod_prof, ra, cod_turma, sigla}
num_funcional
rua
Secretaria endereco
numero
telefone
4.10 Generalização
A figura 4.9 mostra o mapeamento DER-Relacional de uma Generalização/Especialização.
num_func
Funcionario nome
Secretaria Engenheiro
idioma crea
curso
4.11 Agregação
A figura 4.10 mostra o mapeamento DER-Relacional de uma Agregação.
CAPÍTULO 4. MAPEAMENTO DO MODELO ER PARA MODELO RELACIONAL 40
valor num_func
num_proj nome
M N
Projeto participa Funcionario
usa
N
fabricante
Maquina
cod_maq
4.12 Exemplo 2
valor num_func
num_proj nome
M N
Projeto participa Funcionario
M
1
Tecnico Engenheiro coordena
usa
N
N formacao crea
fabricante Atividade
Maquina
cod_maq
cod_atividade duracao
4.14 Bibliografia
[1] - Traina Jr, Caetano Apostila de Modelagem de Dados, USP-São Carlos.
[2] - Setzer, Valdemar Banco de Dados:Conceitos, Modelos, Gerenciadores, Projeto Lógico e Físico, Editora Edgard
Blucher Ltda, 3 ed.
[3] - Machado, F.; Mauricio, A. Projeto de Banco de Dados, Editora Érica, 5 ed., Capítulo 13.
Capítulo 5
Normalização de Relações
5.1 Introdução
O controle de Consistência pode ser feito:
Pelo SGBD
Pelo Aplicativo
O controle obtido pela própria construção do sistema é , em geral, a melhor, pois não incorre em perda de
eficiência durante a execução.
O controle através da própria construção do sistema é obtido no Modelo Relacional construindo-se as relações
segundo regras que garantem a manutenção de certas propriedades.
As relações que atendem a um determinado conjunto de regras diz-se estarem em uma determinada Forma
Normal.
Normalizar demais diminui a eficiência dos aplicativos e de menos abre flacos para inconsistên-
cia.
Antes de entrarmos em detalhes sobre as formas normais, vamos olhar alguns problamas de relações mal norma-
lizadas
42
CAPÍTULO 5. NORMALIZAÇÃO DE RELAÇÕES 43
Suponha a tupla do aluno José, bem neste caso, perdemos, além do nome do aluno, as informações referentes a
atividade Musculação, bem como seu valor.
Outro problema ocorre quando a academia implanta um novo curso e não podemos inseri-lo até que um aluno
tenha a disposição de faze-lo.
Agora, note que Judô, está grafado de forma errada na tupla do aluno Manoel. Se uma busca for feita por Judô,
só irá aparecer 1 aluno e não 2 alunos
Para o modelo relacional, a Forma Normal (FN) mais importânte é a chamada 1 forma normal (1FN).
Definição da 1FN
Uma relação está na 1FN quando todos os seus atributos são Atômicos e Monovalorados.
Um atributo monovalorado é aquele que possui somente um valor (não uma lista).
A relação Cliente não está na 1FN, porque Nome e Endereco são atributos compostos e telefone é um atributo
multivalorado.
Note que Telefone foi para uma nova relação composta pela chave primária de cliente mais o telefone (decom-
posto). Todos os atributos da relação Cliente_Telefone fazem parte da chave primária.
Outros exemplos
CAPÍTULO 5. NORMALIZAÇÃO DE RELAÇÕES 44
De forma geral, para determinar a chave primária de uma tabela originada pela regra da 1FN deve-se proceder
como segue:
1. Tomar como parte da chave primária da tabela na 1FN a chave primária da tabela Original.
2. Verificar se esta chave primária é suficiente para identificar as linhas da tabela na 1FN.
(a) Caso seja suficiente, a chave primária da tabela na 1FN é a mesma que a da tabela Original.
(b) Caso contrário, deve-se determinar quais as demais colunas que são necessárias para identificar as
linhas da tabela na 1FN, compondo assim a chave primária na 1FN.
Se o valor de um conjunto de atributos A permite descobrir o valor de um outro conjunto B, dizemos que A
determina funcionalmente B ou que B depende de A. Denotamos esta relaçã da seguinte forma:
A -> B
Exemplo:
Importante:
As dependências Funcionais devem ser identificadas pelo projetista do sistema sendo desenvol-
vido, NÃO EXISTE MANEIRA DE INFERIR AS DEPENDÊNCIAS A PARTIR DA DESCRIÇÃO
DA BASE.
Definição da 2FN
Uma tabela encontra-se na segunda forma normal, quando, além de estar na 1FN, não contém
Dependências Funcionais Parciais, ou seja, todos atributos não chave devem depender funciona-
mente da chave primária composta.
Importante:
Pela demonstração das dependências percebemos que existem atributos que contém dependência parcial da
chave, neste caso, nome_aluno depende ra_aluno e carga_horar_discip depende cod_discip.
Isto caracteriza a violação da 2FN, visto que nesta regra não deve-se existir dependência parcial da chave.
2. Para cada chave que possua atributos dependentes, cria-se uma nova relação, neste caso Aluno e Disciplina.
Outros exemplos:
Diz-se que um atributo tem dependência transitiva quando depender de outro atributo que não é a chave primária
da relação. Observe o exemplo:
Perceba que o atributo chave primária cod_compra identifica os atributos cod_cliente e valor_compra e que o
atributo cod_cliente, que não é chave primária, identifica os atributos nome_cliente e tel_cliente. Então,
tanto nome_cliente como tel_cliente depende transitivamente de um atributo (neste caso cod_cliente) que
não é chave primária.
CAPÍTULO 5. NORMALIZAÇÃO DE RELAÇÕES 46
Definição da 3FN:
Uma Relação está na 3 Forma Normal quando estiver na 1 FN e não existir dependência transi-
tiva dos atributos.
Cria-se uma nova relação que contém esse grupo de atributos e inclui-se nela como chave os atributos dos
quais esse grupo depende diretamente.
Repetem-se esses passos até que todos os atributos restantes na relação original dependam diretamente de
toda sua chave.
Exemplos
Ao analisarmos esta relação, notamos que mesma causará problemas de inconsistência de dados. Bem, para
evitarmos futuros problemas, vamos aplicar as formas normais e corrigir erros na relação.
Temos:
Dom(cliente.cod_cliente) = Dom(nota_fiscal.cod_cliente)
Dom(nota_fiscal.num_nota) =Dom(nota_produto.num_nota)
Dom(produto.cod_produto) = Dom(nota_produto.cod_produto)
CAPÍTULO 5. NORMALIZAÇÃO DE RELAÇÕES 48
5.9 Exercícios
1. Identifique, nas relações abaixo, as dependências funcionais e se há violação de alguma forma normal (1, 2 e
3), se houver, normalize-as. Obs: Os campos que estão entre (parênteses) , indicam campos multivalorados.
2. Dê o conjunto de dependências funcionais para o esquema relacional R(A,B,C,D) com chave primária nos
atributos AB. Sabe-se que a relação está na 1FN mas não está na 2FN.
3. Defina a terceira forma normal. Dê um exemplo de uma relação em 2FN mas não em 3FN. Transforme a
relação em relação em 3FN.
Capítulo 6
Álgebra Relacional
6.1 Introdução
A álgebra relacional é uma linguagem de consulta procedural. Consiste em um conjunto de operações que usam
uma ou mais relações como entrada e produz uma nova relação.
Importante
Toda as operações da álgebra sobre uma relação produz uma outra relação. Mesmo que a relação
resultante seja vazia.
Seleção
Projeção
União
Diferença
Intesecção
Produto Cartesiano
Junção
Divisão
Antes de estudarmos cada uma destas operações, considere as instâncias das relações que compõe o banco de
dados:
49
CAPÍTULO 6. ÁLGEBRA RELACIONAL 50
Considere a consulta:
cod_agenc=”ag2” (emprestimo);
Podemos querer saber todas as contas que possuem saldo maior do que 400 escrevendo:
saldo>400(conta);
, <, , >,
.
Além disso, diversos predicados podem ser combinados em um predicado maior usando os conectivos AND ( )
e OR ( ).
Por exemplo, para encontrar os emprestim os maiores do que 500 e realizados na agência “ag2”.
Representada pela letra grega pi ( ), a operação projetar seleciona (projeta)atributos específicos de uma relação.
nome_cli(cliente);
nome_cli
Joao
Pedro
Marcos
Maria
gerente, nome_agenc(agencia);
gerente nome_agenc
Pedro Sao Jose
Manoel Botafogo
Dario Praiana
Pedro Bom Retiro
Suponha que desejemos saber o nome de todos os gerentes, sem saber suas agências:
gerente(agencia);
gerente
Pedro
Manoel
Dario
Note que apareceu apenas um gerente de nome Pedro. Isto se dá ao fato que que para a álgebra, uma relação é
um conjunto de elementos, e eu um conjunto não existem valores repedidos.
Considere a consulta no qual desejemos os nomes dos clientes que residem em São Paulo:
nome_cli
Pedro
Marcos
Ou senão o codigo da agência e o codigo do cliente cujo saldo da conta seja inferior ou igual a 400:
CAPÍTULO 6. ÁLGEBRA RELACIONAL 52
cod_agenc cod_cli
ag1 c1
ag3 c4
ag3 c3
IMPORTANTE
As operações de Projetar e Selecionar são consideradas unárias. Pois operam sobre apenas uma
única relação.
As operações estudadas a seguir devem operar sobre relações compatíveis em domínio, ou seja, devem possuir
o mesmo número de atributos e os atributos nas colunas correspondentes devem vir do mesmo domínio.
A união de duas relações é formada pela adição das tuplas de uma relação às tuplas de uma segunda relação, para
produzir uma terceira.
Como exemplo, queremos saber todos os clientes (cod_cli) que possuem contas ou qaue fizeram empréstimos na
agência “ag3”. Existe duas maneiras de realizar esta consulta:
Maneira 1:
R1 = cod_cli( cod_agenc=”ag3”(conta));
R2 = cod_cli( cod_agenc=”ag3”(emprestimo));
R3 = R1 R2;
Maneira 2:
cod_cli( cod_agenc=”ag3”(conta)) cod_cli( cod_agenc=”ag3”(emprestimo));
Resultado
cod_cli
c4
c1
c3
Esta operação produz atua sobre duas relação compatíveis em domínio e produz uma terceira contendo as tuplas
que aparecem simultaneamente nas duas relações. É representada pelo símbolo .
Consulta: Encontre os codigos dos cliente que possuem contas e que fizeram emprestimos.
CAPÍTULO 6. ÁLGEBRA RELACIONAL 53
R1 = cod_cli (conta);
R2 = cod_cli (emprestimo);
R3 = R1 R2;
cod_cli
c4
c2
c1
Considere que desejemos encontrar todos os clientes (cod_cli) que possuem contas mas não fizeram empresti-
mos:
R1= cod_cli(conta);
R2= cod_cli(emprestimo);
R3=R1-R2;
cod_cli
c3
O produto da relação A (tendo m tuplas) com a relação B (tendo n tuplas) é um relação contendo m vezes n
tuplas.
Consulta: Encontre o nome dos clientes e o número de suas respectivas contas bancárias que possuem saldo
maior do que 450:
R1= saldo>450(conta);
R2=cliente X R1;
CAPÍTULO 6. ÁLGEBRA RELACIONAL 54
nome_cli num_conta
c3 101
c2 215
num_conta( cliente.cod_cli = conta.cod_cli(R2));) em cima do produto entre as relações conta e R1. Além
do mais, um problema que ocorre no produto cartesiano é o consumo excessivo de memória. Imagine duas
relação onde uma contêm 3000 tuplas de 100 bytes cada e outra com 5000 tuplas de 200 bytes cada. Seria
necessário 4.5 mb de memória para armazenar a relação resultante.
A operação junção natural as operações de seleção e produto cartesiano em uma única operação.
A operação de junção natural forma um produto cartesiano de seus dois argumentos, faz uma seleção forçando
uma igualdade sobre os atributos que aparecem em ambas relações e finalmente remove colunas duplicadas.
Vamos considerar novamente a consulta no qual desejemos saber o nome dos clientes e suas respectivas contas
bancárias que possuem saldo maior que 450. Pode ser realizado de duas maneiras:
Maneira 1:
R1= saldo>450(conta);
R2= nome_cli, num_conta(cliente|x|num_cli=num_cli(R1));
Maneira 2:
R1= saldo>450(conta);
R2= nome_cli, num_conta(cliente|x|R1)
//É importante frisar que desta maneira, os atributos de junção estão implícitos no símbolo de
junção;
nome_cli num_conta
c3 101
c2 215
CAPÍTULO 6. ÁLGEBRA RELACIONAL 55
A operação divisão, representada por , retorna as tuplas da relação A que se relaciona com todas as tuplas da
Considere a consulta de que querer encontrar todos os clientes (cod_cli) que tem pelo menos uma conta em
todas as agências de “São Paulo”:
cod_agenc
ag1
ag3
R2= cod_cli, cod_agenc(conta);
cod_cli cod_agenc
c3 ag1
c2 ag2
c1 ag1
c4 ag3
c3 ag3
R3 = cod_cli, cod_agenc(R2) cod_agenc(R1);
cod_cli cod_agenc
c3 ag1
c3 ag3
CAPÍTULO 6. ÁLGEBRA RELACIONAL 56
6.10 Exercícios
Considere as seguintes relações para resolução dos exercícios:
(f) Encontre o nome e salário dos funcionários que recebem acima de 2000
(g) Consulte os nomes dos empregados que trabalham em todos os projetos controlados pelo departa-
mento 2.
(h) Encontre os nomes dos funcionários que não possuem dependentes
(i) Para cada nome de empregado, obtenha o departamento que este gerencia.
(j) Com o nome do empregado Ricardo, monte uma pesquisa utilizando a álgebra relacional que mostre
os projetos que o funcionário participa.
(k) Monte uma pesquisa em álgebra relacional utilizando o mesmo enunciado acima (enunciado L), porém
não utilizando a relação empregado_projeto.
(l) Liste o nome dos gerentes que possuem dependentes.
(m) Selecione todos os empregados que trabalham no departamento número 2 ou que supervisionam em-
pregados que trabalham no departamento número 2.
3. Elabore a álgebra relacional para as consultas baseadas nas seguintes relações. O Aluno pode instanciar as
relações e inserir alguns dados.
Reside ={nome_pessoa, rua, cidade}
Trabalha ={nome_pessoa, nome_companhia, salário}
Localizado ={nome_companhia, cidade}
Gerencia ={nome_pessoa, nome_gerente}
(a) Dê todos os funcionários que moram na mesma cidade da companhia em que trabalham.
(b) Dê todos os funcionários que vivem na mesma cidade que seu gerente.
(c) Dê todos os empregados que não trabalham para a empresa "Kangle Corporation"