Upload
api-3704649
View
11.389
Download
23
Embed Size (px)
DESCRIPTION
Apostila.
Citation preview
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira
Universidade Federal de São Carlos
Departamento de Computação
Projeto de Banco de Dados
Profa Marina Teresa Pires Vieira
Março 2000
Última revisão: Abril 2002
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 1
PROJETO DE BANCO DE DADOS
1. Conceitos de Modelagem de Dados............................................................................. 3
1.1. Processo de Projeto de Banco de Dados .........................................................................3
1.2. Modelos de Dados Semânticos.........................................................................................5 1.2.1. Abstrações no Projeto Conceitual de Banco de Dados.........................................................6
1.3. Modelo EER (Extended Entity-Relationship)................................................................7 1.3.1. Modelo ER ...............................................................................................................................7 1.3.2. Extensão do Modelo ER..........................................................................................................9
1.4. Exercícios ........................................................................................................................12
2. Questões no Projeto Conceitual de um Banco de Dados ......................................... 15
2.1.Introdução........................................................................................................................15
2.2. Projeto de Visão..............................................................................................................15 2.2.1. Projeto de Visão com base em Linguagem Natural ...........................................................15 2.2.2. Projeto de Visão com base em Formulários........................................................................18 2.2.4. Exercícios - Projeto de Visão................................................................................................23
2.3. Integração de Visões.......................................................................................................26
2.4. Estudo de Caso: Gerenciamento de uma Biblioteca...................................................28
2.5. Melhorando a Qualidade de um Esquema de Banco de Dados.................................32 2.5.1. Qualidades de um esquema de BD.......................................................................................32 2.5.2. Transformações de Esquema ...............................................................................................35 2.5.2.1. Transformações para conseguir minimalidade ...............................................................35 2.5.2.2. Transformações para conseguir Expressividade .............................................................36 2.5.2.3. Transformações para obter Normalização ......................................................................38 2.5.3. Reestruturação do esquema de Gerenciamento de uma Biblioteca ..................................41
2.6. Exercício..........................................................................................................................42
3. Projeto Lógico de Banco de Dados ........................................................................... 45
3.1. Refinamento do Esquema Conceitual...........................................................................45 3.1.1. Particionamento de Entidades .............................................................................................46 3.1.2. Fusão de entidades ................................................................................................................48 3.1.3. Reprodução de atributos ......................................................................................................48
3.2. Mapeamento para o Modelo Relacional.......................................................................48 3.2.1. Exercícios – Mapeamento .....................................................................................................53
3.3. Tópicos Adicionais sobre Modelagem de Dados e Mapeamento Análise de diferentes situações..................................................................................................................................54
3.3.1.Categorização - mapeamento ................................................................................................54 3.3.2. Atividades de extensão - fazer o esquema conceitual .........................................................55 3.3.3. Docentes e Docentes Bolsistas - fazer o esquema conceitual..............................................56 3.3.4. A modelagem satisfaz aos requisitos dos usuários?...........................................................57 3.3.5. Elaboração de Esquemas Conceituais .................................................................................58
3.4. Esquema de Navegação para Operações de Banco de Dados.....................................60 3.4.1. Exercícios - Esquema de Navegação ....................................................................................63
3.5. Modelagem da Carga do Banco de Dados....................................................................64
4. Projeto Físico de Banco de Dados ........................................................................ 67
Estruturas de Armazenamento - OpenIngres............................................................... 67
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 2
4.1. HEAP...............................................................................................................................67
4.2. HASH...............................................................................................................................68
4.3. ISAM ...............................................................................................................................70
4.4. Btree.................................................................................................................................71
4.5. Índices Secundários........................................................................................................73
5. Bibliografia.........................................................................................................................74
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 3
1. Conceitos de Modelagem de Dados
1.1. Processo de Projeto de Banco de Dados Bancos de dados são componentes importantes dos sistemas de informação (SIs)
e, consequentemente, o projeto do banco de dados apresenta-se como uma atividade
essencial na fase de desenvolvimento dos SIs. Projetar bancos de dados tem se tornado
uma atividade popular, as vezes realizada não somente por profissionais da área de
banco de dados, mas também por não especialistas. Freqüentemente, a falta de
abordagens adequadas para o projeto de um banco de dados pode incorrer em resultados
indesejáveis, como ineficiência em atender a demanda de aplicações e problemas com a
manutenção do banco de dados. Geralmente a causa disso é a falta de clareza em
entender a natureza exata dos dados em um nível conceitual (abstrato).
O projeto de um banco de dados é decomposto em Projeto Conceitual, Projeto
Lógico e Projeto Físico, conforme mostrado na figura 1.1.
Requisitos de dados Esquema conceitual Esquema Lógico Esquema Físico
Fig. 1.1
O Projeto Conceitual usa como base a especificação dos requisitos produzindo
como resultado o esquema conceitual do banco de dados. Um esquema conceitual é
Projeto Conceitual
Projeto Lógico
Projeto Físico
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 4
uma descrição em alto nível da estrutura do banco de dados, independente do Sistema
de Gerenciamento de Banco de Dados (SGBD) adotado para implementá-lo. Um
modelo conceitual (por exemplo, o modelo Entidade-Relacionamento) é usado para
descrever os esquemas conceituais.
O propósito do projeto conceitual é descrever o conteúdo de informação do
banco de dados ao invés das estruturas de armazenamento que serão necessárias para
gerenciar essa informação.
O Projeto Lógico tem por objetivo avaliar o esquema conceitual frente às
necessidades de uso do banco de dados pelos usuários/aplicações, realizando, no
mesmo, possíveis refinamentos para alcançar maior desempenho das operações sobre o
banco de dados. A tarefa final do projeto lógico é a geração do esquema lógico
correspondente ao esquema conceitual resultante do refinamento . Um esquema lógico
é uma descrição da estrutura do banco de dados que pode ser processada por um
Sistema Gerenciador de Banco de Dados (SGBD). Um modelo lógico é usado para
especificar esquemas lógicos. Os modelos lógicos mais conhecidos para bancos de
dados convencionais, pertencem a três classes: relacional, em redes e hierárquico, sendo
o modelo relacional o mais amplamente usado atualmente. O projeto lógico depende da
classe do modelo de dados usado pelo SGBD, mas não do SGBD específico usado.
O Projeto Físico toma por base o esquema lógico para construir o esquema
físico. Um esquema físico é uma descrição da implementação do banco de dados em
memória secundária; ele descreve as estruturas de armazenamento e métodos de acesso
usados para efetivamente realizar o acesso aos dados. O projeto físico é direcionado
para um SGBD específico (por exemplo: Oracle, Sybase, OpenIngres, Access).
Decisões tomadas durante o projeto físico, para melhorar o desempenho, podem afetar a
estrutura do esquema lógico.
Uma vez que o projeto físico do banco de dados é completado, os esquemas
lógico e físico são expressos usando a linguagem de definição de dados do SGBD
adotado. O banco de dados é criado e populado e pode ser testado para se tornar
operacional.
O esquema físico do banco de dados é influenciado pelas fases por que passou a
construção do banco de dados. A fase de projeto conceitual é tida como uma das mais
(senão a mais) delicadas em todo esse processo, pois depende muito da habilidade do
projetista do banco de dados e das qualidades do modelo de dados adotado para a
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 5
elaboração do esquema conceitual. A meta nessa fase é obter um esquema conceitual do
banco de dados que seja tão completo e expressivo quanto possível. Esse esquema deve
procurar expressar o máximo da semântica envolvida na informação. Mecanismos de
representação de alto nível são empregados, tais como representação de hierarquias de
subconjunto e de generalização, representação de restrições de cardinalidade e de
atributos compostos e multivalorados. Para a representação do esquema conceitual
geralmente utiliza-se uma extensão do modelo Entidade-Relacionamento.
O projeto conceitual de um banco de dados não pode ser totalmente auxiliado
por ferramentas automáticas; cabe ao projetista entender e transformar os requisitos dos
usuários em esquemas conceituais. O projeto conceitual é, assim, a fase mais crítica do
projeto do banco de dados. Ele não depende somente da habilidade e experiência do
projetista, mas também da cooperação dos usuários que são responsáveis por descrever
suas necessidades e o significado dos dados.
O esquema conceitual deve fazer parte da documentação do processo de projeto,
sendo utilizado durante a operação e manutenção do banco de dados, pois facilita o
entendimento dos esquemas de dados e das aplicações que os utilizam.
Para auxiliar o projetista a elaborar o projeto conceitual de um banco de dados
existem as abstrações de dados, que apresentam as vantagens:
• ajudam o projetista a entender, classificar e modelar a realidade,
• melhoram a eficiência de implementações subsequentes,
• permitem melhor representar a semântica das novas aplicações de banco de dados,
provenientes de áreas não tradicionais.
1.2. Modelos de Dados Semânticos Modelos de dados são veículos para descrever a realidade. Um modelo de
dados é uma coleção de conceitos que podem ser usados para descrever um conjunto de
dados e operações para manipular os dados. Os modelos de dados servem de base para o
desenvolvimento de Sistemas de Gerenciamento de Banco de Dados (SGBDs).
Distingue-se dois tipos de modelos de dados:
• Modelos conceituais, que são ferramentas para representar a realidade em alto nível
de abstração;
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 6
• Modelos lógicos, que suportam descrições de dados que podem ser processados por
um computador (ex: modelos relacional, hierárquico, em redes). Esses modelos são
facilmente mapeados para a estrutura física do banco de dados .
Modelos de dados semânticos são modelos de dados que procuram capturar
tanto quanto possível, os relacionamentos semânticos existentes entre as entidades do
mundo real. São exemplos de modelos de dados semânticos o modelo Entidade-
Relacionamento e o modelo funcional DAPLEX.
1.2.1. Abstrações no Projeto Conceitual de Banco de Dados Para auxiliar o projetista na tarefa de modelar os dados, existem os mecanismos
de abstração de dados que permitem melhor representar a semântica da informação
envolvida na aplicação.
As abstrações comumente usadas no projeto conceitual são: classificação,
agregação e generalização.
♦ Abstração de Classificação: é usada para agrupar objetos similares, caracterizados
por propriedades comuns, em classes de objetos.
Ex: classe EMPREGADO - instancias : (João, Pedro, ..., Maria).
A classificação estabelece um relacionamento É-INSTANCIA-DE entre cada elemento
da classe e a classe.
♦ Abstração de Agregação: é um conceito de abstração para construir objetos
compostos a partir de seus objetos componentes.
Ex:
- Uma entidade é uma agregação de atributos: PESSOA, composta por Nome,
Sexo, Profissão;
- Um relacionamento é uma agregação de entidades e atributos;
- Um atributo composto é uma agregação de atributos;
- Pode-se agregar entidades relacionadas entre si, compondo uma entidade de nível
mais alto.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 7
Essa abstração estabelece um relacionamento É-PARTE-DE entre os componentes e
a classe.
♦ Abstração de Generalização: define um relacionamento de subconjunto entre os
elementos de duas ou mais classes.
Ex: classes CARRO e BICICLETA são subconjuntos da classe VEÍCULO.
Essa abstração estabelece um relacionamento É-UM entre a classe pai (chamada
superclasse) e cada classe filha (subclasse).
As subclasses são definidas com base em alguma característica da superclasse. No
exemplo dado, essa característica é tipo de veículo (Carro, Bicicleta).
Propriedade Fundamental da Generalização: Todas as abstrações definidas para a classe genérica são herdadas por todas as classes que são subconjunto.
1.3. Modelo EER (Extended Entity-Relationship)
1.3.1. Modelo ER Devido à popularidade e ampla utilização do modelo Entidade-Relacionamento (ER)
para o projeto conceitual de bancos de dados, várias extensões desse modelo foram
propostas, visando sua utilização para a modelagem de informações mais complexas. O
modelo ER foi proposto por Peter Chen em 1976, sendo que originalmente o modelo
incluia somente os conceitos de entidade, relacionamento e atributos; posteriormente
outros conceitos foram introduzidos no modelo, tais como atributos compostos e
hierarquias de generalização.
As entidades representam classes de objetos do mundo real. Na figura 1.2,
Aluno e Professor são exemplos de entidades. São representadas graficamente através
de um retângulo.
Relacionamentos representam associações entre duas ou mais entidades. Na
figura 1.2, orienta representa um relacionamento binário entre as entidades Professor e
Aluno, representando que um aluno tem 1 (um) professor como orientador e um
professor orienta n (vários) alunos. Os relacionamentos são representados graficamente
através de losangos.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 8
Os atributos representam propriedades das entidades ou dos relacionamentos.
Na figura 1.2 tem-se para a entidade Aluno os atributos nro_aluno e nome; Professor
possui os atributos nome e sexo.
nro_aluno n 1 nome orienta
Cardinalidade mínima e máxima de uma entidade em um relacionamento:
Para indicar, de forma mais precisa, a cardinalidade de um relacionamento, pode-se usar
uma notação que indique a ocorrência mínima e máxima de cada entidade no
relacionamento. Por exemplo, a cardinalidade do relacionamento da figura 1.2 pode ser
representada como na figura 1.3, indicando que um aluno pode ou não ter um orientador
e pode ter no máximo 1 orientador; um professor orienta vários alunos, podendo haver
professor que não orienta nenhum aluno.
nro_aluno (0,1) (0,n) nome orienta Figura 1.3 - Uso de cardinalidade mínima e máxima no relacionamento Cardinalidade mínima e máxima de um atributo : Os atributos também são caracterizados por cardinalidade mínima e máxima. Por
exemplo, na entidade Professor, da figura 1.4, o atributo títulos possui cardinalidade
mínima 1 e máxima n, indicando que cada professor deve ter no mínimo um título e
pode ter vários. Quando não especificado no atributo, o valor da cardinalidade é (1,1).
Fig. 1.4 - cardinalidade mínima e máxima de atributo
Professor
Aluno
Professor
nome sexo
nome sexo títulos (1,n)
Professor
Aluno nome sexo
Figura 1.2 - Diagrama Entidade-Relacionamento
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 9
Cardinalidade mínima de atributo igual a 0 (zero) indica atributo opcional;
cardinalidade máxima de atributo maior que 1 (um) indica que o atributo é
multivalorado.
Atributos compostos:
Um atributo composto representa um grupo de atributos que possuem uma afinidade em
significado ou uso. Como exemplo, considere o atributo endereço na figura 1.5, que é
composto por Rua, Cidade, Estado, País e CEP.
Fig. 1.5 - atributo composto Um identificador interno é um atributo ou grupo de atributos que determina uma entidade. Será adotada a representação da figura 1.6 para identificador interno. identificador ident1 ident2 Fig. 1.6 - identificador interno Quando uma entidade é identificada através de outra entidade associada a ela, tem-se um identificador externo, cuja representação pode ser a da figura 1.7(a) ou usando a notação de entidade fraca (figura 1.7 (b)). Essa figura indica que o identificador de A faz parte do identificador de B
1.3.2. Extensão do Modelo ER
Para permitir melhor expressar as informações a serem modeladas, foram introduzidos
no modelo ER as hierarquias de generalização e de subconjunto.
endereço Professor
Rua Cidade Estado País CEP
A
B
Fig. 1.7 (b) - identificador externo
A
B
Fig. 1.7 (a) - identificador externo
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 10
♦ Hierarquia de Generalização: Uma classe E é uma generalização de um grupo de classes
E1, E2, ..., En se cada objeto das classes E1, E2, ..., En é também um objeto da classe E.
Uma forma de representar uma hierarquia de generalização é dada na figura 1.8.
♦ Propriedades de Cobertura da generalização
ú Cobertura TOTAL ou PARCIAL:
A cobertura de uma generalização é total (t) se cada elemento da classe genérica é
mapeada para pelo menos um elemento das classes especializadas.
Ex: A generalização formada pela classe PESSOA e as subclasses HOMEM e
MULHER (figura 1.9) possui cobertura total.
A cobertura é parcial (p) se existe algum elemento da classe genérica que não é
mapeado para nenhum elemento das subclasses.
Exemplo: Suponha que VEÍCULO é uma classe que contém outros tipos de veículos
além de carros e bicicletas. A generalização da figura 1.10 é parcial.
Fig.1.9 - cobertura total Fig.1.10 - cobertura parcial
parcial total
Pessoa
Homem Mulher
Veículo
Carro Bicicleta
E
E1 E2 En . . .
Fig. 1.8 - Hierarquia de generalização
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 11
ú Cobertura EXCLUSIVA (DISJUNÇÃO) ou de SOBREPOSIÇÃO (OVERLAPPING): A cobertura de uma generalização é exclusiva (e) se cada elemento da classe genérica é
mapeado para no máximo um elemento das subclasses.
Ex: A figura 1.10 representa uma cobertura exclusiva.
A cobertura é de sobreposição (s) se existe algum elemento da classe genérica que é
mapeado para elementos de duas ou mais subclasses diferentes. Ex: Na figura 1.11, supondo que pode existir aluno que cursa a graduação e a pós-
graduação ao mesmo tempo, tem-se uma cobertura de sobreposição.
Fig. 1.11 - cobertura de sobreposição Notação: Para denotar o tipo de cobertura de uma hierarquia de generalização será
usada a seguinte notação: (t,e), (t,s), (p,e), (p,s) e será indicado como na figura 1.12.
Quando numa generalização a cobertura não está especificada, admite-se que é (t,e).
(p,e) Fig. 1.12 - cobertura parcial e exclusiva ♦ Hierarquia de Subconjunto: uma entidade E1 é um subconjunto de uma entidade E
se toda ocorrência de E1 for também uma ocorrência de E (figura 1.13). É um caso
particular da hierarquia de generalização.
Numa hierarquia de subconjunto o tipo de cobertura é (p,e) sempre.
Veículo
Carro Bicicleta
sobreposição
Aluno
Aluno- Graduaçao
Aluno-Pós- Graduação
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 12
A representação de hierarquia de subconjunto é dada na figura 1.13.
Observações:
1. O identificador da entidade genérica é também um identificador para as entidades da
especialização.
2. Entidades da especialização podem ter outros identificadores, como mostrado na
figura 1.15.
nome RG título situação- serv-mil nome_ nro-emp nome_divisão categoria posição
solteira Fig.1.15 1.4. Exercícios 1. Indique na figura 1.9 se a cobertura é exclusiva ou sobreposição. 2. Indique na figura 1.11 se a cobertura é total ou parcial. 3. Indique as propriedades de cobertura da generalização na figura 1.16.
Suposições: - só existem jogadores de futebol e de tênis;
- pode ter jogadores que jogam os dois esportes.
Pessoa
Homem Mulher Empr Chefe Gerente Militar divisão ident-na- divisão
Cliente
Cliente Especial
nro-cli nome-cli endereço
vantagens
Fig.1.14 - Exemplo
E
E1
e1 e2 e3
e4 e5
Fig.1.13 - hierarquia de subconjunto
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 13
Fig.1.16 4. Verifique como as propriedades de cobertura se relacionam com as restrições de
cardinalidade. (Sugestão: interprete hierarquias de generalização como tipos especiais
de relacionamento entre classes).
5. Transforme as hierarquias do exerc.4 em relacionamentos entre a classe genérica e as
subclasses.
6. Considerando a propriedade fundamental de hierarquias de generalização, simplifique
o esquema da figura 1.17.
mora (1,n) (1,n) nome nasci- da (1,1) (1,n) (1,1) reside (0,n) idade tra- balha (0,1) idade Fig.1.17 7. Considere o esquema da figura 1.17. Como você pode mudá-lo para representar no
esquema todos os empregados, homens e mulheres?
Masculino
Jogador
Futebol Tênis
Pessoa
Feminino
Cidade
Soldado Empregado
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 14
8. Faça o esquema conceitual do seguinte problema:
Uma companhia mantém informações sobre todas as pessoas que, de
alguma forma, possuem com ela algum vínculo, dentre essas seus funcionários. Os
seguintes requisitos foram levantados junto aos usuários:
a. De cada pessoa mantém-se um código, o nome, endereço.
b. De cada funcionário guarda-se também seu salário e o departamento a que ele
pertence. Desses funcionários, alguns são gerentes e para cada um destes guarda-se os
nomes dos projetos que eles gerenciam.
c. Dos demais funcionários que são operários, guarda-se suas habilidades (um operário
pode ter várias habilidades).
d. Mantém-se também os tipos de trabalho executados na Companhia (código e
característica) e os operários que executaram cada trabalho, juntamente com o período
que isto se deu. Sabe-se também que pode haver operários que não exercem nenhum
tipo de trabalho dentre os cadastrados.
e. Deve-se também manter os dependentes de cada funcionário (nome, sexo e data de nascimento).
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 15
2. Questões no Projeto Conceitual de um Banco de Dados
2.1.Introdução
A meta na fase de projeto conceitual é obter um esquema conceitual do banco de dados
que seja tão completo e expressivo quanto possível. Esse esquema deve procurar
expressar o máximo da semântica envolvida na informação. Mecanismos de
representação de alto nível são empregados, tais como representação de hierarquias de
subconjunto e de generalização, representação de restrições de cardinalidade e de
atributos compostos e multivalorados. Para a representação do esquema conceitual
geralmente utiliza-se uma extensão do modelo Entidade-Relacionamento.
Visões:
Quando as aplicações são complexas e usualmente diferentes analistas estão envolvidos
no processo de projeto do banco de dados, a aplicação pode ser particionada em
atividades menores, representando visões de grupos de usuários.
Visão, na fase de projeto conceitual, é a parte de um banco de dados ou dos requisitos
de dados de uma aplicação que é vista por um usuário ou grupo de usuários.
2.2. Projeto de Visão
Refere-se à modelagem da parte do banco de dados de interesse de um usuário ou grupo de
usuários, com base nos requisitos de dados, usando os conceitos de um modelo de dados.
Os requisitos podem estar expressos através de:
• Descrições em linguagem natural, através da qual os usuários expõem suas
necessidades;
• Formulários impressos em papel, que são utilizados para coletar dados. Se já
houver um sistema preexistente, esses formulários podem ser telas formatadas para
entrada de dados;
• Declarações de registros pertencentes a aplicações preexistentes.
2.2.1. Projeto de Visão com base em Linguagem Natural Considere a seguinte descrição de um sistema envolvendo dados de uma universidade:
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 16
1 [Em um bd de universidade representamos dados sobre
2 alunos e professores]. [ Para alunos,
3 representamos o último nome, idade, sexo, cidade e estado de
4 origem, cidade e estado de residência de suas
5 famílias, locais e estados onde viveram antes
6 (com o período em que viveram), disciplinas que
7 tenham cursado, com nome, código, professor,
8 nota e data.] [Representamos também disciplinas que
9 estão freqüentando presentemente e para cada dia, locais
10 e horários que as aulas são oferecidas (cada disciplina
11 é oferecida no máximo uma vez em um dia)].[ Para estudantes
12 graduados, representamos o nome do orientador
13 e o número total de créditos do último ano.
14 Para alunos de doutorado, representamos o título e área de pesquisa
15 de suas teses].[ Para professores, representamos o último
16 nome, idade, local e estado de origem, nome do
17 departamento a que pertencem, número do telefone,
18 título, estado civil e tópicos de sua pesquisa.]
Requisitos do banco de dados da universidade. Nessa descrição pode-se identificar algumas ambigüidades, como mostrado abaixo. LINHA TERMO NOVO TERMO RAZÃO PARA CORREÇÃO
5 locais Cidades Local é uma palavra genérica 6 período número de anos Período é uma palavra genérica 9 Presentemente no ano corrente Presentemente é ambíguo 9 dia dia da semana mais específico 9 locais Salas Homônimo de locais na linha 5 10 aulas Disciplinas Sinônimo de disciplinas na linha 8 11 estudantes Alunos Sinônimo de alunos na linha 2 16 local Cidade igual à linha 5 17 telefone telefone do
departamento mais específico
18 tópico área de pesquisa linha 14 Termos ambíguos nos requisitos, com possíveis correções.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 17
Descrição com os termos ambíguos substituídos por novos termos: [Em um bd de universidade representamos dados sobre alunos e professores]. [Para
alunos, representamos o último nome, idade, sexo, cidade e estado de origem, cidade e
estado de residência de suas famílias, cidades e estados onde viveram antes (com o
número de anos em que viveram), disciplinas que tenham cursado, com nome, código,
professor, nota e data]. [Representamos também disciplinas que estão freqüentando no
ano corrente e para cada dia da semana, salas e horários que as disciplinas são
oferecidas (cada disciplina é oferecida no máximo uma vez em um dia)]. [Para alunos
graduados, representamos o nome do orientador e o número total de créditos do último
ano. Para alunos de doutorado, representamos o título e área de pesquisa de suas teses].
[Para professores, representamos o último nome, idade, cidade e estado de origem,
nome do departamento a que pertencem, número do telefone do departamento, título,
estado civil e áreas de pesquisa] .
Requisitos após a filtragem das ambigüidades. Exercício: Faça o esquema conceitual desse banco de dados.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 18
2.2.2. Projeto de Visão com base em Formulários Distinguem-se: - Partes do formulário que não apresentam informações relevantes a serem
armazenadas (assinaturas, data de emissão, cabeçalho, etc.).
- Partes que são pré-impressas no formulário e que referem-se a nomes de campos;
- Partes que devem ser preenchidas pelos usuários e que serão armazenadas no
sistema;
- Partes descritivas referentes às instruções que devem ser seguidas para preencher os
campos do formulário.
A seguir são dados vários exemplos de formulários. Para cada caso, faça o esquema conceitual correspondente. a) Formulário para registrar informações de docentes que atuam em programa de pós-
graduação. Formulário 1
INFORMAÇÃO DE DOCENTE ATUANTE NA PÓS-GRADUAÇÃO Nome do docente: __________________________________________ Departamento:_____________________________________________ Mês/Ano término doutorado:__________________________________ Instituição do doutorado: _____________________________________ Áreas de atuação (no máximo 4 áreas): __________________________ __________________________________________________________ __________________________________________________________ Orientações de Mestrado/Doutorado no programa: Nome do aluno Data Data Categoria início término (mestr/dout)
. . .
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 19
b) Considere no formulário 1 as seguintes alterações: b1) para informações sobre alunos, adicionar colunas para indicar a situação do aluno:
b2) Para docente incluir campos para assinalar opções, onde várias opções podem ser selecionadas para um mesmo docente:
Assinale:
� Professor contratado
� Ministra aula na graduação
� Possui vínculo com outras Instituições. Se sim, indique os nomes das Instituições: ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________ ____________________________________________________________
c) Considere a tabela tridimensional que representa os gastos de várias companhias
para um período de 3 anos. Sobre cada companhia deseja-se guardar esses gastos,bem como o nome da companhia, CGC e endereço.
Gastos nos últimos 3 anos
Ano Mês 1996 Jan Fev Mar Abr ... Dez
01-15 quinzena 16-31
1997 Jan Fev Mar Abr ... Dez 01-15 quinzena 16-31
1998 Jan Fev Mar Abr ... Dez 01-15 quinzena 16-31
Nome do aluno . . . Categoria Situação (mestr/dout) cursando trancado Abandonou
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 20
2.2.3. Projeto de Visão com base em Declarações de Registro A seguir são tratados alguns aspectos relativos à estrutura de declaração de arquivos como guia para a modelagem de esquemas E-R (Entidade-Relacionamento). Não serão tratadas declarações de registros de um SGBD (Oracle, Acess, Dbase, Paradox, etc...), e sim, declarações de registros de linguagens de mais baixo nível (C, C++, Pascal, Cobol, etc...). As aplicações comerciais geralmente utilizam arquivos compostos de registros que são armazenados na memória secundária. Esses arquivos são acessados, consultados e/ou alterados de acordo com as funções executadas pelo sistema. Os registros são compostos de campos. Os campos por sua vez podem ser compostos de sub-campos. Como conseqüência, geralmente têm uma estrutura hierárquica, e cada campo se coloca numa posição desta hierarquia. Em C pode-se utilizar estruturas ou classes definidas pelas cláusulas struct/class, para armazenar informações nos arquivos segundo as estruturas declaradas. O mesmo se aplica aos tipos definidos em Pascal. Em Cobol, a declaração do(s) arquivo(s) que irá(ão) fazer parte do sistema é realizada em uma estrutura chamada DATA DIVISION. Cobol é formado por quatro partes principais ( as DIVISIONS). São elas: • IDENTIFICATION (Identificação do programa - nome, autor, data compilação...); • ENVIRONMENT (Informações a respeito do ambiente físico de compilação e de
execução); • DATA (Descrição resumida de cada arquivo e a organização dos registros no
arquivo); • PROCEDURE (Informações a respeito do processamento em si). A parte que nos interessará é a DATA DIVISION, que é subdividida da seguinte forma: DATA DIVISION. FILE SECTION. [descrição do arquivo descrição do registro]... WORKING STORAGE SECTION [descrição de item ou de registro]... A seguir apresenta-se um exemplo de declaração de um arquivo e da estrutura dos registros em Cobol, e as correspondentes declarações de registros em C e em Pascal .
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 21
COBOL: DATA DIVISION FILE SECTION FD ARQUIVO-EXEMPLO BLOCK CONTAINS O RECORDS RECORD CONTAINS 80 CHARACTERES 01 EXEMPLO 05 DADO-NUMERICO PIC 9(8). 05 LETRA PIC X(1). C: struct exemplo { int dado_numerico; char letra; };
Pascal: Type Exemplo = record dado_numerico: integer; letra: char; end;
Na declaração de um registro podem estar expressos vários tipos de campos, como por exemplo, campos simples, campos multivalorados (em COBOL os campos multivalorados são definidos na cláusula OCCURS), redefinição de campos (através da cláusula REDEFINES), etc. Esses campos devem ser mapeados para uma modelagem adequada no esquema, que expresse toda a semântica da informação envolvida. A seguir são dados vários exemplos de declarações de registros em COBOL. Para cada caso, faça o esquema conceitual correspondente. a) Considere a declaração em COBOL dos registros para um arquivo de pedidos: 01 PEDIDO. 02 NRO-PEDIDO PIC X(10). 02 DATA-DE-EMISSÃO. 03 DIA PIC 9(2). 03 MÊS PIC 9(2). 03 ANO PIC 9(2). 02 DATA-ENTREGA.
03 DIA PIC 9(2). 03 MÊS PIC 9(2). 03 ANO PIC 9(2).
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 22
02 VALOR. 03 PREÇO PIC 9(6)V99. 03 TAXA-MUDANÇA PIC 9(6)V99. 02 PEÇAS-PEDIDO OCCURS 10 TIMES. 03 CODIGO-PEÇA PIC 9(6). 03 QTIDADE PIC 9(4). b) Uso de cláusulas OCCURS subordinadas: 01 PRODUTO. 02 NOME PIC X(20). 02 CÓDIGO PIC X(4). 02 PREÇO PIC 9(5). 02 QTDE-EM-ESTOQUE. 03 QTDE-EM-ESTOQUE-POR-ANO OCCURS 4 TIMES. 04 QTDE-EM-ESTOQUE-POR-MÊS PIC 99 OCCURS 12 TIMES. c) Redefinição de campo Permite ao programador definir a mesma parte de um registro usando declarações de campos diferentes. Com isso, otimiza o espaço de armazenamento físico. 01 PESQUISADOR.
02 NOME-PESQUISADOR PIC X(30). 02 ENDEREÇO PIC X(25). 02 DOCENTE-INTERNO.
03 NOME-PROGRAMA-POS-GRAD PIC X(27). 03 PROJETOS-PESQUISA-DO-DOCENTE PIC X(15) OCCURS 5 TIMES. 02 PESQUISADOR-VISITANTE REDEFINES DOCENTE-INTERNO. 03 INSTITUIÇÃO-ORIGEM PIC X(50). 03 DATA-INÍCIO. 04 DIA PIC 9(2). 04 MÊS PIC 9(2). 04 ANO PIC 9(2).
03 DATA-TÉRMINO. 04 DIA PIC 9(2). 04 MÊS PIC 9(2). 04 ANO PIC 9(2).
03 AREA-ATUAÇÃO PIC X(10) OCCURS 4 TIMES. d) Ponteiros Simbólicos
02 EMPREGADO. 03 CÓDIGO PIC X(10). 03 COD-DEPTO PIC X(5).
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 23
03 COD-PROJETO PIC X(7) OCCURS 10 TIMES.
02 DEPTO. 03 CÓDIGO PIC X(5). 03 NOME PIC X(20).
02 PROJETO. 03 CÓDIGO PIC X(7). 03 COD-DEPTO PIC X(5). 03 DESCRIÇÃO PIC X(30). 03 EMPREGADO-RESPONSÁVEL PIC X(10).
e) Ponteiro que se refere ao campo identificador do registro em que ele é definido.
01 PROJETO. 02 CÓDIGO PIC X(7).
02 DESCRIÇÃO PIC X(30). 02 CÓDIGO-SUPERPROJETO PIC X(7). 02 ORÇAMENTO PIC 9(6)V99.
2.2.4. Exercícios - Projeto de Visão
1. Construa um esquema conceitual para a seguinte descrição em linguagem natural:
Projete o banco de dados para um ambiente de suporte de programação. Nesse ambiente
os programadores produzem programas, que são escritos em determinadas linguagens
de programação. Cada programa é escrito por um certo programador, pode chamar
outros programas e pode ser usado por determinados usuários. Os usuários são
reconhecidos por seu nome de log-in e por seu código; os programas têm nomes
compostos que incluem o nome do programa, a extensão e o código do programador. Os
programas têm um número de versão, uma data e uma breve descrição; alguns
programas interagem com SGBDs. Cada SGBD mantém dados armazenados na forma
de relações, com vários atributos e uma chave primária. Cada banco de dados é definido
por um administrador de banco de dados, que é um programador especializado em
gerenciamento de dados.
2. Transcreva as definições de arquivo em COBOL a seguir para um esquema ER. A
aplicação lida com o controle distribuído de um processo industrial. O arquivo DADOS-
EMPREGADO indica que cada empregado pode controlar comandos e alarmes. O
arquivo SISTEMA-COMANDOS lida com comandos disponíveis para controle de
processos e os locais onde cada comando pode ser executado. O arquivo SISTEMA-
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 24
ALARMES lida com os mesmos dados para alarmes. Finalmente, o arquivo
COMUNICAÇÕES descreve dados sobre subsistemas de comunicação, sua tecnologia,
os dispositivos conectados, locais dos dispositivos, etc. A transmissão de dados pode ser
através de microondas ou cabos.
01 DADOS-EMPREGADO. 02 NRO-ID PIC 9(6). 02 NOME PIC X(20). 02 SUPERVISOR-EMPREGADO PIC 9(6). 02 SISTEMA-COMANDO-CONTROLADO PIC X(5) OCCURS 10 TIMES. 02 SISTEMA-ALARME-CONTROLADO PIC X(5) OCCURS 10 TIMES. 01 SISTEMA-COMANDOS. 02 TIPO PIC X(5). 02 DATA PIC 9(6). 02 HORARIO. 03 HORA PIC 99. 03 MINUTO PIC 99. 03 SEGUNDO PIC 99. 02 POSIÇÃO. 03 NOME PIC X(20). 03 LOCAL PIC X(20). 03 TIPO PIC X(5). 01 SISTEMA.ALARMES. 02 TIPO PIC X(5) 02 DATA PIC 9(6). 02 VALOR PIC 9(8). 02 HORARIO. 03 HORA PIC 99. 03 MINUTO PIC 99. 03 SEGUNDO PIC 99. 02 POSIÇÃO. 03 NOME PIC X(20). 03 LOCAL PIC X(20). 03 TIPO PIC X(5). 01 COMUNICAÇÕES. 02 TECNOLOGIA PIC X(8). 02 VELOCIDADE PIC 9(6). 02 DISPOSITIVO-REMOTO OCCURS 10 TIMES. 03 NOME PIC X(10). 03 TIPO PIC X(5). 03 LOCAL PIC X(20).
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 25
02 DADOS-CABO. O3 MODEM. 04 TIPO PIC X(10). 04 TAXA-TRANSMISSÃO PIC 9(6). 02 DADOS-MICROONDAS REDEFINES DADOS-CABO. 03 RADIO. 04 RADIO PIC X(5). 04 MODO-TRANSMISSÃO PIC X(5). 04 FREQUENCIA PIC X(10). 04 ANTENA PIC X(5).
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 26
2.3. Integração de Visões
Integração de visões: Processo de fusão de vários esquemas conceituais em um esquema conceitual global que representa todos os requisitos da aplicação. Aconselha-se o uso do processo de integração principalmente para aplicações complexas, aonde o volume de informação é grande, podendo haver vários analistas envolvidos no processo de projeto. O projetista estabelece uma prioridade entre os esquemas com base em sua importância, confiabilidade e completitude. A integração dos esquemas pode ser realizada por etapas conforme ilustrado abaixo:
Análise de Conflito: realiza-se uma análise nos esquemas a serem integrados para verificar se há algum conflito entre informações de diferentes esquemas. Os tipos de conflitos que podem ocorrer são: a. Conflito de nome: Sinônimos : quando há nomes diferentes para uma mesma informação em diferentes esquemas. Nesse caso deve-se escolher um dos nomes e renomear os demais com esse nome. Homônimos: quando há informações diferentes com o mesmo nome. Nesse caso deve-se renomea-las para diferenciar. b. Conflito estrutural: Após realizada a eliminação dos conflitos de nomes, tem-se que dois conceitos de diferentes esquemas com mesmo nome representam o mesmo conceito. Esses conceitos com mesmo nome são agora comparados para verificar se podem ser fundidos num único. Usa-se o seguinte procedimento:
Esquema 1 Esquema 2
Esquema parcial integrado
Esquema 3
Esquema n
Esquema global
correção dos conflitos
. . .
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 27
b1. Conceitos idênticos Se os conceitos são idênticos (mesma representação e mesmos relacionamentos com outras entidades), eles se resumem num único. b2. Representações diferentes da mesma realidade:
Se os conceitos são compatíveis, isto é, possuem diferentes representações não contraditórias, muda-se uma das representações.A seguir tem-se exemplos de esquemas nessa situação.
b3. Especificações de projeto incompatíveis: Se os conceitos forem incompatíveis, como por exemplo, diferentes cardinalidades para o mesmo atributo ou relacionamento, diferentes identificadores, etc., as possíveis soluções são: selecionar uma das representações ou construir uma representação comum satisfazendo todas as restrições dos dois esquemas. Exemplo: esquema 1 esquema 2
Livro título nome_editora
Livro
Editora
título
nome
esquema 1 esquema 2
Pessoa nome sexo
Pessoa nome
Homem Mulher
esquema 1 esquema 2
Empregado
Projeto
(1,n)
(1,n)
Empregado
Projeto
(1,1)
(1,n)
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 28
2.4. Estudo de Caso: Gerenciamento de uma Biblioteca Projeto de Visões – Biblioteca particular de pesquisadores Considere os esquemas conceituais a seguir que têm por finalidade armazenar
informações sobre publicações (livros, revistas, etc) de uma biblioteca.
O esquema 1 representa informações de interesse de pesquisadores em suas bibliotecas
particulares. Nesse esquema tem-se:
Publicação: publicações (artigos) mantidas pelos pesquisadores em seus gabinetes
particulares. Elas são geralmente obtidas pelos pesquisadores através de contatos com
os autores.
Tópico: refere-se às áreas de pesquisa de interesse dos autores.
Solicitado-por: relaciona artigos que foram enviados por autores, aos pesquisadores
que os solicitaram.
O esquema 2 representa as informações a serem mantidas na biblioteca do
Departamento desses pesquisadores:
Publicação: publicações presentemente mantidas na biblioteca.
Artigo: artigos publicados em revistas ou anais mantidos na biblioteca.
Comprado-pelo: indica que o pesquisador é responsável pelo recurso usado para
comprar a publicação.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 29
Etapa1: Analisar os esquemas da Fig. 2.1 a e b, quanto a : a) conflito de nomes b) conflitos estruturais
Tópico
Publicação
Anais
Referente-a
Pesquisador
Editora Publicado-por
Comprada-pelo
cód-tópico nome
(1,n)
(1,n)
(0,n)
(0,n)
Último-nome posição grau cidade-nasceu
nome endereço
trata
(1,n)
Título estante
Empresta
dia-emprestimo
Revista Livro
(1,1)Autor (1,n)
Artigo
pertence-rev
pertence-anais
Título autor (1,n)
(1,n)
(0,1)
(0,1)
(0,n)(0,n)
(0,1)
(0,n)(1,1)
Fig. 2.1 - (b) Esquema :Biblioteca do Depto (esquema 2)
Tópico
Autor
Pertence Grupo_ Pesquisa
de_interesse
Publicação
Publ-de-interesse
Pesquisador
Escrito_por
(0,n)
nome
(1,n)
(1,n)(1,n)
nome endereço
Séries
Livro de-interesse
Pertence_a
ultimo-nome idade estado-nasceu
Editora tem
Nome endereço
Último-nome endereço
(1,n)
(1,n)
(1,n)
(1,n)
(1,n)
(1,n)
(1,1)
(1,1)
(1,n)(1,n)
nome editor
número título ano
Solicitado-por
Enviado-por
(0,n)
(0,n)
(0,n)
(0,n)
(0,n)
(0,n)
título palavra-chave (1,n) ano
Fig. 2.1 - (a) Esquema : Biblioteca Particular (esquema 1)
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 30
Exemplo: Gerenciamento de uma Biblioteca - Esquemas modificados
Área_ pesquisa
Autor
Pertence Grupo_ Pesquisa
de_interesse
Artigo
Artigo-de-interesse
Pesquisador
Escrito_por
(0,n)
nome
(1,n)
(1,n)(1,n)
nome endereço
Séries
Livro de-interesse
Pertence_a
ultimo-nome idade estado-nasceu
Editora tem
Nome endereço
Último-nome endereço
(1,n)
(1,n)
(1,n)
(1,n)
(1,n)
(1,n)
(1,1)
(1,1)
(1,n)(1,n)
nome editor
número título ano
Solicitado-por
Enviado-por
(0,n)
(0,n)
(0,n)
(0,n)
(0,n)
(0,n)
título ano
Tópico
Publicação
Anais
Referente-a
Pesquisador
Editora Publicado-por
Comprada-pelo
cód-tópico nome
(1,n)
(1,n)
(0,n)
(0,n)
Último-nome posição grau cidade-nasceu
nome endereço
trata
(1,n)
Título estante
Empresta
dia-emprestimo
Revista Livro
(1,1)
Artigo
pertence-rev
pertence-anais
Título
(1,n)
(0,1)(0,1)
(0,n)(0,n)
(0,1)
(0,n)(1,1)
Tópico
nome A-T
(1,n)
(1,n)
(1,n)
Autor escreve- livro
escrito_ por
(0,n) (0,n)
(1,n)
(1,n)
nome
Fig. 2.2 - (a) Esquema : Biblioteca Particular (esquema 1)
Fig. 2.2 - (b) Esquema :Biblioteca do Depto (esquema 2)
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 31
Etapa 2: Fazer a integração dos esquemas. Esquema global após fusão dos esquemas: Biblioteca Particular e Biblioteca do Depto
Publicação (1,n)
título estante
Tópico
Referente-a
cód-tópico nome
(1,n)
(1,n)
(1,1)
Pesquisador
Comprada-pelo
(0,n)
último-nome posição grau cidade-nasceu estado-nasceu idade
Empresta
dia-emprestimo
(0,n)
(0,1)
Anais Livro Revista
trata
Artigo título ano
(1,n)
(0,1)
pertence-rev
pertence-anais
(0,1)
(0,n)(0,n)
Editora
Publicado-por
(0,n)
nome endereço
(1,1)
Série
Pertence_a
de
(1,n)
(0,n)
(1,1)
(1,1)
(1,n)
número ano
nome editor
de-interesse
Autor
Escrito_por
Escreve-livro
(0,n)
Área-Pesquisa
de_interesse (1,n) (1,n)
nome-area
Último-nome endereço
(1,n)
(1,n)
(0,n)
(1,n)
artigo-de-interesse
(1,n)
(1,n)
Solicitado-por
(0,n)
(0,n)
(0,n)
Enviado-por
(0,n)
(0,n)
(0,n)
Pertence Grupo_ Pesquisa
(0,n)
(1,n)nome endereço
Fig. 2.3 – Esquema global (fusão de Biblioteca Particular e Biblioteca do Depto
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira
2.5. Melhorando a Qualidade de um Esquema de Banco de Dados
Meta: Aplicar transformações para reestruturar o esquema para produzir uma versão melhor em termos das seguintes qualidades: a. Ser completo b. Ser correto c. Ser mínimo d. Ser expressivo e auto explicativo e. Ser Legível f. Estar normalizado
2.5.1. Qualidades de um esquema de BD a. Ser completo • esquema completo com relação aos requisitos: se todos os requisitos do domínio da
aplicação estiverem representados no esquema. • requisitos completos com relação ao esquema: se cada conceito no esquema é
mencionado nos requisitos. b. Ser correto Um esquema é correto quando usa adequadamente os conceitos do modelo ER. Erros semânticos mais freqüentes:
a. Usar um atributo no lugar de uma entidade.
b. Esquecer de representar uma generalização.
c. Esquecer a propriedade de herança das generalizações.
d. Usar um relacionamento com um número errado de entidades (por ex: usar um relacionamento binário no lugar de um relacionamento ternário).
e. Usar uma entidade ao invés de um relacionamento.
f. Esquecer algum identificador de entidade, especialmente identificadores
compostos externos.
g. Omitir alguma especificação de cardinalidade mínima ou máxima.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 33
c. Ser mínimo
Um esquema é mínimo se não for possível eliminar qualquer conceito do esquema sem perder informação. Exemplo: • nro_empregados pode ser eliminado sem afetar o conteúdo de informação do
esquema, pois pode ser derivado a partir do esquema, logo o esquema não é mínimo. • Pode-se permitir alguma redundância no esquema, que deve ser documentada. d. Ser expressivo e auto-explicativo
Um esquema é expressivo quando pode ser entendido através dos construtores do esquema E-R, sem a necessidade de explicação adicional.
Exemplo: Considere o esquema:
Suponha que cada aluno tem, no máximo, um orientador de mestrado e um orientador de doutorado e um mesmo aluno pode ser um aluno de mestrado e de doutorado(em momentos diferentes). A informação acima está totalmente representada no esquema?
(1,n)
Empregado nome data-nasc
trabalha
Projeto código gerente nro_empregados
(1,n)
Aluno
tem orientador
Professor
(0,2)
(0,n)
tipo
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 34
e. Ser legível Respeitar critérios de estética que tornam o diagrama agradável. - evitar cruzamento de ligações dos relacionamentos; - evitar curvas - hierarquias: pai deve ser colocado acima dos filhos.
Solução:
A
D
C B
C A D
B
mudar para
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 35
2.5.2. Transformações de Esquema Esquema E1
transformações Esquema E2
2.5.2.1. Transformações para conseguir minimalidade
Situações que apresentam redundância na modelagem:
a) Ciclos de Relacionamentos Exemplo:
- Trab-no é redundante? - Trab-com é redundante? - Dirige é redundante?
b) Atributos Derivados Atributos derivados podem ser omitidos de um esquema ER, porém podem ser úteis para melhorar a eficiência do banco de dados.
(1,1)
Empregado
trab-com
Diretor
Dirige
Departamento
Trab-no
(1,1)
(1,1)
(1,n)
(1,n)
(1,n)
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 36
c) Subconjuntos Implícitos
2.5.2.2. Transformações para conseguir Expressividade Expressividade: melhorada quando se simplifica o esquema. Transformações típicas para melhorar a expressividade: a) Eliminar Subentidades "Inexpressivas" em Hierarquias de Generalização: Inexpressivas: sem atributos ou com poucos
b) Eliminar Entidades "Inexpressivas"
Membro Ensino
Professor Instrutor Estudante Graduado
Membro Ensino
categoria
nome RG idade cidade_nasc
Pessoa
transformar para:
(1,n)
Pessoa
nome RG idade
nascida Cidade
nome
(1,1)
Empregado
Especialista em Computação
Analista
Empregado
Analista
integração?
Solução:
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 37
c) Criar uma Generalização Quando se tem entidades com propriedades semelhantes. No exemplo a seguir, Professor e Instrutor têm propriedades semelhantes.
Melhorando a expressividade:
d) Criar um Subconjunto
Professor dá Seminário
Instrutor ensina Curso
ensina
dá
auxilia
Assistente Ensino
Membro Docente ensina Atividade
Seminário Curso Instrutor Professor
auxilia
Assistente Ensino
nome nro
Empregado dirige Carro_da_ Compainha
tipo nro_licença ano
(0,1) (1,1)
Motorista dirige Carro_da_ Compainha
tipo nro_licença ano
(1,1) (1,1)
nome nro
Empregado
Transformar para:
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 38
Obs: Quando for significativo para o projeto, pode-se usar a criação de um novo subconjunto quando a entidade possui cardinalidade mínima = 0 em um relacionamento. Isso enfatiza o papel da entidade.
2.5.2.3. Transformações para obter Normalização 2FN:
Exemplo da 2FN para relacionamento:
dependências funcionais: nro-al, cod-disc à prof, média cod-disc à prof
Pedido
nro-ped nro-peça custo qtde data
Pedido
nro-ped data
P-P
(1,n)
Peça
nro-peça custo
qtde
(1,n) dependências funcionais: nro-ped, nro-peça à qtde nro-peça à custo nro-ped à data
Aluno
nro-aluno
cursou
Discip
cod-disc
prof média
Aluno
nro-aluno
cursou
Discip
cod-disc prof
média
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 39
3FN:
dependências funcionais: nro-e à nome, nro-depto, nome-depto, nro-divisão, gerente nro-depto à nome-depto, nro-divisão nro-divisão à gerente
Empregado
nro-e nome nro-depto nome-depto nro-divisão gerente
Suposição: Cada departamento pertence a uma só divisão e cada divisão tem um gerente.
Empregado
nro-e nome
Pertence
Departamento
nro-depto nome-depto
Da
Divisão
nro-divisão gerente
Obs: 2 transitividades: nro-e à nro-depto à nro-divisão nro-depto à nro-divisão à gerente
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 40
Exemplo de relacionamento que viola a 3FN:
nro-e, nro-depto : identificador de trabalha Para os atributos do relacionamento tem-se: nro-e, nro-depto à nro-proj, verba, horas-trab nro-proj à verba => não está na 3FN Passando para a 3FN:
(1,n) (1,n)
nome nro-e
Empregado Trabalha Depto
nro-depto nome
verba nro-proj horas-trab
(1,n) (1,n)
nome nro-e
Empregado Trabalha Depto
nro_depto nome
horas-trab
Projeto
nro_proj verba
(1,n)
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 41
2.5.3. Reestruturação do esquema de Gerenciamento de uma Biblioteca Reestruturação do esquema da Fig. 2.3 (Etapa 3).
código ano
último-nome posição grau idade
Endereço Último_nome
Publicação
título estante
(1,1)
Pesquisador
Comprada-pelo
(0,n) Empresta
dia-emprestimo
(0,n)
(0,1)
(0,n)
nasceu-em
Cidade-nasc
código nome estado
(1,1)
(1,n)
(1,n)
Tópico
Referente-a
cód-tópico nome
(1,n)
Trabalho_de_autoria
Publicação- coletiva
de-interesse
Artigo título ano
Livro número ano
Tipo-publ
Solicitado-por
Enviado-por
Autor
(1,n)
(0,n) (1,n)
Editora
Publicado-por
(0,n)
(1,1)
Série
Pertence_a
de
(1,n)
(1,n)
(1,1)
(1,1) nome editor
nome endereço
Escrito_por
Área-Pesquisa
de_interesse (1,n) (1,n)
nome-area
Pertence Grupo_ Pesquisa
(1,n)
nome endereço
(0,n) (0,n)
(0,n) (0,n) (0,n)
(1,n) (1,n)
trata
(1,n)
(0,n)
contém
(1,n)
(1,1)
Fig. 2.4 - Esquema global após reestruturação
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 42
2.6. Exercício
Deseja-se desenvolver o esquema conceitual do banco de dados de informações sobre os empregados de uma empresa. As informações sobre o sistema está organizado em 4 visões, conforme mostrado a seguir. a) Faça o esquema conceitual de cada uma dessas visões. Faça a integração das visões
por etapas, conforme dado em aula. Para os esquemas intermediários, caso queira, indique somente as partes que mudam na nova etapa de integração, porém o esquema final deve ser completo.
Siga as seguintes diretrizes: 1. Os esquemas devem satisfazer aos critérios de qualidade dados em aula. 2. FAÇA AS SUPOSIÇÕES QUE ACHAR NECESSÁRIAS E INDIQUE-AS (faça isso, por exemplo, para as cardinalidades de relacionamentos não definidas nas visões). 3. Use a notação dada em aula para desenhar os esquemas. Visão 1 - Formulário para cadastramento de empregado. Nome do empregado:____________________________________ Nro empr:________ Endereço:______________________________________________________________ RG:_________________________________ CIC: _____________________________ Data nascimento:_________________ nro carteira reservista: _____________________ Sigla Depto: ______ Nome Depto:___________________Data admissão:___________ Dependentes (no máximo 10): Nome dependente Data nascimento ________________________________________________ ________________________________________________ ________________________________________________ . . . Se vendedor, indicar: região em que atua: ___________________ Porcentagem comissão:__________ � Viajante regional � Viajante nacional � Não é viajante
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 43
Visão 2 - Formulário para cálculo de salário. Um empregado é horista ou mensalista. As informações de cada mês, constantes do formulário, devem ser mantidas no bd. Nome do empregado:________________________________ Sigla Depto:__________ Mês/Ano: ________________ � Horista. Tipo Contrato:______ Horas Trabalhadas no mês:_____ Horas extras no mês:__________ � Mensalista. Regime de Trabalho:________________ Total faltas no mês:______ Visão 3 - Informações sobre empregados e departamentos. Declaração dos registros em COBOL. 01 EMPREGADO. 02 NRO-EMP PIC X(5). 02 SALÁRIO PIC 9(4). 02 ENDEREÇO PIC X(30). 02 COD-DEPTO PIC X(4). 02 SECRETÁRIA. 03 FORMAÇÃO PIC X(10). 02 OPERADOR REDEFINES SECRETÁRIA. 03 TURNO PIC X(7). 02 ENGENHEIRO REDEFINES OPERADOR. 03 ESPECIALIDADE PIC X(10) OCCURS 3 TIMES. 01 DEPTO. 02 COD-DEPTO PIC X(4). 02 NOME-DEPTO PIC X(15). 02 LOCAL PIC X(10).
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 44
Visão 4 - Histórico de vendas no atacado e varejo, de cada vendedor, nos últimos 5 anos. Nesse formulário são colocados os valores totais de venda em cada mês, no atacado e varejo.
Nome do Vendedor : ________________________________________ Sigla Depto: __________
Ano Tipo Jan Fev Mar Abr Mai Jun Jul Ago Set Out Nov Dez
1993
Atacado
Varejo
1998 Atacado
Varejo
1999 Atacado
Varejo
2000 Atacado
Varejo
2001 Atacado
Varejo
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 45
3. Projeto Lógico de Banco de Dados
Projeto lógico de banco de dados é a fase do projeto de um banco de dados que visa
desenvolver o esquema lógico do banco de dados, voltado para o modelo de dados a ser
adotado para sua implementação. Se for adotado o Modelo Relacional (como é o caso aqui
abordado), esta etapa irá gerar como resultado um esquema de banco de dados relacional,
que contemple, da melhor forma possível, as necessidades dos usuários. Esse esquema
lógico é gerado com base no esquema conceitual do banco de dados, que, por sua vez, foi
gerado durante a etapa de projeto conceitual. Cabe a esta etapa de projeto lógico realizar
transformações no esquema conceitual, visando torná-lo eficiente no atendimento às
consultas mais freqüentes e/ou mais críticas que serão realizadas sobre o banco de dados.
Assim, esta etapa está preocupada com o desempenho das operações a serem executadas no
banco de dados. Pode-se destacar duas tarefas a serem realizadas nesta etapa: Refinamento
do Esquema Conceitual e Mapeamento para o modelo de dados adotado.
A seguir são apresentadas essas tarefas, aonde o termo entidade é utilizado no lugar
de tipo de entidade, por questões de simplicidade de expressão. Pelo mesmo motivo
utiliza-se relação no lugar de esquema de relação.
3.1. Refinamento do Esquema Conceitual
O objetivo desta tarefa é reestruturar o esquema conceitual para obter um novo
esquema no qual as operações mais importantes possam ser executadas mais
eficientemente.
Realiza-se um refinamento nas entidades do esquema, de modo a reduzir o número
de acessos lógicos das operações às entidades e a quantidade de dados transferidos em
operações de entrada e saída entre o meio de armazenamento e a memória.
Para auxiliar a análise das operaçõesa realizadas sobre o banco de dados pode-se
utilizar um esquema de navegação, conforme descrito na seção 3.4. É neceessário
realizar uma estimativa do volume de acessos das operações para apoiar a decisão
quanto a modificações no esquema do banco de dados, visando obter melhor
desempenho. A seção 3 discute uma forma de realizar essa estimativa do volume de
acessos.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 46
Deve-se observar, no entanto, que esse número de acessos lógicos e a quantidade de
dados transferidos não são estimados precisamente neste ponto, pois dependem da
descrição das estruturas físicas que serão projetadas numa fase posterior.
Pode-se aplicar as seguintes transformações no esquema, visando otimizar a
execução das operações:
• particionamento de entidades,
• fusão de entidades
• reprodução de atributos
3.1.1. Particionamento de Entidades Subdivide-se em grupos os atributos que não fazem parte do identificador da
entidade. Os atributos que irão compor cada grupo são escolhidos de acordo com as
operações que usam o grupo de atributos. Para o particionamento de uma entidade,
segue-se os passos:
Escolhe-se os atributos que são mais usados pelas operações que acessam a entidade
através do seu identificador, formando um grupo com esses atributos, juntamente
com o identificador. Esse grupo forma a sub-entidade principal.
Para cada grupo restante constrói-se uma sub-entidade, que é conectada à sub-entidade
principal através de um relacionamento 1:1. A sub-entidade principal identifica as
outras sub-entidades.
Cada relacionamento, do qual a entidade original participa, é transferido para a sub-
entidade que usa o relacionamento mais freqüentemente.
Exemplo: Considere a entidade Vendedor, da figura 3.1 abaixo e suponha que as
operações sobre essa entidade, na maioria, usam somente os atributos nome e endereço
do vendedor e que apenas as operações que calculam a comissão dos vendedores e o
relatório mensal de comissão de vendedor utilizamos outros atributos. Nessas
condições, a entidade Vendedor é uma candidata ao particionamento, resultando nas
entidades Dados-Comissão-Vendedor e Vendedor, mostradas na figura 3.2.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 47
(1,1)
(1,1) (o,n)
Vendedor
nro-vendedor nome_vendedor endereço
atende
Cliente
nro-clinome_cliender_cli
saldolim_cred
(1,1)
(o,n)
Pedido
nro-ped data
faz
Dados_comissão_Vendedor
comissão_total taxa_comissão
é_do
(1,1)
Fig. 3.2
(1,1) (o,n)
Vendedor
nro-vendedor nome_vendedor endereço comissão_total taxa_comissão
atende
Cliente
nro-clinome_cliender_cli
saldolim_cred
(1,1)
(o,n)
Pedido
nro-ped data
faz
Fig. 3.1
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 48
3.1.2. Fusão de entidades
Para reduzir o número de acessos lógicos, pares de entidades conectadas por um
único relacionamento 1:1 são examinados para decidir de devem ser fundidos.
As operações que utilizam as entidades são divididas em duas classes:
- operações que usam o relacionamento e ambas as entidades,
- operações que usam somente uma das entidades.
Se o número de acessos lógicos na primeira classe for maior que na segunda classe,
as entidades são fundidas em uma nova entidade que herda todos os atributos das
originais.
3.1.3. Reprodução de atributos Os atributos a1, a2, ..., an de uma entidade x são candidatos a uma reprodução em
uma entidade y conectada a x, se a presença de a1, a2, ..., an em y elimina a necessidade
de travessia de x para y em algumas operações.
A reprodução de atributos força a introdução de operações adicionais para manter a
consistência mútua dos dados. Deve-se, portanto, pesar as vantagens e desvantagens da
sua utilização.
Além das transformações discutidas acima pode-se também usar atributos derivados
para otimizar a execução de operações.
3.2. Mapeamento para o Modelo Relacional O objetivo dessa tarefa é gerar o esquema relacional com base no esquema refinado
(resultado da aplicação das transformações discutidas no item anterior). A atividade
básica realizada aqui refere-se à tradução das entidades e dos relacionamentos do
esquema refinado, para o esquema relacional. Para tanto, seguem-se as regras:
a. Entidades com identificação externa
Para todos os pares de entidades x e y do esquema refinado, tal que x identifica
externamente y, constrói-se:
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 49
- uma relação correspondente à entidade x,
- uma relação correspondente a y, contendo o identificador da entidade x.
Os identificadores principais das entidades tornam-se as chaves primárias das
relações correspondentes e são sublinhados no esquema relacional. O identificador
de y será o conjunto de atributos formado pelo identificador de x com o
identificador de y.
b. Demais entidades
As outras entidades restantes do esquema, após realizado o passo a anterior, são
mapeadas para relações correspondentes.
Nos passos a e b, os atributos compostos e os multivalorados são tratados da
seguinte forma:
- atributos compostos: incluir na entidade somente seus atributos simples
- atributos multivalorados: para cada atributo multivalorado m criar uma relação
contendo esse atributo e a chave primária ch da relação original. Se o atributo
multivalorado m não for composto (atributo a3 do esquema do exemplo a
seguir), a chave primária da nova relação será composta pela chave primária ch
e o atributo m. Se o atributo multivalorado m for composto (atributo a4 do
exemplo), a chave primária será composta pela chave primária ch juntamente
com um subconjunto do conjunto de atributos que compõem m.
Exemplo:
Mapeamento da entidade A:
A(a1, a21, a22)
A1(a1, a3)
A
a1 a2 a3 (1,n) a4(1,n) a41
a42 a43
a21 a22
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 50
A2(a1, a41, a42, a43) à supondo que são necessários os 3 atributos (a1, a41 e
a42) para identificar, de forma única, a entidade A2.
c. Relacionamentos
• 1:1
Escolher uma das entidades (por ex. E1) que participam do relacionamento para
conter como chave estrangeira a chave primária da outra entidade (por ex.E2).
Aconselha-se escolher uma entidade com participação total no relacionamento para
fazer o papel de E1. Se houver atributos no relacionamento, inclui-los em E1.
• 1:N (não fraco)
Incluir na relação do lado N a chave primária do lado 1, tornando-se esta uma chave
estrangeira da relação. Incluir os atributos do relacionamento na entidade do lado N.
Obs: Essa regra refere-se ao uso de cardinalidade 1:N. No caso de uso da restrição
(min, max) para a cardinalidade do relacionamento, a chave primária da relação do
lado indicado com (min,N) deve ser incluida como chave estrangeira na relação do
lado (min,1).
• M:N
Criar uma nova relação para representar o relacionamento. Os atributos que irão
compor esta relação serão as chaves primárias das duas relações participantes do
relacionamento (estes irão formar a chave primária desta nova relação), juntamente
com os atributos do relacionamento.
• Relacionamentos n_ários, n>2
O tratamento é análogo ao de relacionamento N:M. A chave primária geralmente é a
combinação das chaves primárias das entidades participantes do relacionamento.
Obs: O tratamento dado para relacionamentos N:M pode ser adotado para
relacionamentos 1:1 e 1:N quando existem poucas instâncias envolvidas no
relacionamento (isto é, quando se trata de relacionamento parcial).
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 51
d. Tratamento de hierarquias de generalização
Considere a hierarquia de generalização da figura a seguir.
O mapeamento dessa hierarquia para esquemas de relação pode seguir uma das opções
abaixo:
d1. Criar um esquema de relação correspondente a C:
C (ch, a1, a2, ..., an)
e um esquema de relação para cada Si, i=1,...,m :
Si (ch, atributos de Si )
d2. Somente criar um esquema de relação Ri para cada subclasse Si, i=1,...,m:
Ri (ch, a1, a2, ..., an, atributos de Si )
Esta opção é adequada para hierarquias de generalização com cobertura total e
exclusiva.
Um inconveniente dessa opção é que para toda busca interessada em recuperar
uma entidade arbitrária em C, deve-se pesquisar todas as m relações Ri.
d3. Criar uma só relação R, colocando em R os atributos de todas as entidades
envolvidas na generalização. Neste caso pode-se ter as seguintes situações:
d3a. As classes são disjuntas: cria-se um atributo t para indicar a qual subclasse uma
determinada tupla de R pertence.
R(ch, a1, a2, ..., an, atributos de S1, atributos de S2, ..., atributos de Sm, t)
ch a1 a2 ... an
C
S1 S2 Sm . . .
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 52
d3b. As classes se sobrepõem:
R(ch, a1, a2, ..., an, atributos de S1, atributos de S2, ..., atributos de Sm, t1, t2,..., tm)
onde cada ti pode ser um atributo booleano para indicar se a tupla pertence ou não à
subclasse Si.
O uso da opção d3 é válido quando o número de atributos das subclasses é pequeno.
No geral, essa opção gera um grande número de valores nulos.
e. Mapeamento de Hierarquias de Herança Múltipla
Para hierarquias de herança múltipla pode-se usar qualquer opção dada. Usualmente
utiliza-se a opção 1, como a seguir.
Considere o esquema abaixo:
Utilizando a opção 1, o mapeamento desse esquema gera o seguinte conjunto de
relações:
C1(ch1, atributos da entidade C1)
C2(ch2, atributos da entidade C2)
S (ch1, ch2, atributos da entidade S)
A chave primária de S pode ser a de C1 ou de C2.
Exemplo:
C1 C2
S
ch2 ch1
Aluno Professor
Assistente- Ensino
RG nome cargo
nro-alnomecurso
previsão_fim_curso horas_disponíveis
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 53
Aluno(nro-al, nome, curso)
Professor(RG, nome, cargo)
Assistente_Ensino(nro-al, RG, previsão_fim_curso, horas_disponíveis)
3.2.1. Exercícios – Mapeamento 1. Faça o mapeamento do esquema conceitual do exercício 8, do capítulo 1.
2. Faça o mapeamento do esquema conceitual da figura 2.4.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 54
3.3. Tópicos Adicionais sobre Modelagem de Dados e Mapeamento Análise de diferentes situações
3.3.1.Categorização - mapeamento Em algumas situações de modelagem, surge a necessidade de modelar um único
relacionamento de superclasse/subclasse, com mais que uma superclasse, onde as
superclasses representam diferentes tipos de entidade. Nesse caso chamamos a
subclasse uma categoria.
Exemplo: Suponha que temos três tipos de entidades: PESSOA, BANCO E
COMPANHIA. Em um banco de dados para registro de veículos, um proprietário de um
veículo pode ser uma pessoa, um banco ou uma companhia. Precisamos criar uma
classe que inclui entidades de todos os três tipos para exercer o papel de proprietário de
veículo. Cria-se uma categoria PROPRIETÁRIO que é uma subclasse da união das três
classes PESSOA, BANCO E COMPANHIA.
A figura 3.3, a seguir, representa uma categoria. As superclasses PESSOA, BANCO E
COMPANHIA são conectadas ao círculo com um símbolo U, indicando uma operação
de união de conjunto. Na figura 3.3 tem-se duas categorias: PROPRIETÁRIO, que é
uma subclasse da união de PESSOA, BANCO e COMPANHIA e
VEÍCULO_REGISTRADO, que é uma subclasse da união de CARRO e CAMINHÃO.
VEÍCULO_REGISTRADO inclui alguns carros e alguns caminhões, mas não
necessariamente todos eles (alguns carros ou caminhões podem não ser registrados).
Uma categoria pode ser:
a) Total ou parcial;
b) As superclasses podem ter diferentes atributos chaves (como na categoria
PROPRIETÁRIO) ou o mesmo atributo como em veículo registrado;
c) Quando a categoria é total ela pode ser alternativamente representada como uma
generalização. Se duas classes representam os mesmos tipos de entidades e
compartilham muitos atributos, incluindo o mesmo atributo chave, generalização/
especialização é preferido, caso contrário a categorização é mais apropriada.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 55
Fazer o mapeamento das categorias para o modelo relacional.
3.3.2. Atividades de extensão - fazer o esquema conceitual Deseja-se armazenar os projetos de extensão desenvolvidos pelos docentes de uma universidade. Todo Projeto possui: um número, ano (número e ano identificam um projeto), nome do projeto, público alvo e responsável. Projetos nào existem por si, eles são compostos por pelo menos uma atividade. As atividades de extensão que podem compor um projeto são: Cursos: tipo do curso, carga horária, data de início, data de final do curso; Reuniões: número de inscritos, número de participantes, taxa cobrada, período; Eventos: número de participantes, tipo do evento (congresso, simpósio, seminário,etc) Serviços: receita envolvida (cobrada), tipo de serviço.
Fig. 3.3 - Exemplo de Categorização
Pessoa
Banco
Companhia
U
Proprietário
nomeRG
endernro_cart_mot
nomeB enderB nomeC enderC
Possui
Veículo-Registrado
nro_chassi
Carro
Caminhão
id_veículo fabricante ano estilo
id_veículo tonelagem ano
U
(1,n)
(1,n)
data_compra
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 56
Um projeto pode consistir de qualquer conjunto de atividades entre as listadas, podendo inclusive conter uma mesma atividade mais de uma vez.
3.3.3. Docentes e Docentes Bolsistas - fazer o esquema conceitual Deseja-se desenvolver um bd para armazenar informações sobre todos os docentes de uma universidade. Se o docente já obteve algum tipo de bolsa (de mestrado, doutorado, pós-doutorado) deseja-se guardar informações complementares a respeito de sua situação como bolsista. De cada docente deseja-se guardar: um código de identificação, nome, CPF, RG e cargo. Para docentes bolsistas deseja-se guardar: tipo da bolsa (mestrado/doutorado/pós-doutorado), instituição de desenvolvimento do trabalho, local, data de início e de fim da bolsa. Um docente pode ter sido bolsista de uma mesma categoria mais de uma vez, em períodos diferentes envolvendo a mesma instituição de desenvolvimento do trabalho ou não. 1) Agregação - Fazer mapeamento Deseja-se desenvolver um banco de dados para armazenar informações sobre entrevistas de candidatos a trabalhos para várias companhias. Para Companhia deseja-se guardar nome e endereço. Para candidatos: nome, RG, telefone e endereço. A cada entrevista realizada com um candidato deve-se guardar a data e nome da pessoa da companhia que realizou a entrevista. Algumas entrevistas geram ofertas de trabalho, envolvendo as informações: tipo de trabalho, descrição.
Companhia Candidato entrevista
(1,n) (1,n)
data entrevistador
resulta-em
Trabalho tipo_trabalho descrição
(0,n)
(0,n)
nome endereço
RG Nome Fone ender
Fig. 3.4 - Agregação
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 57
3.3.4. A modelagem satisfaz aos requisitos dos usuários? a) Dado o esquema abaixo,indique quais das consultas a seguir retornam informações corretas: • Dado o número de um aluno, recupere o nome das disciplinas que ele está cursando
atualmente e os nomes dos professores que estão dando aula para esses alunos. • Dado o nome de um departamento, recupere os nros dos alunos que são orientados
por professores, desse departamento, que atuam na área de pesquisa "Banco de Dados".
• dado o RG de um professor, recupere o nome dos alunos que estão cursando suas
disciplinas.
Fig. 3.5
pertence
RG (1,n)
(1,n)
(1,n)
(1,n) (1,n)
(1,n)
(0,n)
fone nomedepto
(1,n)
Cursa
Pessoa
Depto
Aluno
Professor
Aluno- graduado
Aluno- Doutorado
Disciplina
Aprovado
ministra
Cod-disc nome
(1,1)
titulo-tese ano-ingresso
curso
estado-civil titulação (1,n) área-pesquisa
sexo nro-al
nome idade
(1,n) orienta
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 58
b) O esquema a seguir atende à consulta: "Selecione os nomes dos clientes que compraram a revista "Veja" na livraria Saraiva1." ?
Fig. 3.6
3.3.5. Elaboração de Esquemas Conceituais a) Deseja-se fazer a modelagem de um banco de dados envolvendo peças e projetos, onde para cada peça deseja-se guardar o código da peça, a descrição e o conjunto de cores existentes para a peça; para cada projeto deseja-se guardar o código do projeto, uma descrição e o nome do coordenador do projeto. Um projeto usa várias peças e uma peça pode ser usada por diferentes projetos. Faça o esquema conceitual desse problema, supondo-se que deseja-se guardar também o preço das peças nas seguintes situações:
a1) Para diferentes projetos, uma peça pode possuir diferentes preços.
a2) Para diferentes projetos, uma peça pode possuir diferentes preços e para um mesmo projeto, uma mesma peça pode ser usada em vários tamanhos distintos , possuindo preços diferentes dependendo do tamanho, porém o mesmo código.
nomeRG
fone
Livraria
vende
Publicação
cod_publ nome_publ editora
compra
Cliente
frequenta nome_livr endereço fone
(1,n)
(1,n)
(1,n)
(1,n)
(1,n)
(0,n)
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 59
b) Deseja-se manter um banco de dados de empregados, departamentos e projetos. Dos empregados deseja-se manter seu número (único para cada empregado), nome, endereço e informações sobre as funções exercidas nos projetos (código da função, nome, descrição). Dos departamentos mantém-se a sigla (que identifica cada departamento), descrição, localização, nomes de suas repartições e data de início e de término de mandato de cada diretor. Cada departamento possui apenas um diretor em um determinado momento, que é um empregado do departamento. Um mesmo empregado pode ter sido diretor mais de uma vez em épocas diferentes. Todo departamento possui um diretor. Dos projetos guarda-se seu código, descrição e o departamento a que pertence.
As seguintes condições devem ser contempladas: a) Um departamento desenvolve vários projetos e todos os empregados do
departamento trabalham em todos os projetos desenvolvidos em seu departamento.
b) Os empregados só trabalham em projetos desenvolvidos em seu departamento e cada empregado trabalha em um departamento específico.
c) Cada empregado exerce certas funções em certos projetos (isto é, em projetos distintos, um mesmo empregado pode exercer funções diferentes) e em cada projeto um empregado pode exercer mais de uma função.
d) Não existe departamento sem empregados. e) Pode existir departamento que não desenvolve nenhum projeto.
Faça o esquema conceitual desse banco de dados usando o modelo Entidade-Relacionamento.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 60
3.4. Esquema de Navegação para Operações de Banco de Dados
Uma operação de banco de dados é uma interação elementar com o banco de
dados (através de um comando de recuperação ou atualização), que não inclui
comandos de controle (tais como, if-then-else, while-do, repeat-until). Essas operações
podem ser realizadas através de uma única chamada ao sistema de banco de dados.
Num sistema de banco de dados, as operações são realizadas como parte das
atividades que compõem um processo. Para cada operação desenha-se um esquema de
operação, que é um subconjunto do esquema do banco de dados contendo todos os
elementos que são mencionados na especificação da operação ou que são requeridos
para navegação, se eles não são explicitamente mencionados. Um esquema de operação
inclui:
- atributos usados para condições que governam a seleção de entidades e
relacionamentos,
- atributos usados por operações de recuperação ou atualização,
- entidades ou relacionamentos nos quais são inseridas ou eliminadas
instâncias ou entidades das quais serão recuperadas instâncias,
- relacionamentos ou hierarquias de generalização que são usadas para
navegação.
Um esquema de navegação é um esquema de operação acrescido de símbolos
especiais (exemplificado na figura 3.7):
- setas apontando para os atributos: indicam os atributos que são usados nas
condições de seleção;
- setas ao longo dos relacionamentos: indicam a navegação no banco de dados;
- Letras R (Retrieval), U(Update), I(Insert) e D(Delete) dentro das entidades
ou dos relacionamentos indicam a operação de acesso ao banco de dados.
a1 E1 R
R R
a2
a3 a4
E2
R
Fig. 3.7. Um esquema de navegação
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 61
O esquema de navegação da figura 3.7 corresponde à consulta em SQL:
SELECT a3, a4
FROM E1, R, E2
WHERE condição-a1 AND condição-a2 AND condições de junção
Exemplo. Considere o esquema de banco de dados da figura 3.8 e a seguinte operação
a ser realizada nesse banco de dados: "Selecione todos os nomes de alunos que tiveram
média inferior a 6.0 em pelo menos uma disciplina de 2 créditos". O esquema de
navegação correspondente a essa consulta é mostrado na figura 3.9.
nome-traborientador
(0,1) data-defesa
média ano-sem
Disciplina
cod nome créditos
cursa Aluno
nroalnome
cursou
(0,n) (0,n)
(0,n) (0,n)
Aluno-Mestrado
Fig. 3.8 - Banco de dados de alunos e disciplinas
(0,n)
média
Disciplina
créditos
cursou
Aluno nome (0,n)
Fig. 3.9 - Esquema de navegação da consulta
RR
R
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 62
O esquema de navegação é útil para as fases subsequentes do projeto do banco
de dados, em particular para projeto lógico. Na construção de esquemas de navegação
deve-se considerar as seguintes questões:
a) existem operações que podem gerar mais do que um esquema de navegação;
b) a mesma entidade ou relacionamento pode ser usada em diferentes maneiras pela
mesma operação e isso resulta em uma replicação da entidade ou relacionamento no
esquema de navegação.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 63
3.4.1. Exercícios - Esquema de Navegação Para o esquema de bd da figura 3.8, faça o esquema de navegação das consultas a seguir. 1. Selecionar os nomes dos alunos de mestrado que tiveram média inferior a 6.0
em pelo menos uma disciplina de 2 créditos”. 2. Selecionar os nomes das disciplinas que o aluno “João da Silva”cursou ou está
cursando.
Para o esquema da figura 3.10 faça os esquemas de navegação para as operações a seguir.
3. Recuperar os nomes de todos os programadores que moram em cidades com menos
que 1000 habitantes.
4. Dado o RG e nome de casada de uma pessoa do sexo feminino existente, atualizar
seu nome e inserir seu nome de solteira.
5. Selecionar os nomes dos físicos que moram na mesma cidade em que eles nasceram.
(p,e)
Pessoa
RGnome
profissãodata-nasc
sexo(0,1) nome_cônjuge
nascida
mora Cidade
cod estado habitantes nome
(1,1) (0,m)
(0,m) (0,m)
Homem
cart-reservista
Mulher Casada
nome-solteira
Fig. 3.10
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 64
3.5. Modelagem da Carga do Banco de Dados
O termo "carga do banco de dados" será empregado para significar as atividades
ou aplicações que serão realizadas sobre o banco de dados. Para caracterizar a carga
serão utilizados: o volume dos dados e a descrição das aplicações.
O volume dos dados é medido no modelo ER pela determinação das seguintes
informações:
- N(E) - número médio de instâncias da entidade E
- N(R) - número médio de instâncias do relacionamento R;
- cardinalidade média card-media(E,R) (média, para simplificar) de cada
entidade E em cada relacionamento R que ela participa.
Num esquema, a informação sobre o volume dos dados pode ser representada conforme
mostrado na Figura 5, aonde são
definidos: o número médio estimado
de instâncias das entidades; o
número médio estimado de
instâncias dos relacionamentos; e as
cardinalidades médias de cada
relacionamento, para cada instância
de entidade envolvida no
relacionamento, definidas ao lado
das cardinalidades mínima e máxima
dos relacionamentos. O esquema da
Figura 5 representa um banco de
dados de contas bancárias, com uma
média de 15.000 clientes, 20.000
contas e 600.000 transações. Para
cada cliente há, em média, 2 contas;
para cada conta há uma média de 1.5
clientes e 40 transações; cada
transação está relacionada, em
(1,2) média=1.33
(1,3) média=1.5
15.000 Cliente
nro-cli nome fone(1,n) endereço saldo-líquido nro-de-contas limite-crédito
30.000 mantém
20.000 Conta
nro-conta saldo-conta
800.000 possui
600.000 Transação
nro-trans data tipo valor
(1,n) média=2
(1,n) média=40
Figura 5 -Esquema com informação sobre volume de dados
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 65
média, com 1.33 contas (isso ocorre porque algumas transações envolvem mais do que
uma conta: por exemplo, transferência de conta entre conta corrente e poupança,
poupança e empréstimo, etc.).
A cardinalidade média é calculada por:
A carga da aplicação é estimada em termos das operações importantes
(transações em batch e on-line, bem como consultas ad hoc). Para muitos casos práticos,
é impossível ter uma idéia precisa sobre a futura carga sobre o banco de dados. Deve-se,
portanto, estimar a carga em termos das operações mais usadas.
Cada operação é descrita por:
- seu esquema de navegação;
- a freqüência média de ativação da operação, medida em uma unidade
apropriada (por exemplo,100 vezes ao dia, 5 vezes ao mês);
- o tipo da operação (se em batch ou on line).
Os exemplos aqui apresentados irão considerar que as operações são on-line.
As informações acima são utilizadas para a elaboração de uma tabela de volume
de acesso das operações. Essa tabela possui as seguintes informações (ver tabela
1): o nome da operação (um nome abreviado para a transação ou consulta); a
freqüência (indica quão freqüentemente a operação ocorre, em média); o nome
do conceito (refere-se ao conceito acessado no esquema de navegação); tipo do
conceito (E, se entidade ou R, se relacionamento); read/write (indica se o acesso
é de leitura ou escrita); e número médio de ocorrências acessadas.
Para o exemplo de contas bancárias, suponha que as seguintes operações
são realizadas:
O1: Abrir uma conta para um novo cliente (ou clientes, no caso de conta
conjunta). Freqüência: 100 vezes ao dia.
O2: recuperar o saldo líquido de um cliente. Freqüência: 3000 vezes ao dia.
O3: Mostrar as últimas 10 transações de uma conta. Freqüência: 200 vezes ao dia.
O4: Retirar dinheiro de uma conta. Freqüência: 2000 vezes ao dia.
O5: Depositar dinheiro em uma conta. Freqüência: 1000 vezes ao dia.
card-média = N(R)/ N(E)
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 66
A tabela a seguir apresenta o volume de acessos lógicos da operação O1, avaliado com
base no esquema de navegação. Complete a tabela para as outras operações.
Legenda:
Op: nome da operação E/R: Tipo do conceito (Entidade ou Relacionamento)
R/W: Read ou Write
Tabela de volume de acessos lógicos das operações
Op Freq Conceito E/R R/W Média de ocorrências acessadas
O1
100 vezes/ dia Conta
Mantém
Cliente
E
R
E
W
W
W
100
100 x 1,5 = 150
100 x 1,5 = 150
O2
O3
O4
O5
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 67
4. Projeto Físico de Banco de Dados
Estruturas de Armazenamento - OpenIngres
4.1. HEAP
• Tabela desordenada • Inserção: rápida (linha adicionada no fim da tabela) • Adequada para carregar inicialmente a base de dados • Fator de preenchimento: 100% • Não deve ser usada para grandes tabelas, a não ser que se crie índices
secundários
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 68
4.2. HASH modify employee to hash on age
• Função hash para calcular o endereço, com base em uma chave. • É o método de acesso mais rápido para consultas de match exato • Não adequado para os tipos de buscas:
- match não exato: Recuperar empregados com idade>50
=> toda a tabela precisa ser pesquisada
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 69
- baseadas em faixas de valores. Ex: encontrar empregados com números entre 50 e 100.
- que utilizam só parte da chave. Ex: chave = (age,name) à Modify employee to hash on age, name Select * From employee Where employee.age = 28 => busca sequencial!
- que utilizam pattern matching. Ex: Select * from employee
Where name = ‘Mar%’ • fator de preenchimento = 50%
• Utilização: quando a recuperação das linhas é feita com base em valores
conhecidos da chave.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 70
4.3. ISAM
• Índice estático, nro estático de páginas na tabela principal • Novas inserções são colocadas :
- no final, se valor chave>todos os existentes, ou - em área de overflow
• Suporta: - pattern matching (‘MA%’) - busca por faixa de valores - busca através de chave parcial (desde que usada a parte mais da esquerda) - busca por match exato
• Utilização: para tabelas predominantemente estáticas.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 71
4.4. Btree
• O índice da Btree é dinâmico, crescendo com a tabela. • Nível de índice = Isam • Diferença da Btree para Isam:
- índice Isam aponta para página de dados - nível de índice Btree -> aponta para as páginas folhas.
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 72
• Permite buscas com:
- faixa de valores - pattern matching
• RESUMO:
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 73
4.5. Índices Secundários Create [unique] index [schema.] nome-indice on nome-tabela (nome-coluna {, nome-coluna}) [with opções] • Custos adicionais nas operações: atualização, eliminação e inserção. • Fatores a serem levados em conta:
- nro de vezes em que a consulta é executada - tempo de resposta aceitável - importância da consulta
Projeto de Banco de Dado Profa. Marina Teresa Pires Vieira 74
5. Bibliografia . BATINI, C.; CERI, S. & NAVATHE, S.B. - Conceptual Database Design. The Benjamin/Cummings Publishing Company, Inc., 470pp., 1992. . ELMASRI, R. & NAVATHE, S.B. - Fundamentals of Database Systems. Addison-Wesley Publishing Company, 3a. edição, 955 pp., 2000. . KORTH, H.F. & SILBERSCHATZ, A. - Sistema de Bancos de Dados. Makron Books, 2a. edição revisada, 754 pp., 1995. . RAMAKRISHNAN, R. - Database Management Systems. McGraw -Hill Companies, Inc., 741pp., 1998. . OpenIngres - Manual de utilização