Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
BANCO DE DADOS I
Versão 2007/2
Bancos de Dados I
Índice
1. Introdução ______________________________________________________________ 4
1.1. Dado_______________________________________________________________ 4
1.2. Informação __________________________________________________________ 4
1.3. A Informação como Recurso da Empresa __________________________________ 5
2. Organização de Arquivos __________________________________________________ 6
2.1. Conceitos ___________________________________________________________ 6
2.2. Estruturas de Arquivos _________________________________________________ 8
2.2.1. Arquivo seqüencial ________________________________________________ 8
2.2.2. Arquivo seqüencial-indexado _______________________________________ 10
2.2.3. Arquivo indexado_________________________________________________ 11
2.2.4. Arquivo direto ___________________________________________________ 12
3. Bancos de Dados _______________________________________________________ 13
3.1. Banco de Dados (BD)_________________________________________________ 13
3.2. Sistema de Gerência de Banco de Dados (SGBD) __________________________ 14
3.2.1. Processamento de Dados sem Banco de Dados ________________________ 14
3.2.2. Processamento de dados com uso de SGBD ___________________________ 15
3.2.3. Principais Componentes de um Sgbd _________________________________ 15
3.2.4. Características de um SGBD _______________________________________ 16
3.3. Abstração de Dados __________________________________________________ 18
3.4. Modelos de Bancos de Dados __________________________________________ 18
3.5. Independência de Dados ______________________________________________ 19
3.6. Funções relacionadas ao SGBD ________________________________________ 19
3.6.1. Administrador de Dados ___________________________________________ 19
3.6.2. Administrador de Banco de Dados ___________________________________ 20
3.6.3. Projetista da Base de Dados ________________________________________ 22
3.6.4. Analista de Sistemas______________________________________________ 22
3.7. Arquiteturas para uso do SGBD _________________________________________ 23
A ANSI divide a arquitetura de banco de dados em 3 níveis distintos: _______________ 23
3.7.1. Nível Externo____________________________________________________ 23
3.7.2. Nível Conceitual _________________________________________________ 24
3.7.3. Nível Interno ____________________________________________________ 25
3.7.4. Mapeamento ____________________________________________________ 26
3.7.5. Arquitetura Cliente/Servidor ________________________________________ 26
3.7.6. Mono-usuário ___________________________________________________ 29
3.7.7. Multiusuário com Processamento Central ______________________________ 29
3.7.8. Arquitetura em Rede com Servidor de Arquivos _________________________ 29
3.7.9. Arquitetura Cliente/Servidor ________________________________________ 29
3.8. Fases do Projeto de Banco de Dados ____________________________________ 29
3.8.1. Construir o Modelo Conceitual ______________________________________ 29
3.8.2. Construir o Modelo Lógico__________________________________________ 29
3.8.3. Construir o Modelo Físico __________________________________________ 30
3.8.4. Avaliar o Modelo Físico ____________________________________________ 30
3.8.5. Implementar o BD ________________________________________________ 30
4. Modelagem de Dados ____________________________________________________ 30
4.1. Conceitos __________________________________________________________ 30
4.2. Tipos de Abstração___________________________________________________ 31
4.2.1. Classificação ____________________________________________________ 31
4.2.2. Agregação ______________________________________________________ 31
4.2.3. Generalização ___________________________________________________ 31
4.3. Requisitos para Modelagem de Dados____________________________________ 31
4.4. Modelos Conceituais _________________________________________________ 31
4.5. Modelos Lógicos_____________________________________________________ 31
4.5.1. Modelo Hierárquico _______________________________________________ 32
4.5.2. Modelo de Rede _________________________________________________ 33
4.5.3. Modelo Relacional________________________________________________ 34
4.6. Modelo de Dados Físico_______________________________________________ 35
5. MODELO ENTIDADE-RELACIONAMENTO (M.E.R.) ____________________________ 36
5.1. Introdução _________________________________________________________ 36
5.2. Entidade ___________________________________________________________ 36
5.2.1. Regras para Atribuição de Nomes a Entidades__________________________ 37
5.3. Relacionamento _____________________________________________________ 37
5.3.1. Auto-relacionamento ______________________________________________ 38
5.3.2. Cardinalidade de Relacionamentos___________________________________ 39
5.3.3. Cardinalidade Máxima_____________________________________________ 39
5.3.4. Classificação de Relacionamentos Binários ____________________________ 40
5.3.5. Relacionamento ternário ___________________________________________ 41
5.3.6. Cardinalidade mínima _____________________________________________ 42
5.4. Notações Alternativas_________________________________________________ 42
5.5. Atributo ____________________________________________________________ 43
5.5.1. Domínio ________________________________________________________ 43
5.5.2. Tipos de Atributos ________________________________________________ 44
5.5.3. Atributo de Relacionamento ________________________________________ 44
5.5.4. Identificador de Entidades __________________________________________ 44
5.5.5. Relacionamento Identificador (Entidade Fraca) _________________________ 45
5.5.6. Identificador de Relacionamentos ____________________________________ 45
5.6. Generalização/Especialização __________________________________________ 45
5.7. Entidade Associativa (Agregação) _______________________________________ 47
5.8. Relacionamento Mutuamente Exclusivo___________________________________ 49
5.9. Restrição de Persistência no Relacionamento ______________________________ 49
5.9.1. Normalização ___________________________________________________ 50
5.9.2. Anomalias de Atualização __________________________________________ 51
5.9.3. Terminologia ____________________________________________________ 52
5.9.4. Notação para as Estruturas de Dados ________________________________ 53
5.9.5. Esquema da Normalização _________________________________________ 55
5.9.6. Relações Não-Normalizadas________________________________________ 56
5.9.7. Primeira Forma Normal (1FN) _______________________________________ 57
5.9.8. Escolha da Chave Primária _________________________________________ 58
5.9.9. Segunda Forma Normal (2FN) ______________________________________ 60
5.9.10. Terceira Forma Normal (3FN) _____________________________________ 61
Bancos de Dados I
1. INTRODUÇÃO
Temos observado ao longo dos nossos anos de experiência no desenvolvimento de sistemas
de informação, que existe uma grande dificuldade dos analistas e programadores em
entenderem a diferença entre INFORMAÇÃO e DADO.
1.1. DADO
O DADO é uma representação, um registro de uma informação. Este DADO pode ser
registrado fisicamente através de um papel (receita médica), um disco de computador ou um
impulso elétrico, etc. Este registro pode ser o originador de uma série de processos que
influenciam na realidade observada (salvar a vida de um paciente, tocar um alarme, etc.). Um
DADO tem as seguintes características:
Representação de um evento do mundo físico, de um fato ou de uma idéia;
1.2. INFORMAÇÃO
Identificados
Dados Organizados geram Informação
Agrupados
Armazenados
Recuperados
Bancos de Dados I - 4
1.3. A INFORMAÇÃO COMO RECURSO DA EMPRESA
Bancos de Dados I - 5
2. ORGANIZAÇÃO DE ARQUIVOS
2.1. CONCEITOS
• Estruturas de Dados: define a forma como os dados estão organizados, como se
relacionam e como serão manipulados pelos programas. Ex: vetores e matrizes, registros,
filas, pilhas, árvores, grafos, etc.
• Chave secundária: A chave secundária pode ser formada por um campo ou pela
combinação de campos (SIMPLES / COMPOSTA). Ë utilizada como parâmetro (filtro) para
seleção de registros no arquivo em consultas, emissão de relatórios ou processos de
atualização simultânea de um grupo de registros. Por exemplo, para aumentarmos o valor
do salário dos analistas em 10%, poderíamos utilizar o campo FUNÇÃO do arquivo
CADASTRO DE FUNCIONÁRIOS como parâmetro (chave secundária) no processo de
seleção dos registros a serem alterados. Em síntese, a chave secundária é o campo ou
combinação de campos do arquivo que permite a recuperação de mais de um registro no
arquivo. Portanto, não possui a característica de unicidade proposta para a chave primária.
• Chave de acesso: é uma chave usada para identificar o(s) registro(s) desejado(s) em uma
operação de acesso ao arquivo.
Exemplo:
Departamento (CodDep, NomeDepto)
Empregado(CodEmp, NomeEmp, CodDepto, CatFunc)
Bancos de Dados I - 7
2.2. ESTRUTURAS DE ARQUIVOS
a) Acesso a um registro
Bancos de Dados I - 8
b) Inserção de um registro
Se o arquivo não está ordenado, o registro pode ser simplesmente inserido após o último
registro armazenado. Se o arquivo está ordenado, normalmente é adotado o seguinte
procedimento: Dado um arquivo base B, é construído um arquivo de transações T, que contem
os registros a serem inseridos, ordenados pela mesma chave que o arquivo B. Os arquivos B
e T são então intercalados, gerando o arquivo A, que é a versão atualizada de B.
c) Exclusão de um registro
d) Alteração de um registro
Bancos de Dados I - 9
2.2.2. ARQUIVO SEQÜENCIAL-INDEXADO
Bancos de Dados I - 10
2.2.3. ARQUIVO INDEXADO
O arquivo indexado é aquele em que os registros são acessados através de um ou mais
índices, não havendo qualquer compromisso com a ordem em que os registros estão
armazenados. Podem existir tantos índices quantas forem às chaves de acesso aos registros.
As entradas no índice são ordenadas pelo valor das chaves de acesso, sendo cada uma delas
constituída por um par (chave do registro, endereço do registro).
Índice Arquivo
Num End. # Num Nome Idade Salário
1000 1 0 2010 WILSON 26 1000
1050 13 1 1000 ADEMAR 32 250
1070 2 2 1070 ANGELA 28 300
1075 16 3 1200 CLAUDIA 25 750
1100 22 4 1300 DIOGO 24 400
1200 3 5 1400 EDISON 22 1500
1250 10 6 1510 FLAVIO 30 250
1275 19 7 1590 HELENA 26 300
1300 4 8 1650 IVAN 32 750
1310 14 9 1730 MIGUEL 28 400
1400 5 10 1250 CRISTIE 25 1500
1430 17 11 1520 GENARO 24 750
1470 23 12 1740 RAMON 22 400
1510 6 13 1050 AFONSO 30 1500
1520 11 14 1310 ELBER 26 250
1530 20 15 1605 IARA 32 300
1590 7 16 1075 CARLOS 28 750
1605 15 17 1430 EDMUNDO 26 400
1650 8 18 1700 LUIS 32 1500
1700 18 19 1275 DARCI 26 750
1710 24 20 1530 GERSON 26 400
1730 9 21 1745 SANDRA 32 400
1740 12 22 1100 CESAR 28 1500
1745 21 23 1470 ENIO 25 750
1800 25 24 1710 MARIA 24 400
1905 26 25 1800 SONIA 22 750
2010 0 26 1905 TATIANA 30 400
Bancos de Dados I - 11
2.2.4. ARQUIVO DIRETO
A idéia básica de um arquivo direto é o armazenamento dos registros em endereços
determinados com base no valor de uma chave primária, de modo que se tenha acesso rápido
aos registros especificados por argumentos de pesquisa, sem que haja necessidade de
percorrer uma estrutura de índice. Em um arquivo direto ao invés de um índice é usada uma
função que calcula um endereço de registro a partir do argumento de pesquisa.
Arquivo
# Num Nome Idade Salário
0 2010 WILSON 26 1000
1
2 1070 ANGELA 28 300
C=’CLAUDIA’ E=F(C) E=3 3 1200 CLAUDIA 25 750
Exercício
1. Defina com suas palavras a diferença entre Bancos de dados e Sistemas
Gerenciadores de Bancos de dados.
3. Simule a criação de um banco de dados. Este banco deverá conter 3 tabelas. Defina o
conceito de chave primária, secundária e estrangeira para as tabelas criadas.
Bancos de Dados I - 12
3. BANCOS DE DADOS
Introdução
No início da década de 60, foram lançados os primeiros sistemas gerenciadores de banco de dados (SGBD),
tendo como principal proposta o aumento na produtividade nas atividades de desenvolvimento e manutenção de
sistemas, até então realizadas de forma artesanal em linguagens de programação convencionais de primeira e
segunda geração. Oriundos do ambiente de mainframes, os SGBD tornaram-se mais populares e amigáveis com
o advento da microinformática. Cada vez mais as fronteiras entre esses dois mundos estreitam-se e a
concorrência pelo domínio do mercado de SGBD, tem levado seus diversos fabricantes a sofisticarem seus
produtos. Cada nova versão lançada incorpora novidades como interfaces gráficas, ferramentas de apoio ao
desenvolvimento, utilitários para gerenciamento de BD e facilidades para extração de dados. Essa evolução vem
tornando o trabalho de programadores, analistas e usuários menos artesanal, com reflexos na qualidade e
produtividade.
Um Banco de Dados (BD) pode ser definido como uma coleção de dados inter-relacionados,
armazenados de forma centralizada ou distribuída, com redundância controlada, para servir a
uma ou mais aplicações. Coleção de dados inter-relacionados, que representam informações
sobre um domínio específico; Ex.: Agenda telefônica, Base de dados de uma empresa, Acervo
de uma biblioteca.
Bancos de Dados I - 13
3.2. SISTEMA DE GERÊNCIA DE BANCO DE DADOS (SGBD)
Conjunto de software para gerenciar (definir, criar, modificar, usar) um BD e garantir a
integridade e segurança dos dados. O SGBD é a interface entre os programas de aplicação e
o BD. Em inglês é denominado DataBase Managementm System (DBMS).
Bancos de Dados I - 14
• Redundância não controlada de dados: Não há gerência automática da redundância, o que
leva a inconsistência dos dados devido a redigitação de informações.
• Dificuldade de extração de informações: os dados são projetados para atender aplicações
especificas gerando dificuldades para o cruzamento de informações.
• Dados pouco confiáveis e de baixa disponibilidade.
Bancos de Dados I - 15
• Utilitários administrativos: Programas auxiliares para carregar, reorganizar, adicionar,
modificar a descrição do BD, obter cópias de reserva e recuperar a integridade física em
caso de acidentes.
• Integridade dos dados: O SGBD deve garantir a integridade dos dados, através da
implementação de restrições adequadas. Isto significa que os dados devem ser precisos
e válidos.
• Redundância dos dados: O SGBD deve manter a redundância de dados sob controle,
ou seja, ainda que existam diversas representações do mesmo dado, do ponto de vista
do usuário é como se existisse uma única representação. No processamento tradicional
de arquivos, cada grupo de usuários deve manter seu próprio conjunto de arquivos e
dados. Desta forma, acaba ocorrendo redundâncias que prejudicam o sistema com
problemas como:
Bancos de Dados I - 16
• Toda vez que for necessário atualizar um arquivo de um grupo, então todos os
grupos devem ser atualizados para manter a integridade dos dados no ambiente
como um todo;
• Segurança e privacidade dos dados: O SGBD deve assegurar que estes só poderão
ser acessados ou modificados por usuários autorizados.
• Rápida recuperação após falha: Os dados são de importância vital e não podem ser
perdidos. Assim, o SGBD deve implementar sistemas de tolerância a falhas, tais como
estrutura automática de recover e uso do conceito de transação.
Bancos de Dados I - 17
• Tolerância a Falhas: Um SGBD deve fornecer recursos para recuperação de falhas
tanto de software quanto de hardware.
• NÍVEL FÍSICO: É o nível mais baixo de abstração, no qual se descreve como os dados são
armazenados. Estruturas complexas, de baixo nível, são descritas em detalhe.
• NÍVEL VISÃO: Este é o nível mais alto de abstração, no qual se expõe apenas parte do
BD. Na maioria das vezes os usuários não estão preocupados com todas as informações do
BD e sim com apenas parte delas (Visões dos Usuários).
Bancos de Dados I - 18
No projeto de um banco de dados, geralmente são considerados 3 modelos: conceitual, lógico
e físico.
• Modelo conceitual: É uma descrição mais abstrata da base de dados. Não contém
detalhes de implementação e é independente do tipo de SGBD usado. É o ponto de
partida para o projeto da base de dados.
Faz parte do trabalho do DBA decidir exatamente que informação manter no banco de dados -
em outras palavras, deve identificar as entidades do interesse da empresa e a informação a
registrar em relação a estas entidades. Uma vez feito isto, o DBA deve então definir o conteúdo
do banco de dados, descrevendo o esquema conceitual (usando 0 DDL conceitual). A forma
objeto (compilado) daquele esquema é utilizada pelo DBMS para responder às solicitações de
acesso. A forma (não compilada) atua como documento de referência para os usuários do
sistema.
O DBA também deve decidir como os dados serão representados no banco de dados, e definir
esta representação escrevendo a definição da estrutura de armazenamento (usando a DDL
interna). Além disso, deve definir o mapeamento associado entre os níveis interno e conceitual.
Na prática, tanto a DDL conceitual quanto a DDL interna - mais provavelmente a primeira -
provavelmente incluirão os meios de definição desse mapeamento, mas as duas funções (a
definição do esquema, a definição do mapeamento) devem ser claramente separadas. Tal
como o esquema conceitual, o esquema interno e o mapeamento correspondente existirão não
só na forma-fonte como na forma objeto.
É função do DBA servir de elo de ligação com os usuários, a fim de garantir a disponibilidade
dos dados de que estes necessitam, e prepará-los ou auxiliá-los na preparação dos
necessários esquemas externos, utilizando a DDL externa apropriada (como já mencionamos,
um determinado sistema pode suportar diversas DDLs externas e distintas). E, ainda, também
deve ser definido o mapeamento entre qualquer esquema externo e o esquema conceitual. Na
prática, a DDL externa provavelmente incluirá os meios de especificação do mapeamento, mas
Bancos de Dados I - 20
o esquema e o mapeamento devem ser claramente separados. Cada esquema externo e o
mapeamento correspondente existirão tanto na forma fonte como na forma objeto.
O DBA deve organizar o sistema de tal maneira que obtenha "o melhor desempenho para a
empresa"; e efetuar os ajustes adequados quanto às necessidades de modificações. Como já
mencionamos, quaisquer mudanças nos detalhes de armazenamento e acesso devem ser
acompanhadas de mudanças correspondentes na definição do mapeamento, a partir do nível
conceitual, de forma que o esquema conceitual possa permanecer constante.O DBA,
evidentemente, irá precisar de diversos programas utilitários como auxílio às tarefas
precedentes. Estes são uma parte essencial de um sistema de banco de dados prático, embora
não sejam mostrados na Figura 5 da arquitetura. Listamos abaixo alguns exemplos dos
programas utilitários necessários.
• Rotinas de carga (para criar uma versão inicial do banco de dados a partir de um ou
mais arquivos).
Bancos de Dados I - 21
• Rotinas de despejo na memória e recuperação (despejar o banco de dados, auxiliar de
armazenamento de dados, e recarregar o banco de dados a partir dessa cópia de
segurança). Observação: As rotinas de carga mencionadas acima consistirão, na
prática, no aspecto de "recuperação" das rotinas de despejo/recuperação na memória.
Rotinas de reorganização (para rearrumar os dados no banco de dados, em vista de
diversas razões de desempenho - por exemplo, agrupar os dados de certa maneira ou
regenerar espaço ocupado por dados que se tornaram obsoletos).
Bancos de Dados I - 22
3.7. ARQUITETURAS PARA USO DO SGBD
O nível externo é o nível do usuário individual. Um determinado usuário tanto pode ser
um programador de aplicações como um usuário de terminal on-line - i.e., um usuário final - de
qualquer grau de sofisticação. O DBA é um caso especial importante. Ao contrário do usuário
comum, o DBA terá de se interessar pelos níveis conceitual e interno também. Cada usuário
tem uma linguagem à sua disposição:
• Esta linguagem, para o programador de aplicação, pode ser uma linguagem
convencional de programação, como COBOL ou PL/I, ou uma linguagem de
programação apropriada, específica do sistema em questão (sistemas NOMAD,
Rdv/VMS ou dBase II).
• Para o usuário final, pode ser uma linguagem de consulta ou uma linguagem de
propósitos especiais, talvez baseadas em formulários ou menu, modelada às
necessidades do usuário e suportada por um programa de aplicação on-line.
Bancos de Dados I - 23
Para nossos propósitos, o que importa é sabermos que todas essas linguagens incluirão
uma sublinguagem de dados - ou seja, um subconjunto de toda a linguagem, voltado para os
objetivos e operações do banco de dados. A sublinguagem de dados (DSL) é embutida na
linguagem hospedeira correspondente, a qual proporciona os diversos recursos não-
específicos de banco de dados, tais como variáveis locais (temporárias), operações
computacionais, lógica if-then-else e assim por diante. Determinados sistemas podem suportar
múltiplas linguagens hospedeiras e múltiplas sublinguagens de dados.
O terceiro nível da arquitetura é o nível interno. A visão interna é uma representarão de baixo
nível do banco de dados por inteiro; ela consiste em muitas ocorrências de cada um dos vários
tipos de registros internos. "Registro interno" é o termo ANSI/SPARC que representa a
construção que temos chamado de registro armazenado (e continuaremos a usar essa última
forma). A visão interna é descrita por meio do esquema interno, que não somente define os
diversos tipos de registros armazenados, mas também especifica quais índices existem, como
os campos armazenados estão representados, em que seqüência física está o registro
armazenado, e assim por diante. Para encerrar lembramos que, em certas situações
excepcionais, os programas aplicativos - em particular as aplicações de natureza utilitária -
podem ter permissão para operar diretamente no nível interno, e não no nível externo. Não é
preciso dizer que essa prática não é recomendável; ela representa um risco de segurança (pois
as restrições de segurança são ignoradas) e um risco de integridade (pois também as
restrições de integridade são ignoradas), e o programa terá uma inicialização dependente dos
dados; porém, às vezes essa poderá ser a única maneira de obter a funcionalidade ou o
desempenho exigido - do mesmo modo o usuário em uma linguagem de programação de alto
nível poderia ter a necessidade ocasional de descer até a linguagem assembler para satisfazer
certos objetivos de funcionalidade ou desempenho.
Bancos de Dados I - 25
3.7.4. MAPEAMENTO
Além dos três níveis básicos, esta arquitetura envolve certos mapeamentos: um mapeamento
conceitual/interno e vários mapeamentos externos/conceitual:
• O mapeamento conceitual/interno define a correspondência entre a visão conceitual e o
banco de dados armazenado;
• Um mapeamento externo/conceitual define a correspondência entre uma visão externa
específica e a visão conceitual.
A propósito, a maioria dos sistemas permite que a definição de certas visões externas seja
expressa em termos de outras (efetivamente, através de mapeamentos externos/externos), em
vez de sempre exigir uma definição explícita do mapeamento no nível conceitual - um recurso
útil se diversas visões externas forem bastante semelhante. Em particular, os sistemas
relacionais oferecem essa capacidade.
Descrevemos até agora neste capítulo os sistemas de bancos de dados sob o ponto de vista
da chamada arquitetura ANSI/SPARC. Nesta seção, examinaremos os sistemas de bancos de
dados sob uma perspectiva um pouco diferente. Naturalmente, o objetivo geral desses
sistemas é fornecer suporte ao desenvolvimento e à execução de aplicações de bancos de
dados. Portanto, sob um ponto de vista de mais alto nível, um sistema de banco de dados pode
ser considerado como tendo uma estrutura muito simples em duas partes, consistindo em um
servidor (também chamado hack end) e um conjunto de clientes (também chamados front
ends).
• O servidor é o próprio SGBD. Ele admite todas as funções básicas de SGBDs. Tais como:
definição de dados, manipulação de dados, segurança e integridade e dados, e assim por
diante. Em particular, ele oferece todo o suporte de nível externo, conceitual e interno que
examinamos anteriormente. Assim, o termo "servidor" neste contexto é tão somente um outro
nome para o SGBD.
• Os clientes são as diversas aplicações executadas sobre o SGBD. Tanto aplicações escritas
por usuários quanto aplicações internas, ou seja, aplicações fornecidas pelo fabricante do
SGBD ou por produtores independentes. No que se refere ao servidor, é claro que não existe
nenhuma diferença entre aplicações escritas pelo usuário e aplicações internas todas elas
empregam a mesma interface para o servidor.
Bancos de Dados I - 26
Usuário Final
iMac
Aplicações Cliente
SGBD Servidor
BD Banco de Dados
Vamos aprofundar o exame da questão de aplicações escritas pelo usuário versus aplicações
fornecidas pelo fabricante:
• Aplicações escritas pelo usuário são basicamente programas aplicativos comuns, escritos
(em geral) em uma linguagem de programação convencional de terceira geração (L3G),
como C ou COBOL, ou então em alguma linguagem proprietária de quarta geração (L4G) -
embora em ambos os casos a linguagem precise ser de algum modo acoplada a uma
sublinguagem de dados apropriada.
• Aplicações fornecidas por fabricante (chamadas freqüentemente de ferramentas - tools) são
aplicações cuja finalidade básica é auxiliar na criação e execução de outras aplicações! As
aplicações criadas são aplicações adaptadas a alguma tarefa específica (elas podem não
ser muito semelhante às aplicações no sentido convencional; de fato, a finalidade das
ferramentas é permitir aos usuários, em especial aos usuários finais, criar aplicações sem
ter de escrever programas em uma linguagem de programação convencional). Por exemplo,
uma das ferramentas fornecidas pelo fabricante será um gerador de relatórios, cuja
finalidade é permitir que os usuários finais obtenham relatórios formatados a partir do
sistema sob solicitação. Qualquer solicitação de relatório pode ser considerada um pequeno
programa aplicativo, escrito em uma linguagem de geração de relatórios de nível muito alto
(e finalidade especial).
As ferramentas fornecidas pelo fabricante podem ser divididas em diversas classes mais ou
menos distintas:
a. Processadores de linguagem de consulta.
b. Geradores de relatórios.
c. Subsistemas gráficos de negócios.
d. Planilhas eletrônicas.
e. Processadores de linguagem natural.
f. Pacotes estatísticos.
Bancos de Dados I - 27
g. Ferramentas para gerenciamento de cópias ou "extração de dados".
h. Geradores de aplicações (inclusive processadores L4G).
i. Outras ferramentas para desenvolvimento de aplicações, inclusive produtos de
engenharia de software auxiliada pelo computador (CASE - computer-aided software
engineering).
Observamos que, tendo em vista que toda a importância de um sistema de banco de dados
está em dar suporte à criação e à execução de aplicações, a qualidade das ferramentas
disponíveis é, ou deve ser, um fator preponderante na "decisão sobre o banco de dados" (isto
é, o processo de escolha do produto de banco de dados apropriado). Em outras palavras, o
SGBD em si não é o único fator que precisa ser levado em consideração, nem mesmo é
necessariamente o fator mais significativo. Encerramos esta seção com uma referência para o
que se segue. Como o sistema por completo pode estar tão claramente dividido em duas
partes, servidores e clientes, surge a possibilidade de executar os dois em máquinas
diferentes. Em outras palavras, existe o potencial para o processamento distribuído. O
processamento distribuído significa que máquinas diferentes podem estar conectadas entre si
para formar algum tipo de rede de comunicações, de tal modo que uma única tarefa de
processamento de dados possa ser dividida entre várias máquinas na rede. Na verdade, essa
possibilidade é tão atraente - por uma variedade de razões, principalmente de ordem
econômica - que o termo "cliente/servidor" passou a se aplicar a quase exclusivamente ao caso
em que o cliente e o servidor estão de fato localizados em máquinas diferentes.
Exercícios
Bancos de Dados I - 28
3.7.6. MONO-USUÁRIO
• BD está no mesmo computador que as aplicações;
• Não há múltiplos usuários;
• Recuperação geralmente através de backup;
• Típico de computadores pessoais;
Bancos de Dados I - 29
• Considera as características e restrições do SGBD;
• Etapa de normalização dos dados;
3.8.5. IMPLEMENTAR O BD
• Etapa de carga (load) dos dados;
• Gerar as interfaces com outras aplicações;
4. MODELAGEM DE DADOS
4.1. CONCEITOS
• Abstração: processo mental através do qual selecionamos determinadas propriedades ou
características dos objetos e excluímos outras, consideradas menos relevantes para o
problema sendo analisado.
• Modelo: É uma abstração, uma representação simplificada, de uma parcela do mundo real,
composta por objetos reais.
• Modelo de dados: Um modelo de dados é uma descrição das informações que devem ser
armazenadas em um banco de dados, ou seja, é a descrição formal da estrutura de BD
(descrição dos dados, dos relacionamentos entre os dados, da semântica e das restrições
impostas aos dados).
Bancos de Dados I - 30
4.2. TIPOS DE ABSTRAÇÃO
4.2.1. CLASSIFICAÇÃO
Os objetos do mundo real são organizados segundo suas propriedades ou características
comuns, formando classes de objetos. Um objeto pode pertencer simultaneamente a várias
classes.
4.2.2. AGREGAÇÃO
Uma classe é definida a partir de um conjunto de outras classes, que representam suas partes
componentes.
4.2.3. GENERALIZAÇÃO
Define uma nova classe a partir de características comuns de outras classes. A classe genérica
que reúne as características comuns é denominada superclasse e as classes que herdam
estas características são denominadas subclasses.
Bancos de Dados I - 32
4.5.2. MODELO DE REDE
O BD em rede é um grafo, onde os nós representam os registros e os arcos representam os
relacionamentos entre os registros, através de ligações pai-filho. Diferente do modelo
hierárquico, um registro pode possuir diversos registros pai.
Bancos de Dados I - 33
4.5.3. MODELO RELACIONAL
Um BD relacional possui apenas um tipo de construção, a tabela. Uma tabela é composta por
linhas (túplas) e colunas (atributos). Os relacionamentos entre os dados também são
representados ou por tabelas, ou através da reprodução dos valores de atributos.
Bancos de Dados I - 34
4.6. MODELO DE DADOS FÍSICO
Usados para descrever os dados em seu nível mais baixo. Capturam os aspectos de
implementação do SGBD.
Bancos de Dados I - 35
5. MODELO ENTIDADE-RELACIONAMENTO (M.E.R.)
5.1. INTRODUÇÃO
5.2. ENTIDADE
Uma Entidade ou Tabela é uma coleção de REGISTROS do mesmo tipo, ou seja, referentes a
um mesmo assunto e com o mesmo formato padrão (layout). Constitui o componente do
sistema no qual são armazenados os dados, que combinados através dos programas servem
de base para a geração da informação desejada pelo usuário, através de relatórios e consultas
on-line. Um sistema de controle de notas, por exemplo, pode armazenar seus dados em
diversas tabelas, cada uma contendo informações sobre um determinado item do sistema:
ALUNO, PROFESSOR, MATÉRIA, NOTA, etc. Essas informações podem ser combinadas
através de programas para gerar, por exemplo, o BOLETIM ESCOLAR, a PAUTA ou uma tela
de CONSULTA DE NOTAS.
Bancos de Dados I - 36
particular é usado o termo instância (ou ocorrência). No DER, uma entidade é representada
através de um retângulo que contém o nome da entidade;
PESSOA DEPARTAMENTO
A literatura não consagra um padrão para a atribuição de nomes a entidades, mas, para
alcançarmos um mínimo de padronização, indicamos observar as seguintes regras:
5.3. RELACIONAMENTO
É toda associação entre entidades, sobre a qual deseja-se manter informações no Banco
de Dados;
Os relacionamentos representam fatos ou situações da realidade, onde as entidades
interagem de alguma forma;
Um dado por si só não faz uma informação, pois não tem sentido próprio, é necessário que
haja uma associação de dados para que a informação seja obtida.
Exemplos:
Fornecimento: entre as entidades FORNECEDOR e MATERIAL;
Matrícula: entre as entidades ALUNO e DISCIPLINA;
Financiamento: entre as entidades PROJETO e AGENTE FINANCEIRO;
Bancos de Dados I - 37
Diagrama de ocorrências de relacionamentos:
5.3.1. AUTO-RELACIONAMENTO
Relacionamento entre ocorrências da mesma entidade.
PESSOA
marido esposa
CASAMENTO
Bancos de Dados I - 38
5.3.2. CARDINALIDADE DE RELACIONAMENTOS
A cardinalidade de uma entidade em um relacionamento expressa o número de
instâncias da entidade que podem ser associadas a uma determinada instância da entidade
relacionada.
Devem ser consideradas duas cardinalidades:
Bancos de Dados I - 39
5.3.4. CLASSIFICAÇÃO DE RELACIONAMENTOS BINÁRIOS
A cardinalidade máxima é usada para classificar os relacionamentos binários (aqueles
que envolvem duas entidades).
Bancos de Dados I - 40
c) Relacionamentos N:N (muitos-para-muitos)
Bancos de Dados I - 41
5.3.6. CARDINALIDADE MÍNIMA
A cardinalidade mínima é usada para indicar o tipo de participação da entidade em um
relacionamento. Esta participação pode ser:
1 REALIZA N
CLIENTE PEDIDO
Um cliente pode fazer pedidos ou não, mas todos os pedidos devem estar associados
a um cliente.
1 ALOCA N
DEPTO EMPREGADO
1 ALOCA N
DEPTO EMPREGADO
10
Parcialidade mínima: para um departamento para ser criado, devem existem pelo
menos 10 empregados alocados.
(1,1) (0,N)
(0,N) (1,1)
DEPTO ALOCA EMPREGADO
Bancos de Dados I - 42
Notação Setzer: semântica associativa
1 N
DEPTO ALOCA EMPREGADO
5.5. ATRIBUTO
Os atributos são os dados que devemos armazenar a respeito da entidade, para atender às
necessidades de informações demandadas pelo usuário. Constituem tudo o que se pode
relacionar como próprio (propriedade) da entidade e que, de alguma forma, estejam contidos
no escopo do problema em análise. Os atributos qualificam e distinguem as entidades no MER.
Em relação ao banco de dados, os atributos representam as colunas, que formam a estrutura
de dados das tabelas. As colunas armazenam um valor para cada linha. Esse valor
armazenado é designado por VALOR DE ATRIBUTO. O conjunto de valores de atributos,
distintos por um identificador único (chave primária) denomina-se OCORRÊNCIA. Esse
conceito é análogo ao de linha (túpla) em tabela relacional e de registro em arquivo
convencional. É um dado que é associado a cada ocorrência de uma entidade ou
relacionamento. Os atributos não possuem existência própria ou independente - estão sempre
associados a uma entidade ou relacionamento Podemos exprimir os atributos no MER,
conforme mostrado na figura abaixo:
Exemplo:
Funcionário: Matrícula, Nome, Endereço;
Material: Código, Descrição;
Financiamento: Valor total, Meses;
Fornecedor: Nome, Endereço;
5.5.1. DOMÍNIO
É o conjunto de valores válidos que um atributo pode assumir.
Ex: Estado civil: solteiro, casado, divorciado, viúvo.
Bancos de Dados I - 43
5.5.2. TIPOS DE ATRIBUTOS
a) Opcional/Mandatório
Opcional: o atributo pode possuir um valor nulo (vazio). Ex: número de telefone
Mandatório: o atributo deve possuir um valor válido, não nulo. Ex: nome do cliente
b) Monovalorado/Multivalorado
Monovalorado: o atributo assume um único valor dentro do domínio. Ex: data de
nascimento
Multivalorado: o atributo pode assumir um número qualquer de valores dentro do
domínio. Ex: Telefone para contato
c) Atômico/Composto
Atômico: o atributo não pode ser decomposto em outros atributos. Ex: Idade
Composto: o atributo é composto por mais de um atributo. Ex: Endereço
Bancos de Dados I - 44
5.5.5. RELACIONAMENTO IDENTIFICADOR (ENTIDADE FRACA)
Existem casos em que uma entidade não pode ser identificada apenas com seus
próprios atributos, mas necessita de atributos de outras entidades com as quais se relaciona.
Este relacionamento é denominado Relacionamento Identificador. Alguns autores denominam
uma entidade nesta situação de Entidade Fraca.
5.6. GENERALIZAÇÃO/ESPECIALIZAÇÃO
A generalização é um processo de abstração em que vários tipos de entidade são
agrupados em uma única entidade genérica, que mantém as propriedades comuns;
Este conceito está associado à idéia de herança de propriedades. Isto significa que as
subclasses possuem, além de seus próprios atributos, os atributos da superclasse
correspondente.
Usada quando é necessário caracterizar entidades com atributos próprios ou participação
em relacionamentos específicos
Bancos de Dados I - 45
Uma generalização / especialização pode ser total ou parcial:
É total quando, para cada ocorrência da entidade genérica, existe sempre uma
ocorrência em uma das entidades especializadas.
É parcial quando nem toda ocorrência da entidade genérica possui uma ocorrência
correspondente em uma entidade especializada.
Bancos de Dados I - 46
5.7. ENTIDADE ASSOCIATIVA (AGREGAÇÃO)
Bancos de Dados I - 47
Se for necessário adicionar a informação que, a cada consulta um ou mais medicamentos
podem ser prescritos ao paciente, será necessário criar uma nova entidade (MEDICAMENTO).
Esta entidade deve se relacionar com as consultas, mas CONSULTA é um relacionamento.
Deve ser criada então uma entidade associativa.
Bancos de Dados I - 48
5.8. RELACIONAMENTO MUTUAMENTE EXCLUSIVO
Neste tipo de relacionamento uma ocorrência de uma entidade pode estar associada com
ocorrências de outras entidades, mas não simultaneamente.
TRANSPORTE
PASSAGEIRO
1 N
EMPRÉS-
ALUNO LIVRO
TIMO
Bancos de Dados I - 49
5.9.1. NORMALIZAÇÃO
O processo de NORMALIZAÇÃO proposto por CODD, deu origem a três FORMAS NORMAIS:
• PRIMEIRA FORMA NORMAL - 1FN;
• SEGUNDA FORMA NORMAL - 2FN e;
• TERCEIRA FORMA NORMAL - 3FN.
Outras formas normais foram propostas, por diversos autores, configurando situações que
ocorrem mais raramente, sendo a 4FN a mais significativa. Conforme veremos mais adiante,
a 1FN visa tão somente colocar as estruturas de dados oriundas dos modelos conceituais no
formato tabular adequado, que permita que elas possam ser criadas nos SGBD-R. Nesse
sentido, considera-se que relações em 1FN já estão NORMALIZADAS.
As demais formas normais estão dirigidas para evitar REDUNDÂNCIA DE DADOS,
INCONSISTÊNCIAS e ANOMALIAS DE ATUALIZAÇÃO. Redundância de dados é um fato
gerador de inconsistências, já as anomalias de atualização criam dificuldades operacionais
para a manutenção do BD. Esses aspectos reforçam a importância de aplicação da 2FN e 3FN.
Bancos de Dados I - 50
5.9.2. ANOMALIAS DE ATUALIZAÇÃO
TABELA FUNCIONÁRIO
Bancos de Dados I - 51
5.9.3. TERMINOLOGIA
• Célula
Interseção (LINHA X COLUNA) de uma relação.
• Chave Primária
CHAVE PRIMÁRIA, PRIMARY KEY (PK) ou simplesmente CHAVE é o atributo ou combinação
de atributos que permite a IDENTIFICAÇÃO ÚNICA de cada túpla na relação. A PK não admite
duplicata e nem valor nulo.
Relação de identificação unívoca entre parte da CHAVE PRIMÁRIA (PK composta por dois ou
mais atributos) e algum dos demais atributos da relação.
Obs.: Para que ocorra dependência parcial é necessário chave primária composta. Por outro
lado, nem sempre que ocorre PK composta haverá dependência parcial.
Relação de identificação unívoca entre atributos que não fazem parte da chave primária da
relação.
Bancos de Dados I - 53
TABELA VENDA:
ITENS-DE-VENDA
NUM-NF NOME-CLI END-CLI DT-VENDA CD-PRD QDT P-UNIT
01 10 20,00
001 Antônio SQS 22/08 02 20 10,00
05 8 5,00
02 Juliana SQN 10/09 01 6 20,00
03 Cláudia SQS 20/07 05 10 5,00
. . . . . . .
. . . . . . .
. . . . . . .
Observações:
• ITENS DE GRUPO são IDENTADOS, com deslocamento para a direita dando idéia de
hierarquia;
o sublinhados, ou;
o Um “#” ou um “C” colocados à esquerda dos atributos.
Observações:
Bancos de Dados I - 54
5.9.5. ESQUEMA DA NORMALIZAÇÃO
RELAÇÃO
NÃO Tabela com itens de grupo
NORMALIZADA
2FN
3FN
Bancos de Dados I - 55
5.9.6. RELAÇÕES NÃO-NORMALIZADAS
Uma relação NÃO NORMALIZADA é aquela que possui atributos do tipo NÃO-SIMPLES
(NÃO-ATÔMICOS). Para a devida utilização dos OPERADORES RELACIONAIS é necessário
que a relação não-normalizada seja transformada numa forma onde os atributos só contenham
VALORES ATÔMICOS, em outras palavras, é preciso tornar a estrutura de dados plana. Esse
processo de planificação da relação é concretizado após a sua transposição para a 1FN.
CCONTA-CORRENTE
CONTA
AGENCIA
NUMERO
NOME-CLIENTE
ENDEREÇO-CLIENTE
DEPENDENCIA
TIPO-AGENCIA
DESCRIÇÃO-TIPO-AGENCIA
ENDEREÇO-DEPENDENCIA
LANÇAMENTOS*
NUM-DOCUMENTO
DATA-DOCUMENTO
VALOR-LANÇAMENTO Observações:
• Esses atributos são do tipo não-atômicos, pois suas células não contêm valores únicos;
Bancos de Dados I - 56
5.9.7. PRIMEIRA FORMA NORMAL (1FN)
Uma relação está em 1FN se todos seus ATRIBUTOS são SIMPLES (ATÔMICOS). Para
colocarmos uma relação em 1FN devemos PLANIFICÁ-LA, eliminando de sua estrutura os
atributos NÃO-ATÔMICOS (VETOR, MATRIZ e ITEM DE GRUPO), de modo que, cada célula
da tabela possua apenas um valor de atributo. Isto porque os atributos NÃO-ATÔMICOS não
podem ser implementados nos SGBD RELACIONAIS. A especificação abaixo corresponde à
relação CONTA-CORRENTE após o processo de normalização (1FN):
CONTA-CORRENTE
AGENCIA
NUMERO-CONTA
NOME-CLIENTE
ENDEREÇO-CLIENTE
TIPO-AGENCIA
DESCRIÇÃO-TIPO-AGENCIA
ENDEREÇO-DEPENDENCIA
NUM-DOCUMENTO
DATA-DOCUMENTO
VALOR-LANÇAMENTO
Observações:
• Assim como toda a relação em 1FN, a estrutura de dados acima apresenta redundâncias
e anomalias de atualização;
Bancos de Dados I - 57
5.9.8. ESCOLHA DA CHAVE PRIMÁRIA
Bancos de Dados I - 58
Exemplo: Consideremos a relação CONTA-CORRENTE em 1FN (ITEM 5.5):
CONTA-CORRENTE
AGENCIA
NUMERO-CONTA
NOME-CLIENTE
ENDEREÇO-CLIENTE
TIPO-AGENCIA
DESCRIÇÃO-TIPO-AGENCIA
ENDEREÇO-DEPENDENCIA
NUM-DOCUMENTO
DATA-DOCUMENTO
VALOR-LANÇAMENTO
R1: O atributo “AGÊNCIA-CONTA” isoladamente deve ser descartado, pois, o código de uma
agência relaciona-se com diversos números de conta;
R2: O “NUMERO-CONTA” isoladamente não é adequado, haja vista, que podem existir duas
contas com o mesmo número em agências diferentes;
R5: Se considerássemos possível dois documentos, com o mesmo número, em sua mesma
conta, deveríamos buscar um outro arranjo para a chave-primária.
Bancos de Dados I - 59
5.9.9. SEGUNDA FORMA NORMAL (2FN)
• Está em 1FN;
Para passarmos uma relação da 1FN para a 2FN devemos ELIMINAR as DEPENDÊNCIAS
PARCIAIS. Para tanto, utilizamos o conceito de PROJEÇÃO, gerando novas tabelas contendo
as colunas que se encontram em DFP com a chave primária. A aplicação da 2FN sobre a
relação “CONTA-CORRENTE” resulta na criação das seguintes tabelas:
CONTA
# NUMERO-CONTA
NOME-CLIENTE
ENDEREÇO-CLIENTE
AGENCIA
# NUM-AGENCIA
TIPO-AGENCIA
DESCRIÇÃO-TIPO-AGENCIA
ENDEREÇO-DEPENDENCIA
LANÇAMENTOS
# AGENCIA
# NUMERO-CONTA
# NUM-DOCUMENTO
DATA-DOCUMENTO
VALOR-LANÇAMENTO
Bancos de Dados I - 60
5.9.10. TERCEIRA FORMA NORMAL (3FN)
• Está em 1FN;
• Está em 2FN;
Para passarmos uma relação da 2FN para a 3FN devemos ELIMINAR as DEPENDÊNCIAS
TRANSITIVAS utilizando a operação de PROJEÇÃO. Assim, são geradas novas tabelas
correspondentes as DFT identificadas. Ao decompormos a tabela “CONTA-CORRENTE”,
gerando as relações em 2FN, restou apenas uma DFT, que se encontra na relação
“DEPENDÊNCIA”. Fazendo a PROJEÇÃO dessa relação para eliminar a DFT obtemos as
relações abaixo:
AGENCIA
# NUM-AGENCIA
TIPO-AGENCIA
ENDEREÇO-DEPENDENCIA
TIPO-AGENCIA
# TIPO-AGENCIA
DESCRIÇÃO-TIPO-AGENCIA
CONTA
# NUMERO-CONTA
NOME-CLIENTE
ENDEREÇO-CLIENTE
LANÇAMENTOS
# AGENCIA
# NUMERO-CONTA
# NUM-DOCUMENTO
DATA-DOCUMENTO
VALOR-LANÇAMENTO
Observações:
Bancos de Dados I - 61