Administração e Projeto de banco de dados - Turma 3B

Propaganda
Administração e Projeto de Banco de Dados
Administração e
Projeto de
banco de dados
2011
Conceito de banco de dados. Modelagem conceitual de
dados. Formas normais. Projeto lógico e físico, segundo o
modelo relacional.
Sistemas de
Informação e
Processamento de
dados
Página 1
Administração e Projeto de Banco de Dados
Conteúdo
1.
Introdução e conceitos gerais ____________________ 4
1.1
Banco de dados ________________________________________5
1.2
Sistema de Banco de Dados ______________________________6
1.2.1
Principais componentes de um Sistema de Banco de Dados ________ 6
1.2.1.1
Dados ________________________________________________ 6
1.2.1.2
Hardware _____________________________________________ 7
1.2.1.3
Software ______________________________________________ 7
1.2.1.4
Usuários ______________________________________________ 7
1.2.1.4.1
Usuários finais: _______________________________________ 8
1.2.1.5
Administrador de Banco de Dados (DBA) _____________________ 8
1.2.1.6
Projetista de Banco de Dados (Administrador de Dados) _________ 8
1.2.1.7
Analistas de Sistemas e Programadores de Aplicações __________ 8
1.2.2
Por que um Sistema de Banco de Dados? ______________________ 9
1.2.3
Vantagens tecnológicas da utilização de um Sistema de Banco de
Dados 9
1.2.4
Quando não Utilizar um SGBD ______________________________ 10
1.2.5
Arquitetura de sistemas de banco de dados. ___________________ 11
1.2.5.1
Os três níveis da arquitetura: _____________________________ 11
1.2.5.2
Independência de Dados_________________________________ 12
1.3
Sistema de Gerenciamento de Bancos de Dados (SGBD) _______13
1.3.1
Funções do SGBD ________________________________________ 13
1.3.2
Estrutura geral do SGBD __________________________________ 13
1.4
Linguagens para Manipulação de Dados ____________________16
1.5
Modelos de Bancos de Dados _________________________________ 17
1.5.1
O Modelo Hierárquico _____________________________________ 17
1.5.2
O modelo de Rede _______________________________________ 18
1.5.3
O Modelo Relacional ______________________________________ 20
1.5.4
O Modelo Orientado a Objetos ______________________________ 21
2.
Modelagem de Dados __________________________ 22
2.1
Modelo Conceitual de Dados (MCD) ____________________________ 22
2.1.1
Modelo Lógico de Dados (MLD) _____________________________ 23
2.1.2
Modelo Físico de Dados (MFD) ______________________________ 23
2.2
Modelo E-R __________________________________________23
2.2.1
Entidade _______________________________________________ 25
2.2.2
Atributo _______________________________________________ 26
2.2.3
Descritivo: _____________________________________________ 26
2.2.4
Identificador: ___________________________________________ 26
2.2.5
Composto: _____________________________________________ 26
2.2.6
Derivado: ______________________________________________ 26
2.2.7
Multivalorado: __________________________________________ 26
2.2.8
Relacionamento _________________________________________ 27
2.2.9
Grau do Relacionamento ou Cardinalidade ____________________ 28
2.2.9.1
Relacionamento Um-para-Um (1:1) ________________________ 28
Página 2
Administração e Projeto de Banco de Dados
2.2.9.2
Relacionamento Um-para-Muitos (1:N) _____________________ 29
2.2.9.3
Relacionamento Muitos-para-Muitos (N:N) ___________________ 30
2.3
Participação ______________________________________________ 31
2.4
Relacionamentos Reflexivos (auto-relacionamento) _______________ 33
2.5
Extensões do Modelo Entidade x Relacionamento ____________33
2.5.1
Relacionamentos entre Múltiplas Entidades ____________________ 33
2.5.1.1
Entidade associativa ____________________________________ 34
2.5.1.2
Agregação ____________________________________________ 35
2.5.1.3
Generalização (Supertipos) e Especialização (Subtipos) ________ 36
2.5.1.3.1
Generalização _______________________________________ 36
2.5.1.3.2
Especialização _______________________________________ 37
2.5.1.3.3
Generalização X Especialização __________________________ 37
3.
Bancos de Dados Relacionais ____________________ 38
3.1
Definição ____________________________________________38
3.2
Tabela Relacional _____________________________________39
3.3
O conceito de Chave no Modelo Relacional __________________40
3.3.1
Chave Primária (Primary Key) ______________________________ 40
3.3.2
Chave Estrangeira (Foreign Key) ____________________________ 42
3.3.3
Chave Candidata ________________________________________ 43
3.3.4
Chave Secundária (Secundary Key) __________________________ 43
3.4
Regras de Integridade do Modelo Relacional ________________43
3.4.1
Integridade de Identidade _________________________________ 43
3.4.2
Integridade Referencial ___________________________________ 43
3.5
Características do Modelo Relacional ______________________44
4.
Derivação do Modelo Entidade x Relacionamento para o
Modelo Lógico Relacional ___________________________ 44
4.1
Regras de Conversão ___________________________________44
4.2
Mapeamento de Entidades ___________________________________ 44
4.3
Mapeando atributos ________________________________________ 44
4.4
Relacionamento 1:N (envolvendo entidades distintas) _____________ 44
4.5
Relacionamento 1:N (envolvendo auto-relacionamento) ___________ 45
4.6
Relacionamento 1:1 ________________________________________ 45
4.7
Relacionamento N:N _______________________________________ 47
4.8
Relacionamento Múltiplo ____________________________________ 47
4.9
Generalizações ____________________________________________ 47
5.
Normalização de Dados ________________________ 49
5.1
Definição ____________________________________________49
5.2
Primeira Forma Normal (1FN) ________________________________ 50
5.3
Segunda Forma Normal (2FN) - Dependências Funcionais __________ 51
5.4
- Terceira Forma Normal (3FN) - Dependências Transitivas _________ 51
5.5
Quarta Forma Normal (4FN) _________________________________ 53
5.6
Quinta Forma Normal (5FN) _________________________________ 54
Bibliografia ____________________________________________________ 57
Página 3
Administração e Projeto de Banco de Dados
1. Introdução e conceitos gerais
Igualmente a muitas tecnologias na computação industrial, os fundamentos de
bancos de dados relacionais surgiram na empresa IBM, nas décadas de 1960 e
1970, através de pesquisas de funções de automação de escritório. Foi durante
um período da história na qual empresas descobriram que estava muito
custoso empregar um número grande de pessoas para fazer trabalhos como
armazenar e indexar (organizar) arquivos. Por este motivo, valia a pena os
esforços e investimentos em pesquisar um meio mais barato e ter uma solução
mecânica eficiente.
Muitas pesquisas foram conduzidas durante este período, cujos modelo
hierárquicos, de rede e relacionais e outros modelos foram descobertos, bem
como muita tecnologia utilizada hoje em dia.
Em 1970 um pesquisador da IBM - Ted Codd - publicou o primeiro artigo sobre
bancos de dados relacionais. Este artigo tratava sobre o uso de cálculo e
álgebra relacional para permitir que usuários não técnicos armazenassem e
recuperassem grande quantidade de informações. Codd visionava um sistema
onde o usuário seria capaz de acessar as informações através de comandos em
inglês, onde as informações estariam armazenadas em tabelas.
Devido à natureza técnica deste artigo e a relativa complicação matemática, o
significado e proposição do artigo não foram prontamente realizados.
Entretanto ele levou a IBM a montar um grupo de pesquisa conhecido
como System R (Sistema R).
O projeto do Sistema R era criar um sistema de banco de dados relacional o
qual eventualmente se tornaria um produto. Os primeiros protótipos foram
utilizados por muitas organizações, tais como MIT Sloan School of Management
(uma escola renomada de negócios norte-americana). Novas versões foram
testadas com empresas aviação para rastreamento do manufaturamento de
estoque.
Eventualmente o Sistema R evoluiu para SQL/DS, o qual posteriormente
tornou-se o DB2. A linguagem criada pelo grupo do Sistema R foi aStructured
Query Language (SQL) - Linguagem de Consulta Estruturada). Esta linguagem
tornou-se um padrão na indústria para bancos de dados relacionais e hoje em
dia é um padrão ISO (International Organization for Standardization). A ISO é
a Organização Internacional de Padronização. A linguagem SQL era
originalmente conhecida como SEQUEL (Structured English QUEry Language) e
depois foi abreviada como SQL.
Os primeiros do mercado
Mesmo a IBM sendo a companhia que inventou o conceito original e o padrão
SQL, eles não produziram o primeiro sistema comercial de banco de dados. O
feito foi realizado pela Honeywell Information Systems Inc., cujo sistema foi
lançado em junho de 1976. O sistema era baseado em muitos princípios do
sistema que a IBM concebeu, mas foi modelado e implementado fora da IBM.
O primeiro sistema de banco de dados construído baseado nos padrões SQL
começaram a aparecer no início dos anos 80 com a empresa Oracle através do
Página 4
Administração e Projeto de Banco de Dados
Oracle 2 e depois com a IBM através do SQL/DS, servindo como sistema e
repositório de informações de outras empresas.
Estes sistemas somente nasceram a partir da insistência de um jornal técnico
em utilizar BNF para SQL e este jornal publicou tal artigou. BNF é o conjunto de
sintaxes de linguagem de computador que explica exatamente como cada
comando interage com os outros comandos e o que pode ou não ser realizado,
como os comandos são formados em assim por diante. Por causa da publicação
deste artigo, empresas puderam utilizá-lo para modelar seus próprios sistemas,
os quais seriam 100% compatíveis com o sistema da IBM.
Dado, Informação e Conhecimento
Dado é qualquer elemento identificado em sua forma bruta que, por si só, não
conduz a uma compreensão de determinado fato ou situação (Oliveira, 2005)
Informação é o dado trabalhado que agrupado de maneira lógica permite aos
usuários desta informação tomar decisões. (Oliveira, 2005)
Conhecimento é a informação associada em múltiplos contextos. Segundo
Laudon e Laudon 1999, conhecimento é o conjunto de ferramentas conceituais
e categorias usadas pelos seres humanos para criar, colecionar, armazenar e
compartilhar a informação.
Figura 1 Relação entre dado, informação e conhecimento.
1.1
Banco de dados
Um “banco de dados” pode ser definido como um conjunto de “dados”
devidamente relacionados. Por “dados” podemos compreender como “fatos
conhecidos” que podem ser armazenados e que possuem um significado
implícito. Porém, o significado do termo “banco de dados” é mais restrito que
simplesmente a definição dada acima. Um banco de dados possui as seguintes
propriedades:
 um banco de dados é uma coleção lógica coerente de dados com um
significado inerente; uma disposição desordenada dos dados não pode ser
referenciada como um banco de dados;
Página 5
Administração e Projeto de Banco de Dados
 um banco de dados é projetado, construído e preenchido com dados para
um propósito específico; um banco de dados possui um conjunto pré
definido de usuários e aplicações;
 um banco de dados representa algum aspecto do mundo real, o qual é
chamado de “mini-mundo” ; qualquer alteração efetuada no mini-mundo é
automaticamente refletida no banco de dados.
Um banco de dados pode ser criado e mantido por um conjunto de aplicações
desenvolvidas especialmente para esta tarefa ou por um “Sistema Gerenciador
de Banco de Dados” (SGBD). Um SGBD permite aos usuários criarem e
manipularem bancos de dados de propósito gerais. O conjunto formado por um
banco de dados mais as aplicações que manipulam o mesmo é chamado de
“Sistema de Banco de Dados”.
Sistema de Banco de Dados
1.2
Segundo C. J. Date um sistema de banco de dados é basicamente um
sistema computadorizado de manutenção de registros. O banco de dados, por si
só, pode ser considerado como o equivalente eletrônico de um armário de
arquivamento, ou seja, ele é um repositório ou recipiente para uma coleção de
arquivos de dados computadorizados, de modo geral a finalidade de um banco
de dados é armazenar informações e permitir que os usuários busquem e
atualizem essas informações quando forem requisitadas. As informações em
questão podem ser qualquer coisa que tenha um significado ao individuo ou à
organização a que o sistema deve servir. Os usuários de um sistema podem
realizar (ou melhor, solicitar que o sistema realize) diversas operações
envolvendo tais arquivos, como por exemplo:






Acrescentar novos arquivos ao banco de dados
Inserir dados em arquivos existentes
Buscar dados de arquivos existentes
Alterar dados de arquivos existentes
Excluir dados de arquivos existentes
Remover arquivos existentes do banco de dados
1.2.1
Principais componentes de um Sistema de Banco de Dados
Um sistema de banco de dados envolve 4 componentes principais:




Dados
Hardware
Software
Usuários
1.2.1.1
Dados
É comum em um banco de dados referir-se aos dados como dados
“persistentes”, ou seja, podemos sugerir intuitivamente que esses dados
ficam armazenados no banco de dados e só podem ser removidos por uma
requisição explícita ao mesmo. Isso difere de outros tipos de dados, como, por
exemplo, dados de entrada, dados de saída, filas de trabalho, instruções SQL e
quaisquer outros que possuam natureza transitória.
Página 6
Administração e Projeto de Banco de Dados
Os dados em um
compartilhados
sistema
de
banco
de
dados
são
integrados
e
Por integrado, queremos dizer que o banco de dados pode ser considerado
como uma unificação de vários arquivos que, de outro modo, seriam distintos,
com a eliminação de qualquer redundância parcial ou total entre esses arquivos.
Por compartilhado, queremos dizer que o banco de dados pode ser
compartilhado entre diferentes usuários, no sentido de que diferentes usuários
podem ter acesso aos mesmos dados, possivelmente ao mesmo tempo (acesso
concorrente).
Também devemos fazer uma diferenciação entre dado e informação. O dado é
aquilo que realmente é armazenado no banco de dados, enquanto a informação
refere-se ao significado desses dados para determinado usuário. Por exemplo,
se armazenamos no banco de dados a data de nascimento de um cliente como
sendo 10/01/1970, esse dado nos da a informação que em 20/12/1990 esse
cliente estava com 20 anos.
1.2.1.2
Hardware
Os componentes de hardware do sistema de banco de dados consistem em:

Volumes de armazenamento secundário – normalmente discos
magnéticos -, que são usados para manter os dados armazenados,
juntamente com os dispositivos de E/S (entrada/saída) associados
(unidades de disco etc), controladores de dispositivos, canais de E/S e
assim por diante.

Processador(es) de hardware e memória principal associada, que
são usados para dar suporte à execução do software do sistema de
banco de dados.
1.2.1.3
Software
Entre o banco de dados físico – ou seja, os dados fisicamente armazenados – e
os usuários do sistema existe uma camada de software conhecida como
gerenciador de banco de dados, ou mais freqüentemente conhecido SGBD –
Sistema Gerenciador de Banco de dados. O SGBD será responsável por
tratar todas as requisições citadas anteriormente como acrescentar novos
arquivos ao banco de dados ou inserir dados em arquivos existentes etc..
1.2.1.4
Usuários
Os usuários (finais) acessam o banco de dados interativamente através de
alguma aplicação ou interface on-line que na maioria das vezes podem ser
oferecidas pelo fornecedor do SGBD estas aplicações são internas (built-in), e
não escrita pelos usuários, a maior parte dos sistemas possui pelo menos uma
aplicação built-in, chamada de processador de linguagem de consulta, por meio
do qual o usuário pode emitir requisições ao banco de dados.
Consideremos de forma geral quatro classes de usuários que interagem com o
banco de dados:
Página 7
Administração e Projeto de Banco de Dados
1.2.1.4.1 Usuários finais:
Existem basicamente três categorias de usuários finais que são os usuários
finais do banco de dados, fazendo consultas, atualizações e gerando
documentos:
 Usuários casuais: acessam o banco de dados casualmente, mas que
podem necessitar de diferentes informações a cada acesso; utilizam
sofisticadas linguagens de consulta para especificar suas necessidades;
 Usuários novatos ou paramétricos: utilizam porções pré-definidas do
banco de dados, utilizando consultas pré-estabelecidas que foram
exaustivamente testadas;
 Usuários sofisticados ou de alto nível: são usuários que estão
familiarizados com o banco de dados e realizam consultas complexas
(query).
1.2.1.5
Administrador de Banco de Dados (DBA)
Em um ambiente de banco de dados, o recurso primário é o banco de dados por
si só e o recurso secundário o SGBD e os softwares relacionados. A
administração destes recursos cabe ao Administrador de Banco de Dados, o
qual é responsável pela autorização de acesso ao banco de dados e pela
coordenação e monitoração de seu uso.
São tarefas do DBA:







Definição da estrutura de armazenamento e a estratégia (ou método) de
acesso.
Concessão de autorização para acesso a dados.
Definição de controles de integridade.
Definição de estratégias para cópia de segurança e recuperação.
Monitoramento do desempenho.
Execução de rotinas de desempenho.
Modificação da organização física.
1.2.1.6
Projetista de Banco de Dados (Administrador de Dados)
O Projetista de Banco de Dados é responsável pela identificação dos dados que
devem ser armazenados no banco de dados, escolhendo a estrutura correta
para representar e armazenar dados. Muitas vezes, os projetistas de banco de
dados atuam como “staff” do DBA, assumindo outras responsabilidades após a
construção do banco de dados. É função do projetista também avaliar as
necessidades de cada grupo de usuários para definir as visões que serão
necessárias, integrando-as, fazendo com que o banco de dados seja capaz de
atender a todas as necessidades dos usuários.
São tarefas do AD: Definição e atualização do esquema do banco de dados.
1.2.1.7
Analistas de Sistemas e Programadores de Aplicações
Os analistas determinam os requisitos dos usuários finais e desenvolvem
especificações para transações que atendam estes requisitos, e os
programadores são os responsáveis pelo desenvolvimento de aplicações em
linguagens como Java, Cobol, C#, C++, VB.net e etc. que fazem chamadas ou
requisições ao SGBD através de instruções SQL
Página 8
Administração e Projeto de Banco de Dados
1.2.2
Por que um Sistema de Banco de Dados?
As vantagens de um sistema de banco de dados em relação aos métodos
tradicionais, baseados em papel são muitas, como por exemplo:

Densidade: Não há a necessidade de arquivos de papel, possivelmente
volumosos.

Velocidade: A máquina pode obter e atualizar dados com uma
velocidade muito maior do que o ser humano.

Atualidade: Informações precisas e atualizadas estão disponíveis a
qualquer momento sob consulta.

Proteção: Os dados podem ser bem protegidos contra a perda não
intencional e acesso ilegal.
1.2.3

Vantagens tecnológicas da utilização de um Sistema de Banco
de Dados
Controle de Redundância
A redundância consiste no armazenamento de uma mesma informação
em locais diferentes, provocando inconsistências. Em um Banco de
Dados as informações só se encontram armazenadas em um único local,
não existindo duplicação descontrolada dos dados.

Compartilhamento de Dados
Um banco de dados multiusuário deve permitir que múltiplos usuários
acessem o banco de dados ao mesmo tempo. Este fator é essencial para
que múltiplas aplicações integradas possam acessar o banco.
O banco de dados multiusuário deve manter o controle de concorrência
para assegurar que o resultado de atualizações seja correto. Um banco
de dados multiusuário deve fornecer recursos para a construção de
múltiplas visões.

Restrição a Acesso não Autorizado
O banco de dados deve dispor de recursos que possibilitem selecionar a
autoridade de cada usuário. Assim um usuário poderá realizar qualquer
tipo de acesso, outros poderão ler alguns dados e atualizar outros e
outros ainda poderão somente acessar um conjunto restrito de dados
para escrita e leitura.

Tolerância a Falhas
Um banco de dados deve fornecer recursos para recuperação de falhas
tanto de software quanto de hardware.

Integridade
Um banco de dados deverá impedir que aplicações ou acessos pelas
interfaces possam comprometer a integridade dos dados.
Página 9
Administração e Projeto de Banco de Dados

Suporte a transações
Uma transação é uma unidade lógica de trabalho (mais precisamente,
uma unidade lógica de trabalho de banco de dados), em geral
envolvendo diversas operações de banco de dados, onde uma operação
só pode ser validada pelo banco de dados se todas as demais operações
da transação também o forem.
Exemplo: Transação bancária de transferência de dinheiro. A transação
só pode ser validada se as operações de débito em uma conta origem e
crédito em uma conta destino forem validados.
1.2.4
Quando não Utilizar um SGBD
Em algumas situações, o uso de um SGBD pode representar uma carga
desnecessária aos custos quando comparado à abordagem processamento
tradicional de arquivos como, por exemplo:

Generalidade que um SGBD fornece na definição e processamento de
dados;

Sobrecarga na provisão de controle de segurança,
concorrência, recuperação e integração de funções.

Problemas adicionais podem surgir caso os projetistas de banco de dados
ou os administradores de banco de dados não elaborem os projetos
corretamente ou se as aplicações não são implementadas de forma
apropriada. Se o DBA não administrar o banco de dados de forma
apropriada, tanto a segurança quanto a integridade dos sistemas podem
ser comprometidas. A sobrecarga causada pelo uso de um SGBD e a má
administração justificam a utilização da abordagem processamento
tradicional de arquivos em casos como:

O banco de dados e as aplicações são simples, bem definidas e não se
espera mudanças no projeto;

A necessidade de processamento em tempo real de certas aplicações,
que são terrivelmente prejudicadas pela sobrecarga causada pelo uso de
um SGBD;

Não haverá múltiplo acesso ao banco de dados.
controle
de
Página 10
Administração e Projeto de Banco de Dados
1.2.5
Arquitetura de sistemas de banco de dados.
A arquitetura ANSI/SPARC (American National Standards Institute / Standards
Planning And Requirements Committee) ou “Tree-Schemas” é uma proposta do
Study Group on Data Base Management Systems para representar os sistemas
de banco de dados. A meta desta arquitetura é separar as aplicações de
usuários da base de dados física. Nessa arquitetura a base de dados pode ser
definida em três níveis: Nível Externo, Nível Conceitual e Nível Interno ou
Físico.
1.2.5.1
Os três níveis da arquitetura:

O nível externo ou visão (também conhecido como nível lógico de
usuário) é o mais próximo dos usuários, ou seja, é aquele que se ocupa
de como os dados são vistos por usuários individuais, como os dados
estão organizados para formar a informação para cada usuário. O nível
externo possui esquemas externos ou visões e não depende do sistema
gerenciador de banco de dados. Cada esquema descreve a visão da
informação de um grupo de usuários. Cada visão descreve, tipicamente,
à parte da base de dados que um particular grupo de usuários está
interessado e esconde o resto da base de dados do mesmo.

O nível conceitual (também conhecido como nível lógico de
comunidade, ou as vezes apenas como nível lógico, sem qualificação)
possuí um esquema conceitual que representa a estrutura da base de
dados que é o produto da normalização. È uma visão mais apropriada
para os projetistas onde todos os conjuntos de dados do nível externo
estão quebrados em pedaços lógicos, fundidos para reduzir repetição, e
estruturados para eliminar dependências. O esquema conceitual é uma
descrição global da base de dados, que omite detalhes da estrutura de
armazenamento físico e se concentra na descrição de entidades, tipos de
dados, relacionamento e restrições (Diagrama de Entidade e
Relacionamento).

O nível Interno ou Físico (também conhecido como nível de
armazenamento) é o mais próximo do meio de armazenamento físico, ou
seja, é aquele que se ocupa do modo como os dados, ou melhor,
registros e arquivos são fisicamente armazenados dentro da base de
dados e depende fortemente do SGBD selecionado. É uma visão mais
apropriada aos programadores de base de dados. Todos os conjuntos de
dados do nível físico estão organizados para aperfeiçoar a velocidade de
execução, maximizar a disponibilidade dos dados, e manter os dados
seguros.
Página 11
Administração e Projeto de Banco de Dados
Figura 2 Os três níveis da arquitetura.
Analisando a imagem podemos observar que o nível externo se preocupa
com as percepções dos usuários individuais, enquanto o nível conceitual está
preocupado com uma percepção da comunidade de usuários. Na maioria dos
casos alguns usuários não terão acesso a toda informação do banco de
dados, mas somente acessarão algumas partes das informações contidas no
mesmo; assim, haverá muitas “visões externas” distintas, cada qual
consistindo em uma representação abstrata de alguma parte da informação
contida no banco de dados, e haverá uma “visão conceitual”, consistindo em
uma representação igualmente abstrata do banco de dados em sua
totalidade. Do mesmo modo haverá uma “visão interna”, representando o
modo como os dados estão armazenados internamente.
1.2.5.2
Independência de Dados
A “independência de dados” pode ser definida como a capacidade de se alterar
um esquema em um nível em um banco de dados sem ter que alterar um nível
superior (figura anterior). Existem dois tipos de independência de dados:

Independência de dados lógica: é a capacidade de alterar o esquema
conceitual sem ter que alterar o esquema externo ou as aplicações do
usuário, ou seja, podemos alterar o esquema conceitual sem a
necessidade de reescrever os programas aplicativos. Algumas vezes é
necessário alterar a estrutura lógica do banco de dados como por
exemplo adicionando alguma nova entidade (tabela) ao banco.

Independência de dados física: é a capacidade de alterar o esquema
interno sem ter que alterar o esquema conceitual, o esquema externo ou
as aplicações do usuário, ou seja, podemos alterar o esquema físico sem
Página 12
Administração e Projeto de Banco de Dados
a necessidade de reescrever os programas aplicativos. Algumas vezes
são necessárias modificações no nível físico para melhorar o
desempenho.
Sistema
(SGBD)
1.3
de
Gerenciamento
de
Bancos
de
Dados
Um sistema gerenciador de banco de dados (SGBD) é responsável por
armazenar dados de forma confiável e permitir fácil recuperação e atualização
desses dados. Um SGBD relacional (SGBDR ou RDBMS relational database
management system) armazena dados de forma relacional, isto é na forma de
linhas e colunas.
A seqüência abaixo ilustra o papel do sistema de gerência de banco de dados,
de forma conceitual:
1. O usuário emite uma solicitação de acesso.
2. O SGBD intercepta a solicitação e a analisa.
3. O SGBD inspeciona os esquemas externos (ou sub-esquemas)
relacionados àquele usuário, os mapeamentos entre os três níveis, e a
definição da estrutura de armazenamento.
4. O SGBD realiza as operações solicitadas no banco de dados armazenado.
Exemplos de SGBD: Oracle, Microsoft SQL Server. IBM DB2, SyBase, Paradox,
Progress, MySql, Microsoft Access etc.
1.3.1








1.3.2
Funções do SGBD
Interação com o sistema de arquivos do sistema operacional.
Cumprimento da integridade.
Cumprimento da segurança.
Cópias de segurança (“backup”) e recuperação.
Controle de concorrência.
Otimização e execução dos comandos DML.
Dicionário de Dados.
Desempenho.
Estrutura geral do SGBD
Um sistema de banco de dados é dividido em módulos que tratam de cada uma
das responsabilidades do sistema geral. Na maioria dos casos, o sistema
operacional do computador fornece apenas os serviços mais básicos e o sistema
de banco de dados precisa ser construído sobre essa base. Portanto, o projeto
do sistema de banco de dados precisa incluir considerações sobre a interface
entre o sistema de banco de dados e o sistema operacional.
Os componentes funcionais de um sistema de banco de dados incluem:


Gerenciador de arquivos, que gerencia a alocação do espaço na
armazenagem do disco e as estruturas de dados usadas para representar
a informação armazenada no disco.
Gerenciador do banco de dados, que fornece a interface entre os
dados de baixo nível armazenados no disco e os programas aplicativos e
de consulta submetidos ao sistema.
Página 13
Administração e Projeto de Banco de Dados



Processador de consultas, que traduz os comandos numa linguagem
de consulta para instruções de baixo nível que o gerenciador do banco de
dados pode interpretar. Além disso, o processador de consultas tenta
transformar uma requisição do usuário em uma forma compatível e mais
eficiente com respeito ao banco de dados, encontrando uma boa
estratégia para executar a consulta.
Pré-compilador da DML, que converte comandos da DML embutidos
em um aplicativo para chamadas de procedimento normal na linguagem
hospedeira. O pré-compilador precisa interagir com o processador de
consultas pra gerar o código apropriado.
Compilador da DDL, que converte comandos da DDL em um conjunto
de tabelas contendo metadados ou "dados sobre dados".
Adicionalmente, diversas estruturas de dados são requeridas como parte da
implementação do sistema físico, incluindo:



Arquivos de dados, que armazenam o banco de dados propriamente
dito.
Dicionário de dados, que armazena metadados sobre a estrutura do
banco de dados. O dicionário de dados é usado com freqüência. Assim,
deve-se dar grande ênfase no desenvolvimento de um bom projeto e
implementação eficiente do dicionário.
Índices, que fornecem acesso rápido aos itens de dados guardando
determinados valores.
Estrutura básica de um sistema gerenciador de Banco de dados
Figura 3 Estrutura básica de um SGBD
Página 14
Administração e Projeto de Banco de Dados
Visão expandida da arquitetura do sistema de banco de dados
Figura 4 Estrutura expandida de um SGBD
Página 15
Administração e Projeto de Banco de Dados
1.4
Linguagens para Manipulação de Dados
Quando tratamos de banco de dados, e desejamos criar uma estrutura lógica
para armazenamento e organização destes dados e realizar consultas,
alterações, restrições de acesso, definições de esquemas e etc, fazemos uso de
uma linguagem que nos auxilie e facilite realizar esta tarefa.
As Linguagens para Manipulação de Dados são divididas em três grupos de
comandos:

DDL (Data Definition Language - Linguagem de Definição de Dados)
Para a criação dos objetos do banco de dados (tabelas, índices,
relacionamentos, visões etc) utilizamos a linguagem DDL (Data
Definition Language - Linguagem de Definição de Dados). O SGBD possui
um compilador DDL que permite a execução das declarações para
identificar as descrições dos esquemas e para armazená-las no catálogo
do SGBD.

DML (Data Manipulation Language - Linguagem de Manipulação de
Dados)
Uma vez que o banco de dados esteja criado, usa-se uma linguagem
para fazer a manipulação dos dados (ler, inserir, alterar e excluir), a DML
(Data Manipulation Language - Linguagem de Manipulação de Dados).

DCL (Data Control Language)
Linguagem de Controle de Dados – Utilizada para tratar as permissões
do banco de dados como a concessão (GRANT) ou revogação (REVOKE)
de privilégios no banco de dados.
Página 16
Administração e Projeto de Banco de Dados
1.5
Modelos de Bancos de Dados
Existem diversos modelos de banco de dados, e cada modelo tem suas
características de manipulação e armazenamento dos dados, dentre estes
modelos vamos conhecer os quatro principais e mais comuns modelos
encontrados no mercado, são eles: o modelo hierárquico, em rede, relacional e
orientado a objetos.
Para explicarmos cada modelo, iremos utilizar as informações da tabela abaixo:
Nome
João
Ana
Município
SBC
SP
Estado
SP
SP
Pedro
Osasco
SP
1.5.1
Conta
A102
A101
A202
A305
Saldo
400,00
500,00
900,00
350,00
O Modelo Hierárquico
O modelo hierárquico foi o primeiro a ser reconhecido como um modelo de
dados. Seu desenvolvimento somente foi possível devido à consolidação dos
discos de armazenamento endereçáveis, pois esses discos possibilitaram a
exploração de sua estrutura de endereçamento físico para viabilizar a
representação hierárquica das informações. Nesse modelo de dados, os dados
são estruturados em hierarquias ou árvores. Os nós das hierarquias contêm
ocorrências de registros, onde cada registro é uma coleção de campos
(atributos), cada um contendo apenas uma informação. O registro da hierarquia
que precede a outros é o registro-pai, os outros são chamados de registrosfilhos. Um registro é, em muitos aspectos, similar a uma entidade do modelo
entidade x relacionamento que veremos mais a frente. Cada registro é uma
coleção de campos (atributos), cada qual contendo somente um valor. Uma
ligação é uma associação entre dois registros. O relacionamento entre um
registro-pai e vários registros-filhos possui cardinalidade 1:N. Os dados
organizados segundo este modelo podem ser acessados segundo uma
seqüência hierárquica com uma navegação do topo para as folhas e da
esquerda para a direita. Um registro pode estar associado a vários registros
diferentes, desde que seja replicado. A replicação possui duas grandes
desvantagens: pode causar inconsistência de dados quando houver atualização
e o desperdício de espaço é inevitável. O sistema comercial mais divulgado no
modelo hierárquico foi o Information Management System da IBM Corp(IMS).
Grande parte das restrições e consistências de dados estava contida dentro dos
programas escritos para as aplicações. Era necessário escrever programas na
ordem para acessar o banco de dados
A representação gráfica deste modelo se realiza mediante a criação de uma
árvore invertida, os diferentes níveis ficam unidos mediante relações.
Página 17
Administração e Projeto de Banco de Dados
Figura 5 Banco de Dados Modelo Hierárquico
Neste modelo só se podem representar relações 1:M (uma para muitos), por
isso apresenta vários inconvenientes como:





Não se admitem relações N:M (muitos para muitos)
Um segmento filho não pode ter mais de um pai.
Não se permitem mais de uma relação entre dois segmentos.
Para acessar a qualquer segmento é necessário começar pelo segmento
raiz
A árvore se deve percorrer na ordem designada.
Exemplos de banco de dados Hierárquico: IBM’s IMS (DL/1, IMS DB, IMS DC),
SYSTEM 2000
1.5.2
O modelo de Rede
O modelo em redes surgiu como uma extensão ao modelo hierárquico,
eliminando o conceito de hierarquia e permitindo que um mesmo registro
estivesse envolvido em várias associações. No modelo em rede, os registros são
organizados em grafos onde aparece um único tipo de associação (set) que
define uma relação 1:N entre 2 tipos de registros: proprietário e membro. Desta
maneira, dados dois relacionamentos 1:N entre os registros A e D e entre os
registros C e D é possível construir um relacionamento M:N entre A e D. O
gerenciador Data Base Task Group (DBTG) da CODASYL (Committee on Data
Systems and Languages) estabeleceu uma norma para este modelo de banco de
dados, com linguagem própria para definição e manipulação de dados. Os dados
tinham uma forma limitada de independência física. A única garantia era que o
sistema deveria recuperar os dados para as aplicações como se eles estivessem
armazenados na maneira indicada nos esquemas. Os geradores de relatórios da
CODASYL também definiram sintaxes para dois aspectos chaves dos sistemas
gerenciadores de dados: concorrência e segurança. O mecanismo de segurança
fornecia uma facilidade na qual parte do banco de dados (ou área) pudesse ser
bloqueada para prevenir acessos simultâneos, quando necessário. A sintaxe da
segurança permitia que uma senha fosse associada a cada objeto descrito no
esquema. Ao contrário do Modelo Hierárquico, em que qualquer acesso aos
dados passa pela raiz, o modelo em rede possibilita acesso a qualquer nó da
rede sem passar pela raiz. No Modelo em Rede o sistema comercial mais
divulgado é o CAIDMS da Computer Associates. Nesta estrutura qualquer
componente pode se relacionar com qualquer outro. Diferentemente do modelo
hierárquico, neste modelo, um filho pode ter vários pais.
Página 18
Administração e Projeto de Banco de Dados
Figura 6 Banco de Dados Modelo de Rede
Os conceitos básicos no modelo em rede são:



O tipo de registro, que representa um nó.
Elemento, que é um campo de dados.
Agregado de dados, que define um conjunto de dados com nome.
Este modelo de dados permite representar relações N:M (muitos para muitos)
Exemplo de banco de dados de Rede: IDMS (Cullinet), DMS 1100 (Sperry),
TOTAL (Cincom Systems)
Página 19
Administração e Projeto de Banco de Dados
1.5.3
O Modelo Relacional
O Modelo Relacional de banco de dados é o modelo no qual iremos nos
aprofundar nesse curso, por ser um modelo de fácil entendimento e o mais
utilizado atualmente. Ele representa os dados por meio de conceitos
matemáticos da teoria dos conjuntos. Dirigido, este modelo foi proposto pelo
pesquisador Edgar Ted Frank Codd em jun/1970, este modelo melhora a visão
dos dados, a abordagem relacional faz com que o banco de dados seja
representado como um conjunto de tabelas bidimensionais, originadas em
linhas e colunas. A relação entre duas tabelas é feita através de colunas em
comum (chave primária e chave estrangeira). O modelo relacional não tem
caminhos pré-definidos para se fazer acesso aos dados como nos modelos que o
precederam. O modelo relacional implementa estruturas de dados organizadas
em relações. Porém, para trabalhar com essas tabelas, algumas restrições
precisaram ser impostas para evitar aspectos indesejáveis, como: Repetição de
informação, incapacidade de representar parte da informação e perda de
informação. Essas restrições são: integridade referencial, chaves e integridade
de junções de relações.
Figura 7 Banco de Dados Relacional
Algumas de suas principais características são:



Pode ser entendido e usado por qualquer usuário.
Permite ampliar o esquema conceitual sem modificar as aplicações de
gerenciamento.
Os usuários não necessitam saber onde se encontram os dados
fisicamente.
O elemento principal deste modelo é a relação que se representa mediante uma
tabela.
Exemplo de banco de dados Relacional: Oracle, DB2(IBM), MySql (MySql AB),
Firebird
(Open
Source),
PostgreSQL
(Open
Source),
SQL
Server
(Microsoft),Sybase Adaptative Server (Sybase)
Página 20
Administração e Projeto de Banco de Dados
1.5.4
O Modelo Orientado a Objetos
Os bancos de dados orientados a objeto começaram a se tornar comercialmente
viáveis em meados de 1980. A motivação para seu surgimento está em função
dos limites de armazenamento e representação semântica impostas no modelo
relacional. Alguns exemplos são os sistemas de informações geográficas (SIG),
os sistemas CAD e CAM, que são mais facilmente construídos usando tipos
complexos de dados. A habilidade para criar os tipos de dados necessários é
uma característica das linguagens de programação orientadas a objetos.
Contudo, estes sistemas necessitam guardar representações das estruturas de
dados que utilizam no armazenamento permanente. A estrutura padrão para os
bancos de dados orientados a objetos foi feita pelo Object Database
Management Group (ODMG), basicamente um sistema em que a unidade de
armazenamento é o objeto, com o mesmo conceito das linguagens de
programação orientadas a objetos. A diferença fundamental é a persistência dos
objetos, ou seja, os objetos continuam a existir mesmo após o encerramento do
programa. Através das construções orientadas a objeto, os programadores
podem esconder os detalhes da implementação de seus módulos, compartilhar
a referência a objetos e expandir seus sistemas através de módulos existentes.
Hoje, porém, acredita-se que os Bancos de Dados Orientados a Objetos serão
usados em aplicações especializadas, enquanto os sistemas relacionais
continuarão a sustentar os negócios tradicionais, onde as estruturas de dados
baseadas em relações são suficientes. O diagrama de classes UML serve
geralmente como o esquema para o modelo de dados orientado a objetos.
Figura 8 Banco de Dados Orientado a Objetos
Algumas de suas principais características são:



Os dados são armazenados como objetos
Os objetos são organizados numa hierarquia de tipos, e subtipos que
recebem as características de seus supertipos.
O acesso aos dados pode ser rápido porque as junções geralmente não
são necessárias.
Exemplo de banco de dados OO: CACHÉ, VERSANT,
GEMSTONE, JASMINE, MATISSE, Objectivity/DB, Ozone.
DB4Objects,
O2,
Página 21
Administração e Projeto de Banco de Dados
2. Modelagem de Dados
Para começarmos a tratar de modelagem de dados, vamos primeiramente
definir modelo.
Modelo: é a representação abstrata e simplificada de um sistema real, com a
qual se pode explicar ou testar o seu comportamento, em seu todo ou em
partes.
“Temos que modelar o mundo observado, seja ele real ou imaginário. Paulo
Cougo”
O processo de modelagem de um banco de dados é dividido em três etapas:



2.1
Modelo Conceitual
Modelo Lógico
Modelo Físico
Modelo Conceitual de Dados (MCD)
O Modelo Conceitual representa e/ou descreve a realidade do ambiente
observado, constituindo-se em uma visão global dos principais dados e
relacionamentos (estruturas de informação), independente das restrições de
implementação impostas por tecnologias, técnicas de implementação ou
dispositivos físicos, ou seja, na etapa de elaboração do modelo conceitual,
pouco importa se o sistema escolhido será um SGBD Relacional, de Rede ou
Hierárquico.
Quando se fala em Modelo Conceitual, estamos nos referindo a primeira etapa
do projeto de um sistema de aplicação em banco de dados, ele deve ser
utilizado para o nível de conversação, entendimento, transmissão, validação de
conceitos, mapeamento do ambiente etc...
O objetivo do Modelo Conceitual é descrever as informações contidas em uma
realidade, as quais irão estar armazenadas em um banco de dados. É uma
descrição em alto nível (macro-definição), mas que tem a preocupação de
captar e retratar toda a realidade de uma organização, setor, repartição,
departamento, negócio etc.
Como dizemos no inicio deste tópico, o Modelo Conceitual não retrata os
aspectos ligados à abordagem do banco de dados que será utilizado e tão pouco
se preocupa com as formas de acesso ou estruturas físicas implementadas por
um SGBD (Sistema Gerenciador de Banco de Dados) específico.
O resultado de um Modelo Conceitual é um esquema que representa a realidade
das informações existentes, assim como as estruturas de dados que
representam estas informações.
Página 22
Administração e Projeto de Banco de Dados
2.1.1
Modelo Lógico de Dados (MLD)
Defini-se como modelo lógico de dados aquele em que os objetos, suas
características e relacionamentos têm a representação de acordo com as regras
de implementação e limitantes impostos por algum tipo de tecnologia.
O Modelo Lógico tem o seu início a partir do Modelo Conceitual, levando em
consideração a abordagem de rede, hierárquica, relacional ou orientada a
objeto, esse modelo deve ser elaborado respeitando-se e implementando-se
conceitos tais como chaves de acesso, controles de chaves duplicadas,
normalização, ponteiros, headers, integridade referencial, entre outros. Estas
são preocupações e necessidades somente relevantes ao Modelo Lógico, jamais
devem ser levadas ao Modelo conceitual.
O Modelo Lógico descreve as estruturas que estarão contidas no banco de
dados, de acordo com as possibilidades permitidas pela abordagem, mas sem
considerar, ainda, nenhuma característica específica de um Sistema Gerenciador
de Banco de Dados (SGBD), resultando em um esquema lógico de dados sob a
ótica de uma das abordagens citadas.
2.1.2
Modelo Físico de Dados (MFD)
O Modelo Físico irá partir do Modelo Lógico e descreve as estruturas físicas de
armazenamento de dados, tais como: tamanho de campos, índices, tipo de
preenchimento destes campos, nomenclaturas, etc. Será projetado de acordo
com os requisitos de processamento e uso mais econômico dos recursos
computacionais. Este modelo detalha o estudo dos métodos de acesso ao SGBD,
para elaboração dos índices de cada informação colocada nos Modelos
Conceituais e Lógicos.
Cada empresa fornecedora do SGBD poderá definir um diferente modo de
implementação física das características e recursos necessários para o
armazenamento e manipulação das estruturas de dados
Esta é a etapa final do projeto de Banco de Dados, na qual será utilizada a
Linguagem de Definição de Dados do SGBD (DDL), para a criação física do
banco de dados proposto.
2.2
Modelo E-R
A abordagem Entidade-Relacionamento
Em março de 1976, Peter P. Chen publicou um trabalho intitulado “The EntityRelationship Model: Toward the unified view of data”, no qual definia uma
possível abordagem para o processo de modelagem dos dados. Esse trabalho,
após sua divulgação e ampla aceitação, passou a ser considerado como um
referencial definitivo para o processo de modelagem de dados. A abordagem
entidade-relacionamento é composta de uma técnica de diagramação e de um
conjunto de conceitos que devem ser entendidos e respeitados. O modelo
entidade-relacionamento é um modelo de dados conceitual de alto nível,
cujos conceitos foram projetados para estar o mais próximo possível da visão
que o usuário tem dos dados, não se preocupando em representar como estes
dados estarão realmente armazenados. O modelo ER é utilizado principalmente
durante o processo de projeto de banco de dados.
Página 23
Administração e Projeto de Banco de Dados
O modelo ER utiliza, basicamente, os retângulos para representar as
entidades, losangos para representar os relacionamentos, elipses (balões)
para indicar e alocar os atributos, linhas que unem os atributos aos conjuntos
de entidades e os conjuntos de entidades aos relacionamentos, elipses duplas
que representam os relacionamentos multivalorados e linhas duplas que
indicam participação total de uma entidade em um conjunto de
relacionamentos.
O diagrama ER fornece uma visão lógica do banco de dados, fornecendo um
conceito mais generalizado de como estão estruturados os dados de um
sistema.
Os objetos que compõem o diagrama ER estão listados a seguir, na figura
abaixo:
Página 24
Administração e Projeto de Banco de Dados
Os principais conceitos utilizados para a construção do modelo ER são:
Entidade
Atributo
Relacionamento
Cardinalidade




2.2.1
Entidade
Defini-se entidade como aquele objeto que existe no mundo real com uma
identificação distinta e um significado próprio, ou seja, é todo objeto concreto
ou abstrato que tem existência própria, quando considerado o âmbito de um
negócio. São coisas sobre as quais desejamos arquivar informações. São as
“coisas” que existem no negócio, ou ainda, descrevem o negócio em si.
A entidade é representada por um retângulo, conforme as figuras abaixo:
Cliente
Fornecedor
Pedido
Aluno
Em um universo observado, estaremos reconhecendo objetos (coisas). Estes
objetos estarão sendo percebidos como elementos individualizados, mas, ao
mesmo tempo, poderão ser enquadrados em um conjunto ou categoria em
função de suas semelhanças, estes objetos neste processo de observação serão
as entidades, vejamos um exemplo:
Exemplo
Ao observarmos um ambiente de produção de uma fábrica, nos defrontaremos
com:

Maquinas de produção de peças.

Funcionários operadores dessas máquinas.

Conjunto de ferramentas para operar e dar manutenção as máquinas.

Procedimentos de operações a serem realizadas.

Procedimentos de medições e verificação da qualidade das peças
produzidas.

Máquinas recuperadoras de peças.

Funcionários responsáveis pela verificação da qualidade das peças.

Peças produzidas nos mais diversos formatos.
Dentre esses elementos observados, poderemos perceber a existência de vários
conjuntos distintos de elementos (entidades), entre eles:

Máquina – que representa todas as máquinas observadas.

Funcionário – que representa todos os funcionários.

Ferramenta – que representa todas as ferramentas.

Peças – que representará todos os tipos de peças produzidas.
Página 25
Administração e Projeto de Banco de Dados
2.2.2
Atributo
É uma informação que caracteriza uma entidade ou um relacionamento. Toda
entidade possui atributos, mas nem todo relacionamento é caracterizado por
atributos. Os atributos podem ser classificados em: Descritivo, Identificador,
Composto, Derivado e Multivalorado.
2.2.3
Descritivo:
É utilizado para descrever a entidade.
Atributo
Descritivo
2.2.4
Identificador:
É utilizado para identificar unicamente uma linha da entidade.
Identificador
2.2.5
Atributo
Composto:
É um conjunto de tributos simples que pode ser referido como um único
atributo.
Atributo
Composto
Agregado
agregado
Agregado
2.2.6
Derivado:
Pode ter um valor que é derivável de valores de outros atributos.
Atributo
Derivado
2.2.7
Multivalorado:
Pode ser preenchido com muitos valores.
Multivalorado
NomeAtributo
atributo
Página 26
Administração e Projeto de Banco de Dados
Exemplo de uma entidade e seus diferentes tipos de atributos:
Aluno
Data Nasc.
RA
Rua
Idade
Endereço
Data Nasc.
Número
Bairro
Telefones
Cidade
2.2.8
Relacionamento
É a ligação entre duas ou mais entidades. Ao observarmos os objetos e
reconhecê-los, estaremos quase que imediatamente, reconhecendo as relações
existentes entre eles. Muitas vezes a própria observação de um relacionamento
será o ponto de partida para a identificação dos objetos que dele participam. O
que estabelecerá associações válidas ou não será simplesmente o grau de
fidelidade e completeza que consigamos atingir durante o processo de
modelagem.
O relacionamento é representado por um losango.
Exemplo:
Aluno
Freqüenta
Disciplina
Assim, se desejarmos ter, conceitualmente, representado um ambiente
observado onde “Anderson é proprietário de um jipe amarelo”, podemos segui a
seguinte estratégia:
1. Identificar os objetos envolvidos (entidades):

Pessoa (Anderson)

Carro (Jipe Amarelo)
2. Caracterizar os objetos (atributos):

Pessoa (nome, data nascimento, número CPF e etc.)

Carro (marca, cor, ano de fabricação, modelo etc.)
3. Representar os objetos:
Pessoa
Carro
4. Identificar o relacionamento entre os objetos:
Página 27
Administração e Projeto de Banco de Dados

Relacionamento: Pessoa é proprietária de Carro
5. Representar o relacionamento
Pessoa
2.2.9
É
Proprietária
Carro
Grau do Relacionamento ou Cardinalidade
Quando temos um relacionamento entre duas entidades, o número de
ocorrências de uma entidade que está associado a ocorrências de outra
entidade determina o Grau do Relacionamento ou Cardinalidade deste fato.
Quando questionamos se um homem poderia estar casado com mais de uma
mulher, estamos na realidade questionando o grau de relacionamento que
existe entre as entidades Homem e Mulher.
Em modelagem, ao se tratar de relacionamentos, podemos apresentar os
mesmos através de três possibilidades:

Um-para-Um (1:1)

Um-para-Muitos (1:N)

Muitos-para-Muitos (N:N) ou (M:N)
É o grau de ligação entre as entidades. É representada por “0”, “1” ou “N”,
significando “zero”, “um” ou “muitos” respectivamente.
Forma de leitura
Entidade – Relacionamento – Cardinalidade – Entidade. A leitura deve ser feita
em ambas as direções.
2.2.9.1
Relacionamento Um-para-Um (1:1)
Marido
1
1
Casado
Esposa
Pois um Marido só é casado com uma Esposa, e, também, uma esposa só
estará casada com um Marido.
mínimo
Cardinalidade Mínima e Máxima
máximo
Curso
1,1
Coordena
1,1
Coordenador
Página 28
Administração e Projeto de Banco de Dados
Um Curso é coordenado por no mínimo 1 e no máximo 1 coordenador.
Um coordenador coordena no mínimo 1 e no máximo 1 curso.
PD
Douglas
Têxtil
Pedro
Eletrônica
2.2.9.2
Ana
Relacionamento Um-para-Muitos (1:N)
1
Empresa
N
Filial
Possui
Pois uma empresa pode vir a ter 0 (nenhuma), 1 (uma), ou N (diversas)
filiais em sua estrutura operacional, mas desde que essa filial seja de uma
dada empresa não poderá ser de nenhuma outra.
Cardinalidade Mínima e Máxima
Vendedor
0,N
0,1
Atende
Região
Um vendedor atende zero ou uma região.
Uma região é atendida por zero ou muitos vendedores.
Mário
Carla
João
Campinas
Piracicaba
Sorocaba
Ana
Página 29
Administração e Projeto de Banco de Dados
2.2.9.3
Relacionamento Muitos-para-Muitos (N:N)
N
Livro
N
Escrito
Autor
Pois certo livro pode ser escrito pó um conjunto de autores (3, por
exemplo), e, por sua vez, cada um dos autores pode escrever mais de um
livro.
Cardinalidade Mínima e Máxima
0.N
Fornecedor
0.N
Fornece
Produto
Um fornecedor fornece zero ou muitos produtos.
Um produto é fornecido por zero ou muitos fornecedores.
W
A
X
B
Y
C
Z
D
E
Página 30
Administração e Projeto de Banco de Dados
2.3
Participação
Outra restrição muito importante é a participação. A participação define a
existência de uma entidade através do relacionamento, podendo ser parcial
ou total. Veja um exemplo.
EMPREGADO
Gerencia
DEPARTAMENTO
José
Maria
Fernanda
Moacir
Pedro
Paula
Luiz
Empregado
Compras
Projetos
RH
Gerencia
Departamento
A participação do empregado é parcial, pois nem todo empregado gerencia
um departamento, porém a participação do departamento neste
relacionamento é total, pois todo departamento precisa ser gerenciado por
um empregado. Desta forma, todas as entidades do tipo DEPARTAMENTO
precisam participar do relacionamento, mas nem todas as entidade do tipo
entidade EMPREGADO precisam participar do relacionamento.
Estas restrições são chamadas de restrições estruturais.
Página 31
Administração e Projeto de Banco de Dados
2.3.1
Considerações sobre Entidades Fortes e Entidades Fracas
Alguns
critério
fraca é
sentido
autores adotam, para fins de caracterização de uma entidade, um
que as classifica em fortes (regulares) ou fracas. Onde uma entidade
uma entidade cuja existência depende de alguma outra entidade, no
de que ela, não poder existir se essa outra entidade também não existir.
Esta caracterização se dá através da analise de existência de duas condições
básicas:

Dependência de existência.
Se uma entidade B depender de uma entidade A para existir, teremos
em B uma entidade fraca, enquanto que A, se não depender de ninguém
para existir, será considerada uma entidade forte.

Dependência de identificador.
Se uma entidade não possui atributos suficientes para formar uma chave
primária, este tipo de entidade é considerado uma entidade fraca. Do
ponto de vista de modelagem conceitual, assim como a dependência de
existência este tipo de critério pode ser visto como dispensável, pois sua
importância será reconhecida sob o ponto de vista de projeto lógico,
onde as chaves identificadoras, utilizadas como diferenciadores entre
instâncias dos elementos, ou como método de endereçamento de
registro, passam a ter papel vital durante a o processo de estrutura de
dados.
A relação entre um entidade forte e uma fraca deve ser 1:N.
Por exemplo, em um modelo de cadastro de funcionários, poderíamos ter a
entidade “Empregado” e para este empregado uma entidade “Dependente”, os
dependentes de um empregado, poderiam ser classificados como entidades
fracas, pois os dependentes não poderiam existir sem um empregado não fosse
cadastrado. Em particular se algum empregado for excluído, todos os seus
dependentes também devem ser excluídos.
Um conjunto de entidades fracas é identificado no modelo E-R pela linha dupla
usada no retângulo e no losango do relacionamento correspondente. No
diagrama abaixo, o conjunto de entidades fracas pagamento é dependente do
conjunto de entidades fortes Empréstimo pelo conjunto de relacionamento
pagamento_empréstimo. A figura também apresenta o uso de linhas duplas
para identificar participação total – a participação do conjunto de entidades
(fracas) pagamento no relacionamento pagamento_empréstimo é total,
significando que todo o pagamento precisa estar relacionado via
pagamento_empréstimo a alguma conta.
Página 32
Administração e Projeto de Banco de Dados
Total_pagto
Total
Data_Pagto
Pagamento_Em
Pagamento_empr
préstimo
éstimo
Empréstimo
Pagamento
Número_empréstimo
2.4
Número_pagamento
Relacionamentos Reflexivos (auto-relacionamento)
São os relacionamentos que ocorrem entre as ocorrências de uma mesma
entidade. Normalmente eles representam algum tipo de hierarquia.
Funcionário
0,N
Gerencia
1,1
Funcionário gerencia 0 ou muitos funcionários.
Funcionário é gerenciado por um único funcionário.
2.5
Extensões do Modelo Entidade x Relacionamento
O modelo de dados Entidade x Relacionamentos, como proposto por Peter
Chen, tem sido usado efetivamente para a comunicação do usuário final,
apresentando entidades e relacionamentos. Entretanto, quando usado para
integrar diferentes modelos conceituais com diferentes usuários finais, fica
severamente limitado até que se utilize um conceito de abstração de dados
denominado generalização.
2.5.1
Relacionamentos entre Múltiplas Entidades
Até o momento analisamos apenas situações em que as entidades se
relacionam sozinhas ou em pares, este é o principio da descoberta de
relacionamentos, a analise de relacionamento em pares, no entanto um
relacionamento pode envolver mais de duas entidades, que podem ser
três, quatro, cinco ou uma quantidade indeterminada.
Página 33
Administração e Projeto de Banco de Dados
Os relacionamentos entre múltiplas entidades expressam um fato em
que todas as entidades ocorrem simultaneamente, ou seja, todas as
ocorrências do relacionamento possuem, sempre, ligações com todas as
entidades envolvidas no relacionamento. Não é possível um
relacionamento triplo (Ternário), em um determinado momento,
transformar-se em duplo (Binário).
O diagrama abaixo representa uma situação de relacionamento que
envolve três entidades simultaneamente, a este tipo de relacionamento
triplo, damos o nome de Relacionamento Ternário.
Técnico
1
1
atua
Projeto
1
Notebook
Um técnico que atua em um projeto utiliza um notebook.
Um notebook é utilizado em um projeto por um técnico.
Um técnico com um notebook atua em um projeto.
2.5.1.1
Entidade associativa
Um relacionamento é uma associação entre entidades. Na modelagem
ER não foi prevista a possibilidade de associar dois relacionamentos
entre si. Na pratica, quando estamos construindo um novo modelo ER ou
modificando um modelo ER existente, surgem situações em que é
desejável permitir a associação de uma entidade a um relacionamento.
Vejamos um exemplo:
Médico
N
N
Consulta
Paciente
Suponha que seja necessário modificar este relacionamento da seguinte
forma. É necessário saber que medicamentos existem e que
medicamentos foram prescritos em cada consulta. Para saber que
medicamentos existem, cria-se uma nova entidade, Medicamento. A
questão agora é: com que entidade existente deve estar relacionada a
nova entidade? Se Medicamento fosse relacionado a Médico, ter-se-ia
apenas a informação de que médico prescreveu que medicamentos,
faltando a informação do paciente que os teve prescritos. Por outro lado,
Página 34
Administração e Projeto de Banco de Dados
se Medicamento fosse relacionado à Paciente, faltaria a informação do
Médico que prescreveu o medicamento. Assim, deseja-se relacionar a
prescrição do Medicamento à consulta, ou seja, deseja-se relacionar um
relacionamento prescrição com da entidade (Medicamento) a um
relacionamento (Consulta), o que não está previsto na abordagem ER.
Para tal, foi criado um conceito especial, o de entidade associativa. Uma
entidade associativa nada mais é que a redefinição de um
relacionamento, que passa a ser tratado como se fosse também uma
entidade. Graficamente isso é feito como mostrado na figura abaixo.
Médico
N
N
Consulta
Paciente
N
Prescrição
N
Medicamento
O retângulo desenhado ao redor do relacionamento Consulta indica que
este relacionamento passa a ser visto como uma entidade (associativa,
já que é baseada em um relacionamento). Sendo Consulta também uma
entidade, é possível associa-l através de relacionamentos a outras
entidades, conforme a figura apresentada acima.
2.5.1.2
Agregação
O termo agregação tem sido utilizado pelas técnicas de modelagem de
sistemas nos mais variados conceitos, porém o conceito lançado em
Modelagem de Dados refere-se à visão de um relacionamento como um
bloco, como alguma coisa que se relaciona com outra, Isso equivale
dizer que um relacionamento esta relacionado a outro. Mas,
conceitualmente, não existem relacionamentos entre relacionamentos; é
uma inverdade conceitual.
Para que exista o relacionamento de uma agregação com outra entidade
é necessária a existência de dependência entre os fatos, ou seja, um fato
somente acontece após a existência do primeiro fato.
Página 35
Administração e Projeto de Banco de Dados
No diagrama abaixo o Serviço só será utilizado quando um cliente se
hospedar em um quarto, o relacionamento utiliza depende do
relacionamento de hospeda-se.
Cliente
N
Hospeda-se
N
Quarto
N
Utiliza
N
Serviços
2.5.1.3
Generalização (Supertipos) e Especialização (Subtipos)
Quando estamos em busca da visualização dos dados de um negócio, é
importante atentar ao nível de abstração em que estamos atuando, pois
quando definimos uma entidade, estamos com a visão de uma classe
genérica de dados que pode estar incorporando, diversas outras classes
de dados.
2.5.1.3.1 Generalização
Ao buscarmos as entidades presentes em um dado negócio, pode ser
realizado de modo bottom-up (baixo para cima), no qual podemos
reconhecer vários conjuntos de entidades com atributos em comum,
então, estes atributos comuns são sintetizados em um conjunto de
entidades de alto nível.
Por exemplo, ao modelarmos um sistema hospitalar, podemos
encontrar entidades como Pediatra, Neurologista, Cardiologista,
Clínico Geral, entre outros, e ao analisarmos as características de
cada entidade, podemos perceber atributos em comum como nome,
sexo, data nascimento e tratando tais entidades de forma mais
genérica, podemos concluir que todas estas pessoas são médicos.
Dentro do contexto de modelagem botton-up, alguns autores
classificam a entidade generalizada “médico” como um supertipo.
Página 36
Administração e Projeto de Banco de Dados
Médico
Pediatra
Neurologista
Clínico Geral
Cardiologista
Então podemos ter como regra que ao encontrar um conjunto de
entidades que possuem o mesmo conjunto de atributos para
descrevê-las, podemos generalizá-las em uma única entidade,
mantendo sua identidade de subconjunto pela inserção de um
atributo qualificador para as ocorrências de cada uma.
2.5.1.3.2 Especialização
A especialização é justamente o inverso da generalização que é o
processo de analise botton-up (de baixo para cima) tratado, ao
tratarmos da especialização, nos ocorre o processo inverso de análise
o processo top-down (de cima para baixo) que é o caso da
especialização, ou seja, um conjunto de entidades pode conter
subgrupos (subtipos) de entidades que são de alguma forma,
diferentes de outras entidades do conjunto, continuando com o
exemplo do digrama anterior, ao analisarmos nossa entidade a partir
de médico, pode-se reconhecer subgrupos (subtipos) de médico,
como Pediatra, Neurologista, Cardiologista, Clínico Geral, entre
outros.
2.5.1.3.3 Generalização X Especialização
Na pratica, a generalização é o inverso da especialização. No
processo de modelagem novos níveis de representação serão,
diferenciadas (especialização) ou sintetizadas (generalização).
Generalização
Médico
Especialização
Pediatra, Neurologista,
Cardiologista, Clínico Geral
Página 37
Administração e Projeto de Banco de Dados
3. Bancos de Dados Relacionais
3.1
Definição
Foi criado por Edgar F. Codd na década de 70. 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
bidimensionais. Este princípio coloca os dados (entidades e
relacionamentos) dirigidos para estruturas mais simples de armazenar
dados, que são as tabelas, e nas quais a visão do usuário é privilegiada.
A grande diferença existente quando se trabalha com bancos de dados
relacionais em relação aos ambientes tradicionais, pode ser
exemplificada da seguinte forma:
Em um ambiente tradicional, a função de acender um fósforo seria
descrita de forma exatamente procedural, passo a passo:
 Abrir a caixa de fósforos.
 Verificar se existem palitos.
 Levar o palito à lateral da caixa.
 Riscar o palito.
 Testar se acendeu ou não.
 Etc.
Em um ambiente de banco de dados relacional devemos mentalizar que
as instruções todas se resumem em uma única, uma operação realizada
em conjunto.
ACENDA UM FÓSFORO
Para definir e explicar claramente suponhamos que queremos retirar de uma sala
de aula todos os alunos que possuem média abaixo de 5 pontos.
Em um ambiente tradicional seria perguntado a cada aluno:

Sua média é abaixo de 5 ?
Se a resposta for sim, pediríamos que saísse. Se fosse não, ele ficaria.
Em um ambiente de banco de dados relacional, bastaria realizar uma operação
lógica:

Saiam todos que possuam média menor do que 5.
Página 38
Administração e Projeto de Banco de Dados
Tabela Relacional
3.2
Apresentamos abaixo uma relação de conceitos que definem uma tabela
relacional:







Cada tabela é chamada de relação.
Uma linha e suas colunas chamam-se tupla.
Cada coluna dessa tabela tem um nome e representa um atributo da
tabela.
A ordem das linhas é irrelevante.
Não há duas linhas iguais.
A ordem das colunas também é irrelevante.
Cada tabela tem nome próprio, distinto de qualquer outra tabela no
banco de dados.
Exemplo: Tabela de Funcionários:
Nome
João Carlos
Carlos Brito
Silvia Moraes
Cláudia Tereza
Pedro Júlio
Pedro Júlio
Sexo
M
M
F
F
M
M
Matrícula
373
872
963
161
292
574
Departamento
TI-Operações
TI-Programação
TI-Análise
TI-Gerência
RH
TI-Análise
Cargo
Operador
Programador I
Analista Sist. II
Secretária
Diretor
Analista Sist. I
Vamos analisar os dados:
As matrículas não indicam a ordem das linhas, apresentando o conceito de que
a ordem das linhas é irrelevante.
Todas as colunas possuem um nome que significam algo.
A ordem das colunas não está desenvolvida para nenhuma finalidade de
classificação ou ordem de leitura dos dados.
Nenhuma linha se repete.
Podemos ter duas pessoas com o mesmo nome, porém com matrículas
diferentes.
Página 39
Administração e Projeto de Banco de Dados
3.3
3.3.1
O conceito de Chave no Modelo Relacional
Chave Primária (Primary Key)
Em uma tabela existe uma coluna ou conjunto de colunas concatenados, cujo
valor é único na tabela, ou seja, nunca se repete aquele valor em nenhuma
outra linha da tabela, e que identifica uma e somente uma única linha da
tabela.
Então dizemos que esta coluna ou conjunto de colunas forma a chave primária
da tabela.
Na nossa tabela de funcionário, qual coluna ou conjunto de
concatenadas forma um identificador único para cada linha da tabela?
Nome
João Carlos
Carlos Brito
Silvia Moraes
Cláudia Tereza
Pedro Júlio
Pedro Júlio
Sexo
M
M
F
F
M
M
Matrícula
373
872
963
161
292
574
Departamento
TI-Operações
TI-Programação
TI-Análise
TI-Gerência
RH
TI-Análise
colunas
Cargo
Operador
Programador I
Analista Sist. II
Secretária
Diretor
Analista Sist. I
Nome? Com certeza não, pois se repete.
Sexo? Também se repete.
Departamento também não e cargo e salário sozinhos também não nos
dizem nada.
Sobra neste caso a única coluna que não tem valores repetidos, que é a
matrícula.
Existe somente um valor de matrícula para cada linha, o qual não se repete,
logo podemos determinar que a Matrícula é a chave primária da tabela de
Funcionários.
Vamos agora observar uma tabela mais complicada, em que tenhamos que
realizar um estudo maior para determinar a chave primária.
Página 40
Administração e Projeto de Banco de Dados
Tabela de Consumos
Bebida
Qtde
Cerveja
Chopp
Cerveja
Refrigerante
Mate
Café
Suco
Mate
Chopp
Água
Café
2
3
2
3
1
1
1
1
4
1
1
Valor
Unit.
3,00
2,00
3,00
2,00
1,50
0,80
3,00
1,50
2,00
1,00
0,80
Local
Consumo
Restaurante
Bar
Restaurante
Restaurante
Frigobar
Restaurante
Service Room
Restaurante
Bar
Frigobar
Restaurante
Quarto
101
203
101
203
407
203
505
407
203
101
203
Data
Hora
Valor
Consumo
Consumo
22/01/2001
14:30
19/01/2001
11:00
23/01/2001
14:30
20/01/2001
08:45
21/01/2001
16:30
18/01/2001
08:00
22/01/2001
21:30
21/01/2001
16:30
19/01/2001
17:10
18/01/2001
08:30
18/01/2001
18:00
Total
6,00
8,00
6,00
6,00
1,50
0,80
3,00
1,50
8,00
1,00
0,80
Qual coluna ou conjunto de colunas poderíamos definir como identificador
único de cada linha da tabela ?
Poderia ser bebida? Não. Quarto, também não. Notem que nenhuma coluna
sozinha poderia ser um identificador único da tabela.
E se utilizarmos bebida e quarto? Note que a bebida cerveja foi consumida
pelo quarto 101 mais de uma vez:
Bebida
Cerveja
Cerveja
Qtde
2
2
Valor
Unit.
3,00
3,00
Local
Consumo
Restaurante
Restaurante
Quarto
101
101
Data
Hora
Consumo
Consumo
22/01/2001
14:30
23/01/2001
14:30
Valor
Total
6,00
6,00
Se acrescentarmos o local de consumo à concatenação das colunas
referidas, ainda não teríamos um identificador único.
Bebida
Cerveja
Cerveja
Qtde
2
2
Valor
Unit.
3,00
3,00
Local
Consumo
Restaurante
Restaurante
Quarto
101
101
Data
Hora
Consumo
Consumo
22/01/2001
14:30
23/01/2001
14:30
Valor
Total
6,00
6,00
Como os consumos foram realizados em datas diferentes, podemos inserir a
data na composição da chave primária.
Bebida
Cerveja
Cerveja
Qtde
2
2
Valor
Unit.
3,00
3,00
Local
Consumo
Restaurante
Restaurante
Quarto
101
101
Data
Hora
Consumo
Consumo
22/01/2001
14:30
23/01/2001
14:30
Valor
Total
6,00
6,00
Desta vez os valores não se repetiriam. Porém, observe o consumo de mate
pelo quarto 407.
Página 41
Administração e Projeto de Banco de Dados
Bebida
Mate
Mate
Qtde
Valor
Unit.
1
1
1,50
1,50
Local
Consumo
Frigobar
Restaurante
Quarto
Data
Consumo
Hora
Consumo
Valor
Total
407
407
21/01/2001
21/01/2001
16:30
16:30
1,50
1,50
Eles foram consumidos na mesma data, mas como o local de consumo é
diferente, isso garante a integridade de nossa chave primária. Porém, o mesmo
não ocorre com as duas linhas a seguir:
Bebida
Café
Café
Qtde
1
1
Valor
Unit.
0,80
0,80
Local
Consumo
Restaurante
Restaurante
Quarto
203
203
Data
Hora
Consumo
Consumo
18/01/2001
08:00
18/01/2001
18:00
Valor
Total
0,80
0,80
Aconteceram dois consumos de café pelo mesmo quarto (hóspede), no mesmo
local e na mesma data. Isso nos diz que a chave primária definida até agora
não está correta, pois existem linhas duplicadas para ela.
Voltando a analisar as duas linhas acima, verificamos que o consumo foi
realizado em horas diferentes. Dessa forma, se acrescentarmos a coluna “hora
consumo” em nossa chave primária, passaríamos a ter duas linhas distintas.
Bebida
Café
Café
Qtde
1
1
Valor
Unit.
0,80
0,80
Local
Consumo
Restaurante
Restaurante
Quarto
203
203
Data
Hora
Consumo
Consumo
18/01/2001
08:00
18/01/2001
18:00
Valor
Total
0,80
0,80
Essa então é a nossa chave primária:





Bebida
Local de consumo
Quarto
Data consumo
Hora consumo
Dessa forma, não poderíamos ter a mesma bebida, consumida pelo mesmo
quarto (hospedagem), no mesmo local, na mesma data e na mesma hora, pois
se isso ocorrer, deveremos alterar a quantidade consumida ao invés de
inserirmos duas linhas na tabela.
3.3.2
Chave Estrangeira (Foreign Key)
Quando dizemos que duas tabelas estão relacionadas através de atributos
(colunas) comuns, devemos observar que esta coluna é a chave primária em
uma das tabelas. Na outra tabela, este atributo irá caracterizar o que
chamamos de chave estrangeira, propiciando assim, uma ligação lógica
(relacionamento) entre as tabelas.
Exemplo:
Página 42
Administração e Projeto de Banco de Dados
Departamento
Cód_Depto
1
2
3
4
5
Funcionário
Possui
Departamento
TI-Análise
TI-Programação
TI-Operações
RH
TI-Gerência
Nome
João Carlos
Carlos Brito
Silvia Moraes
Cláudia Tereza
Pedro Júlio
Pedro Júlio
Sexo Matrícula
M
373
M
872
F
963
F
161
M
292
M
574
Chave primária
3.3.3
Depto
3
2
1
5
4
1
Chave estrangeira
Chave Candidata
Uma tabela relacional pode assumir alternativas de identificador único, ou seja,
vária colunas ou concatenações delas podem ter essa propriedade. Estes
identificadores são candidatos à chave primária. Como somente um poderá ser
o escolhido (uma tabela só pode ter uma chave primária – que pode ser
composta pela concatenação de mais de uma coluna), o restante passa a ser
considerado como chave alternativa (secundária).
3.3.4
Chave Secundária (Secundary Key)
Serve para definir uma “segunda chave primária” através da criação de índices
únicos de pesquisa. As chaves secundárias mantêm a integridade das tabelas
que possuem mais de uma chave candidata.
3.4
3.4.1
Regras de Integridade do Modelo Relacional
Integridade de Identidade
A chave primária não pode conter um valor nulo (NULL). O NULL não é o valor
zero nem o caractere branco, é simplesmente a não existência de conteúdo
nesse campo.
3.4.2
Integridade Referencial
Se uma determinada tabela A possui uma chave estrangeira, a qual é chave
primária em outra tabela B, então ela deve ser:


Igual a um valor de chave primária existente em B.
Nula (null).
Não pode existir na chave estrangeira, um valor que não exista na tabela na
qual ela é chave primária.
Página 43
Administração e Projeto de Banco de Dados
As regras de integridade do modelo relacional representam a garantia de
que as tabelas guardam informações compatíveis. São de extrema
importância para a confiabilidade das informações contidas no banco de
dados.
Características do Modelo Relacional
3.5




Uma tabela é acessível por qualquer campo (atributo) independente se
este é declarado como chave ou não.
O relacionamento entre as tabelas não existe fisicamente, pois este
relacionamento é apenas lógico e representado através das chaves
estrangeiras.
Utilização de linguagens não procedurais (SQL).
Os ambientes relacionais possuem um otimizador estratégico para
escolher o melhor caminho para a recuperação dos dados.
4. Derivação do Modelo Entidade x Relacionamento para o
Modelo Lógico Relacional
Nesta etapa o desenvolvedor irá passar a visão do modelo conceitual para o
modelo lógico relacional, seguindo algumas regras de conversão.
Regras de Conversão
4.1
Existem regras precisas que não dão margem a erros, sendo que uma vez
projetado o diagrama ER, as tabelas que representam o ER num nível mais
baixo podem ser obtidas de forma clara.
4.2
Mapeamento de Entidades
Toda entidade torna-se uma tabela carregando todos os atributos definidos para
ela.
4.3
Mapeando atributos
Cada atributo vira um campo da tabela criada. Os atributos identificadores
viram a chave primária da tabela.
4.4
Relacionamento 1:N (envolvendo entidades distintas)
A entidade (tabela) cuja cardinalidade é N recebe o atributo identificador da
entidade cuja cardinalidade é 1 (chave estrangeira).
Exemplo:
Departamento
Departamento
1,1
Possui
0,N
Funcionário
Página 44
Administração e Projeto de Banco de Dados
Cód_Depto
1
2
3
4
5
Departamento
TI-Análise
TI-Programação
TI-Operações
RH
TI-Gerência
Funcionário
Nome
João Carlos
Carlos Brito
Silvia Moraes
Cláudia Tereza
Pedro Júlio
Pedro Júlio
Chave primária
4.5
Sexo Matrícula
Depto
M
373
3
M
872
2
F
963
1
F
161
5
Chave
estrangeira
M
292
4
M
574
1
Relacionamento 1:N (envolvendo auto-relacionamento)
Incluir a chave primária da entidade na própria entidade como chave
estrangeira.
0,N
Funcionário
Gerencia
1,1
Funcionário
Matrícula
373
872
963
161
292
574
4.6
Nome
João Carlos
Carlos Brito
Silvia Moraes
Cláudia Tereza
Pedro Júlio
Pedro Júlio
Sexo
M
M
F
F
M
M
Depto
3
2
1
5
4
1
Matrícula_Chefe
161
161
161
056
010
161
Relacionamento 1:1
As entidades (tabelas) envolvidas neste relacionamento carregarão o
identificador da outra (uma ou outra ou ambas) conforme a conveniência do
projeto (de acordo com o acesso a essas tabelas).
Funcionário
1,1
Chefia
0,1
Departamento
Podemos colocar a chave matrícula na tabela de departamentos, representando
que um departamento possui um chefe.
Página 45
Administração e Projeto de Banco de Dados
Departamento
Cód_Depto Departamento
1
TI-Análise
2
TI-Programação
3
TI-Operações
4
RH
5
TI-Gerência
Chefe
574
872
373
292
161
Funcionário
Nome
João Carlos
Carlos Brito
Silvia Moraes
Cláudia Tereza
Pedro Júlio
Pedro Júlio
Sexo
M
M
F
F
M
M
Matrícula
373
872
963
161
292
574
Depto
3
2
1
5
4
1
Podemos também colocar a chave departamento na tabela de funcionários,
representando que um funcionário pode chefiar um departamento. Note que
podemos ter funcionário que não chefiam nenhum departamento.
Departamento
Cód_Depto Departamento
1
TI-Análise
2
TI-Programação
3
TI-Operações
4
RH
5
TI-Gerência
Empregado
Nome
Sexo
João Carlos
Carlos Brito
Silvia Moraes
Cláudia Tereza
Pedro Júlio
Pedro Júlio
Matrícula Chefia
Depto
M
M
F
F
M
M
373
872
963
161
292
574
Trabalha
Depto
3
3
2
1
5
4
1
5
1
Também poderíamos colocar a chave estrangeira em ambas as tabelas
(alternativa menos utilizada).
Departamento
Cód_Dept Departamento
o
1
TI-Análise
2
TIProgramação
3
TI-Operações
4
RH
5
TI-Gerência
Chefe
574
872
373
292
161
Funcionário
Nome
Sexo
João Carlos
Carlos Brito
Silvia Moraes
Cláudia
TerezaJúlio
Pedro
Pedro Júlio
M
M
F
F
M
M
Matrícula
373
872
963
161
292
574
Chefia
Depto
3
2
5
4
1
Trabalha
Depto
3
2
1
5
4
1
Página 46
Administração e Projeto de Banco de Dados
4.7
Relacionamento N:N
O relacionamento torna-se uma tabela carregando os atributos identificadores
das entidades relacionadas e os atributos do relacionamento (quando houver).
Funcionário
Funcionário
Nome
João Carlos
Carlos Brito
Silvia Moraes
Cláudia Tereza
Pedro Júlio
Pedro Júlio
Sexo
M
M
F
F
M
M
0,N
0,N
Alocado
Projeto
Cód_Projeto
1
2
3
Matrícula
373
872
963
161
292
574
Projeto
Data Warehouse RH
Folha de Pagamento
B.I. Marketing
Projeto_Funcionário
Matrícula
Cód_Pojeto
373
872
373
4.8
Projeto
Horas_Alocadas
1
3
2
100
300
200
Relacionamento Múltiplo
O relacionamento é mapeado em uma tabela, cuja chave primária é formada
pela concatenação de todas as chaves estrangeiras.
Funcionário
0,N
0,N
Alocado
Projeto
0,N
Conhecimento
Projeto
Cód_Projeto
1
2
3
Funcionário
Nome
João Carlos
Carlos Brito
Silvia Moraes
Cláudia Tereza
Pedro Júlio
Pedro Júlio
Conhecimento
Cód_Conhec
Conhecimento
1
Oracle Discovere
2
PL/SQL
3
SQL Server
Projeto
Data Warehouse RH
Folha de Pagamento
B.I. Marketing
Sexo
M
M
F
F
M
M
Matrícula
373
872
963
161
292
574
Funcionário-Projeto-Conhecimento
Matrícula
Cód_Pojeto Cód_conhec
373
872
574
574
4.9
1
3
2
2
1
2
3
2
Generalizações
Exemplo:
Página 47
Administração e Projeto de Banco de Dados
Dado um conjunto “funcionário”, existe uma variação para este, pois existem
funcionários que são engenheiros, outros são vendedores e assim por diante,
sendo que podem existir variações nos atributos de um funcionário de acordo
com o seu cargo.
O artifício que temos é a criação de subconjuntos para os casos nos quais as
informações variam.
Um elemento funcionário só pode ter um e somente um subconjunto. As
informações dos engenheiros serão completadas pelo subconjunto “engenheiro”,
as do vendedor pelo subconjunto “vendedor” e assim por diante.
Os subconjuntos tornam-se tabelas carregando o identificador do conjunto ao
qual pertencem.
Funcionário
Gerente
Engenheiro
- Matrícula
- Matrícula
- Ajuda de custo
- Hora Extra
- Especialidade
- Despesa Extra
Secretária
- Matrícula
- Língua Estrangeira
- Curso
- Placa Carro
Página 48
Administração e Projeto de Banco de Dados
Funcionário
Matrícula
4534
6547
7734
1198
3289
Nome
Soraia Mattos
Breno Medeiros
Gustavo Borges
Ana Ferreira
Telma Ribeiro
Função
Ger
Eng
Eng
Eng
Sec
Func_Gerente
Func_Secretaria
Aj
4534 Custo
120
Espec
Mat
Língua
Curso
Eletr.
4534
Inglês
Secret.
Mat
Func_Engenheiro
Mat
HR Ext
Desp Ext
Placa
4534
120
240
AHA8909
7734
ACA2356
3289
5
23
JOL1234
5. Normalização de Dados
5.1
Definição
O conceito de normalização foi introduzido por E. F. Codd em 1972.
Inicialmente Codd criou as três primeiras formas de normalização chamando-as
de: primeira forma normal (1NF), segunda forma normal (2NF) e terceira forma
normal (3NF). Uma definição mais forte da 3NF foi proposta depois por BoyceCodd, e é conhecida como forma normal de Boyce-Codd (FNBC).
Através do processo de normalização pode-se, gradativamente, substituir um
conjunto de entidades e relacionamentos por um outro, o qual se apresenta
"purificado" em relação às anomalias de atualização (inclusão, alteração e
exclusão) as quais podem causar certos problemas, tais como:






grupos repetitivos (atributos multivalorados) de dados;
variação temporal de certos atributos, dependências funcionais totais ou
parciais em relação a uma chave concatenada;
redundâncias de dados desnecessárias;
perdas acidentais de informação;
dificuldade na representação de fatos da realidade observada;
dependências transitivas entre atributos.
Página 49
Administração e Projeto de Banco de Dados
Normalização de relações é portanto uma técnica que permite depurar um
projeto de banco de dados, através da identificação de inconsistências
(informações em duplicidade, dependências funcionais mal resolvidas, etc).
À medida que um conjunto de relações passa para uma forma normal, vamos
construindo um banco de dados mais confiável.
O objetivo da normalização não é eliminar todas as inconsistências, e sim
controlá-las.
5.2
Primeira Forma Normal (1FN)
Uma relação está na primeira forma normal se os valores de seus atributos são
atômicos (simples, indivisíveis) e monovalorados. Em outras palavras, FN1 não
permite “relações dentro de relações” ou “relações como atributos de tuplas”.
Uma tabela está na primeira forma normal quando seus atributos não contêm
grupos de repetição.
Exemplo:
Estrutura original:
Arquivo de Vendas (Num Venda, Data emissão, Cod. do Cliente, Nome do
cliente, Endereço do cliente, CGC do cliente, Relação das mercadorias vendidas
(onde para cada mercadoria temos: Código da Mercadoria, Descrição da
Mercadoria, Quantidade vendida, Preço de venda e Total da venda desta
mercadoria) e Total Geral da Nota).
Analisando a estrutura acima, observamos que existem várias mercadorias em
uma única Venda, sendo, portanto elementos repetitivos que deverão ser
retirados.
Estrutura na primeira forma normal (1FN):
Arquivo de Vendas (Num Venda, Data emissão, Código do Cliente, Nome
Cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota).
Arquivo de Itens da Venda (Num Venda, Código da Mercadoria, Descrição da
Mercadoria, Quantidade vendida, Preço de venda e Total da venda desta
mercadoria)
Obs. Os campos sublinhados identificam as chaves das estruturas.
Como resultado desta etapa ocorre um desdobramento dos dados em duas
estruturas, a saber:
Primeira estrutura (Arquivo de Vendas): Dados que compõem a estrutura
original, excluindo os elementos repetitivos.
Segundo estrutura (Arquivo de Itens da Venda): Dados que compõem os
elementos repetitivos da estrutura original, tendo como chave o campo chave
da estrutura original (Num Venda) e o campo chave da estrutura de repetição
(Código da Mercadoria).
Página 50
Administração e Projeto de Banco de Dados
5.3
Segunda Forma Normal (2FN) - Dependências Funcionais
Para uma tabela estar na segunda forma normal, além de estar na primeira
forma ela não deve conter dependências funcionais de parte da chave primária.
Um jeito de verificar esta norma é refazer a leitura dos campos fazendo a
pergunta: Este campo depende de toda a chave? Se não depender de toda a
chave temos uma dependência funcional.
Exemplo:
Estrutura na primeira forma normal (1FN):
Arquivo de Vendas (Num Venda, Data emissão, Código do Cliente, Nome do
cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota).
Arquivo de da Itens Vendas (Num Venda, Código da Mercadoria, Descrição da
Mercadoria, Quantidade vendida, Preço de venda e Total da venda desta
mercadoria)
Estrutura na segunda forma normal (2FN):
Arquivo de Vendas (Num Venda, Data emissão, Código do Cliente, Nome do
cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota).
Arquivo de Itens da Vendas (Num Venda, Código da Mercadoria, Quantidade
vendida e Total da venda desta mercadoria).
Arquivo de Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço
de venda).
Como resultado desta etapa, houve um desdobramento do arquivo de Itens da
Venda (o arquivo de Vendas, não foi alterado, por não possuir chave composta)
em duas estruturas a saber:
Primeira estrutura (Arquivo de Itens da Vendas): Contém os elementos
originais, sendo excluídos os dados que são dependentes apenas do campo
Código da Mercadoria.
Segundo estrutura (Arquivo de Mercadorias): Contém os elementos que são
identificados apenas pelo Código da Mercadoria, ou seja, independentemente da
Nota Fiscal, a descrição e o preço de venda serão constantes.
5.4
- Terceira Forma Normal (3FN) - Dependências Transitivas
Para uma tabela estar na terceira forma normal, além de estar na segunda
forma ela não deve conter dependências transitivas. Um jeito de verificar esta
norma é refazer a leitura dos campos fazendo a pergunta: Este campo depende
de outro que não seja a chave? Se ele depender temos uma dependência
transitiva..
Página 51
Administração e Projeto de Banco de Dados
Exemplo:
Estrutura na segunda forma normal (2FN):
Arquivo de Vendas (Num Venda, Data emissão, Código do Cliente, Nome do
cliente, Endereço do cliente, CGC do cliente e Total Geral da Nota).
Arquivo de Itens da Venda (Num Venda, Código da Mercadoria, Quantidade
vendida e Total da venda desta mercadoria).
Arquivo de Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço
de venda).
Estrutura na terceira forma normal (3FN):
Arquivo de Vendas (Num Venda, Data emissão, Código do Cliente e Total Geral
da Nota).
Arquivo de Itens da Venda (Num Venda, Código da Mercadoria, Quantidade
vendida e Total da venda desta mercadoria).
Arquivo de Mercadorias (Código da Mercadoria, Descrição da Mercadoria, Preço
de venda).
Arquivo de Clientes (Código do Cliente, Nome do cliente, Endereço do cliente e
CGC do cliente).
Como resultado desta etapa, houve um desdobramento do arquivo de Vendas,
por ser o único que possuía campos que não eram dependentes da chave
principal (Num Venda), uma vez que independente da Venda, o Nome, Endereço
e CGC do cliente são inalterados. Este procedimento permite evitar
inconsistência nos dados dos arquivos e economizar espaço por eliminar o
armazenamento freqüente e repetidas vezes destes dados. A cada venda feita
para o cliente, haverá o armazenamento destes dados e poderá ocorrer
divergência entre eles.
As estruturas alteradas foram pelos motivos, a saber:
Primeira estrutura (Arquivo de Vendas): Contém os elementos originais, sendo
excluídos os dados que são dependentes apenas do campo Código do Cliente
(informações referentes ao cliente).
Segundo estrutura (Arquivo de Clientes): Contém os elementos que são
identificados apenas pelo Código do Cliente, ou seja, independente da Venda, o
Nome, Endereço e CGC dos clientes serão constantes.
Após a normalização, as estruturas dos dados estão projetadas para eliminar as
inconsistências e redundâncias dos dados, eliminando desta forma qualquer
problema de atualização e operacionalização do sistema. A versão final dos
dados poderá sofrer alguma alteração, para atender as necessidades específicas
do sistema, a critério do analista de desenvolvimento durante o projeto.
Página 52
Administração e Projeto de Banco de Dados
5.5
Quarta Forma Normal (4FN)
Na grande maioria dos casos, as entidades normalizadas até a 3FN são fáceis de
entender, atualizar e de se recuperar dados. Mas às vezes podem surgir
problemas com relação a algum atributo não chave, que recebe valores
múltiplos para um mesmo valor de chave. Esta nova dependência recebe o
nome de dependência multivalorada que existe somente se a entidade contiver
no mínimo três atributos.
Uma entidade que esteja na 3FN também estará na 4FN, se ela não contiver
mais do que um fato multivalorado a respeito da entidade descrita.
Exemplo: Dado a tabela a seguir.
Cód Funcionário
1234
1234
1234
1234
Habilidade
SQL Server
Oracle
Oracle
Access
Idioma
Inglês
Francês
Inglês
Alemão
Como podemos observar, esta entidade tenta conter dois fatos multivalorados:
as diversas habilidades de um funcionário e os diversos idiomas. Com isso
apresenta uma dependência multivalorada entre Código Funcionário e
Habilidade e entre Código Funcionário e Idioma. Embora esteja na 3FN, ao
conter mais de um fato multivalor, torna a sua atualização muito difícil.
Para passarmos a entidade acima para a 4FN, é necessária a realização de uma
divisão da entidade original, em duas outras entidades, ambas herdando a
chave Código Funcionário e concatenado, em cada nova entidade, com os
atributos Habilidade e Idioma.
Funcionário-Habilidade
Cód Funcionário
1234
1234
1234
Habilidade
SQL Server
Oracle
Access
Funcionário -Idioma
Cód Funcionário
1234
1234
1234
Idioma
Inglês
Francês
Alemão
Página 53
Administração e Projeto de Banco de Dados
5.6
Quinta Forma Normal (5FN)
Um registro não pode ser reconstruído a partir de vários tipos de registros
menores.
Exemplo:



Os vendedores representam as empresas.
As empresas fazem produtos.
Os vendedores vendem os produtos.
Caso mais geral (permite qualquer combinação):
Vendedor
Smith
Smith
Empresa
Ford
GM
Produto
Carro
Caminhão
O Smith não vende nem caminhões da Ford, nem carros da GM.
É em uma alteração que ocorre o problema:
Se um vendedor trabalha com um determinado produto, e ele representa uma
empresa, então ele vende esses produtos pela empresa.
Vendedor
Smith
Smith
Smith
Smith
Jones
Empresa
Ford
Ford
GM
GM
Ford
Produto
Carro
Caminhão
Carro
Caminhão
Carro
Podemos reconstruir todos os fatos verdadeiros em três tabelas em vez de
uma:
Vendedor
Smith
Smith
Jones
Empresa
Ford
GM
Ford
Vendedor
Smith
Smith
Jones
Produto
Carro
Caminhão
Carro
Empresa
Ford
Ford
GM
GM
Produto
Carro
Caminhão
Carro
Caminhão
Página 54
Administração e Projeto de Banco de Dados
Problemas com a forma da tabela 1:


Os fatos são registrados várias vezes. Por exemplo, o fato de que o
Smith vende carros é registrado duas vezes. Se Smith parar de vender
carros, 2 linhas devem ser atualizadas e faltará uma.
O tamanho desta tabela aumenta em progressão geométrica, enquanto
as tabelas normalizadas crescem em progressão aritmética.
Para
grandes operações, isso faz uma grande diferença: 100.000 x 100.000 é
bem maior do que 100.000 + 100.000.
É mais fácil escrever as regras comerciais a partir da quinta normal:


As regras são mais explícitas.
(Cadeias de suprimentos têm todos os tipos de problemas da 5FN).
Um exemplo de um conjunto sutil de condições:
Não-normal
Vendedor
Smith
Smith
Smith
Smith
Jones
Jones
Brown
Brown
Brown
Brown
Empresa
Ford
Ford
GM
GM
Ford
Ford
Ford
GM
Toyota
Toyota
Produto
Carro
Caminhão
Carro
Caminhão
Carro
Caminhão
Carro
Carro
Carro
Ônibus
Na 5FN:
Vendedor
Smith
Smith
Jones
Brown
Brown
Brown



Empresa
Ford
GM
Ford
Ford
GM
Toyota
Empresa
Ford
Ford
GM
GM
Toyota
Toyota
Produto
Carro
Caminhão
Carro
Caminhão
Carro
Ônibus
Vendedor
Smith
Smith
Jones
Jones
Brown
Brown
Produto
Carro
Caminhão
Carro
Caminhão
Carro
Ônibus
Jones vende carros e a GM fabrica carros, mas Jones não é
representante da GM.
Brown é representante da Ford e a Ford fabrica caminhões, mas Brown
não vende caminhões.
Brown é representante da Ford e Brown vende ônibus, mas a Ford não
fabrica ônibus.
Página 55
Administração e Projeto de Banco de Dados
Página 56
Administração e Projeto de Banco de Dados
Bibliografia
C. J. Date - Introdução a Sistemas de Banco de Dados, Elsevier 8º Edição
Paulo Cougo - Modelagem Conceitual e Projeto de Bancos de dados,
Elsevier17º Triagem
Felipe Machado e Maurício Abreu - Projeto de Banco de Dados Uma Visão
Prática, Érica
ABRAHAM SILBERSCHATZ, HENRY F., S. SUDARSHAN - Sistemas de Banco de
dados, Makron Books
Ramez Elmasri, Shamkant Navathe - Fundamentals of Database Systems; The
Benjamin CummingsPublishing Company; 1989;
KROENKE, DAVID M. - Banco de Dados: Fundamentos, projeto e
implementação. Sexta edição (tradução). LTC 1999
Carlos Alberto Heuser – Projeto de Banco de dados, Bookman.
Fernando Martins de Oliveira – Apostila Banco de Dados.
Shigueru Watanabe – Aulas e apresentações de Banco de Dados.
http://www.ime.usp.br/~andrers/aulas/bd2005-1/aula.html
http://www.criarweb.com/artigos/modelos-banco-dados.html
Página 57
Download