Modelagem de Dados, Peter Chen
May 27, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Modelagem de Dados, Peter Chen...
Description
Rafael Gama de Macedo Jr.
O MÉTODO ENTIDADE-RELACIONAMENTO PARA PROJETO LÓGICO DE BANCOS DE DADOS
1. INTRODUÇÃO O gerenciamento de dados tornou-se uma das atividades mais importantes em muitas organizações. Conforme nos movemos para uma sociedade cada vez mais orientada para a informação, a determinação de como organizar os dados para maximizar sua utilidade torna-se um problema muito importante. Sistemas de arquivo e sistemas de banco de dados baseados em computador simplificam a tarefa de manter e recuperar uma grande quantidade de dados. Contudo, o problema de como organizar os dados para utilizar a capacidade total do sistema de arquivos ou do banco de dados não é bem compreendido por muitas pessoas que trabalham em processamento de dados. A finalidade desta obra é proporcionar uma metodologia que torne o processo de organização de dados mais fácil de ser compreendido e seguido. 1.1 TERMINOLOGIA BÁSICA Nesta seção, vamos explicar vários conceitos básicos em gerenciamento de dados. 1
2
Modelagem de Dados
Um registro é uma coleção de itens de dados. Por exemplo, um registro de funcionário contém os dados relevantes de um funcionário específico. (Ver Figura 1.) Um registro é dividido em vários campos. Na Figura 1, NOME, SALÁRIO e ENDEREÇO são os nomes dos campos de um registro de funcionário. Nomes de campos são utilizados para interpretar o significado dos itens de dados (ou valores) no registro. Portanto, "ROBERT JOHNSON" é o "NOME" de um funcionário específico e "10K" é o seu "SALÁRIO". Um arquivo é uma coleção de registros do mesmo tipo. Por exemplo, o arquivo de FUNCIONÁRIO é uma coleção de registros de FUNCIONÁRIO. (Ver Figura 2.) Um banco de dados é uma coleção de registros de tipos diferentes. (Ver Figura 3.) Os registros em um banco de dados são interligados, de forma que itens de dados relevantes em registros diferentes possam ser recuperados sem dificuldade. Por exemplo, podemos desejar interligar todos os registros de funcionários que trabalhem para o mesmo departamento (Ver Figura 4), de modo que seja fácil encontrar quem trabalha para um departamento específico. A Figura 4 ilustra a estrutura física de dados do banco de dados na qual as conexões entre registros de DEPARTAMENTO e registros de FUNCIONÁRIO são implementadas por cadeias. Um registro de DEPARTAMENTO tem um ponteiro que aponta para o primeiro registro de FUNCIONÁRIO na cadeia. Cada registro de FUNCIONÁRIO na cadeia tem um ponteiro que aponta para o registro de FUNCIONÁRIO seguinte. O último registro de FUNCIONÁRIO aponta de volta para o registro de DEPARTAMENTO. A Figura 4 ilustra os relacionamentos de ocorrências de registros no banco de dados, mas é detalhada demais para ser útil na comunicação de relacionamentos-chaves no banco de dados. A Figura 5 é uma maneira simples de representar a organização de registros da Figura 4. Cada retângulo na Figura 5 representa um tipo de registro e a seta representa a associação de registros de FUNCIONÁRIO com seus registros de DEPARTAMENTO. Há uma outra distinção entre as Figuras 4 e 5; a Figura 5 representa a estrutura lógica de dados do banco de dados, uma vez que mostra apenas a conexão entre o tipo de registro de DEPARTAMENTO e o tipo de registro de FUNCIONÁRIO, mas não mostra como essa conexão é implementada.
O método entidade-relacionamento para projeto lógico de bancos de dados
NOMES DE CAMPO
NOME
SALÁRIO
ENDEREÇO
ROBERT JOHNSON
10K
BOSTON, MASS.
VALORES Figura 1
Figura 2
Um registro de FUNCIONÁRIO.
ROBERT JOHNSON
10K
BOSTON, MASS.
LEE GOODMAN
25 K
N.Y., N.Y
JEAN WALTERS
16K
SAN JOSE, CALIF.
Um arquivo de FUNCIONÁRIO.
3
4
Modelagem de Dados UM BANCO DE DADOS
REGISTROS DE FUNCIONÁRIO
REGISTROS DE DEPARTAMENTO
FUNCIONÁRIO A
DEPARTAMENTO A
FUNCIONÁRIO B
DEPARTAMENTO B
FUNCIONÁRIO C
Figura 3
Um banco de dados com dois tipos de registros.
DEPARTAMENTO A
FUNCIONÁRIO B
FUNCIONÁRIO A
DEPARTAMENTO B
FUNCIONÁRIO C
Figura 4
Registros relevantes no banco de dados são interligados (estrutura física de dados do banco de dados).
FUNCIONÁRIO
DEPARTAMENTO
Figura 5
Estrutura lógica de dados do banco de dados.
O método entidade-relacionamento para projeto lógico de bancos de dados
5
1.2 PROJETO LÓGICO DE BANCO DE DADOS E PROJETO FÍSICO DE BANCO DE DADOS O projeto de bancos de dados pode ser dividido em duas etapas: projeto lógico e projeto físico. (Ver Figura 6.) O projeto físico de banco de dados é o processo de selecionar uma estrutura física de dados para uma dada estrutura lógica de dados. Por exemplo, há pelo menos três (3) estruturas físicas de dados possíveis dentro de um sistema de banco de dados CODASYL para dar suporte à mesma estrutura lógica de dados da Figura 6. A primeira é usar um "ponteiro para frente" para ligar todos os registros de FUNCIONÁRIO no mesmo departamento. A segunda é acrescentar "ponteiros para trás" aos registros de FUNCIONÁRIO. A terceira é usar um "conjunto de ponteiros" no qual o registro de DEPARTAMENTO mantém ponteiros para todos os registros de FUNCIONÁRIO relacionados. Cada uma dessas três estruturas físicas de dados tem suas vantagens e desvantagens. A primeira é fácil de implementar e é adequada para processamento seqüencial dos registros de FUNCIONÁRIO. A segunda torna relativamente fácil encontrar os registros de FUNCIONÁRIO anteriores na cadeia à custa de mais espaço de armazenamento necessário devido aos ponteiros para trás (também torna o processo de exclusão mais eficiente). A principal vantagem da terceira estrutura física de dados é que todos os registros de FUNCIONÁRIO que pertençam ao mesmo departamento podem ser recuperados simultaneamente. É importante observar que nenhuma estrutura física de dados é universalmente ótima. A finalidade do projeto físico de banco de dados é selecionar a estrutura física de dados que seja mais adequada para determinado ambiente de aplicação. Embora o projeto físico de banco de dados seja um tópico importante, não vamos aprofundar a discussão a esse respeito nesta obra. O projeto lógico de banco de dados é o processo de planejar a estrutura lógica de dados para o banco de dados. (Ver Figura 6.) Isto envolve uma análise do ambiente de aplicação e dos tipos de estruturas lógicas de dados disponíveis no sistema de banco de dados. Atualmente, há poucas ferramentas para auxiliar o processo de projeto lógico de
6
Modelagem de Dados
banco de dados; o projetista de banco de dados geralmente tem de contar com sua intuição e experiência. Como resultado, muitos bancos de dados existentes hoje em dia não são adequadamente projetados. Nesta obra, vamos nos concentrar no processo de projeto lógico de banco de dados e introduzir uma ferramenta útil e prática para ajudar o projetista de banco de dados. MUNDO REAL
ESTRUTURA FÍSICA DE DADOS
ESTRUTURA LÓGICA DE DADOS
DEPARTAMENTO A
FUNCIONÁRIO A
PONTOS DE INTERESSE PARA A EMPRESA
PROJETO FlSICO DE DEPARTAMENTO BANCO DE DADOS FUNCIONÁRIO
FUNCIONÁRIO B
DEPARTAMENTO A
FUNCIONÁRIO A
FUNCIONÁRIO B
DEPARTAMENTO A
FUNCIONÁRIO A
Figura 6
FUNCIONÁRIO B
Projeto lógico e físico de banco de dados.
1.3 SISTEMAS DE BANCOS DE DADOS E MODELOS DE DADOS Há muitos sistemas de bancos de dados em uso no momento. Eles podem ser classificados em três (3) categorias principais: hierárquico, de rede e relacionai. Uma das principais diferenças entre eles é o tipo de estruturas lógicas de dados que podem ser suportadas. Sistemas hierár-
O método entidade-relacionamento para projeto lógico de bancos de dados
7
quicos de bancos de dados, como o Information Management System (IMS) da IBM, requerem que os tipos de registro de dados sejam organizados em uma forma hierárquica. (Ver Figura 7.) Essa estrutura hierárquica de dados funciona bem com alguns bancos de dados, mas torna-se difícil projetar bancos de dados usando um sistema hierárquico quando não existe uma hierarquia natural entre os tipos de registro. Sistemas de bancos de dados em rede (ou CODASYL), tais como o Integrated Data Store (IDS) da Honeywell, o DMS-1100 da UNIVAC e o IDMS da Cullinane, proporcionam capacidades mais complexas de estruturas de dados do que os sistemas hierárquicos. Por exemplo, os sistemas de rede permitem que um tipo de registro tenha múltiplos tipos de registro como "pais". (Ver Figura 8.) Os sistemas relacionais (a maioria dos quais é experimental no momento)* usam tabelas como estruturas lógicas de dados. (Ver Figura 9.) Em resumo, o projeto lógico de bancos de dados preocupa-se com a organização de dados em uma forma aceitável para o sistema de banco de dados subjacente. (Ver Figura 10.) DEPARTAMENTO
FUNCIONÁRIO
HABILIDADE
Figura 7
Estrutura "hierárquica" de dados.
"No momento" se refere a 1977, atualmente esses sistemas são de uso generalizado. (N. do R. T.)
8
Modelagem de Dados
DEPARTAMENTO
FUNCIONÁRIO
HABILIDADE
FUNCIONÁRIO-HABILIDADE
Figura 8
Estrutura de dados "de rede".
TABELA DE FUNCIONÁRIO
TABELA DE DEPARTAMENTO NºD
ORÇAMENTO
NOME
SALÁRIO
ENDEREÇO
1
10M
JOHNSON
10K
BOSTON
5
5M
GOODMAN
15 K
NYC
8
20M
WALTERS
16 K
SAN JOSÉ
TABELA DE HABILIDADE NºH
NOME-H
5
FORTRAN
2
COBOL
1
PM
Figura 9
TABELA DE FUNCIONÁRIO-HABILIDADE
TABELA DE DEPARTAMENTO-FUNCIONÁRIO
NOME
NºH
NºD
NOME
JOHNSON
1
1
JOHNSON
JOHNSON
2
1
GOODMAN
GOODMAN
1
5
WALTERS
GOODMAN
5
Estrutura de dados "relacional" ("tabela").
O método entidade-relacionamento para projeto lógico de bancos de dados
9
ESTRUTURA LÓGICA DE DADOS (ESQUEMA DO USUÁRIO)
MUNDO REAL
HIERÁRQUICA
PONTOS DE INTERESSE PARA A EMPRESA
PROJETO LÓGICO DE BANCO DE DADOS
REDE
(COMO?)
RELACIONAL
Figura 10
Projeto Lógico de Banco de Dados.
1.4 PROBLEMAS NO PROJETO LÓGICO DE BANCOS DE DADOS O projeto de bancos de dados é, hoje em dia, um processo complicado, uma vez que o projetista tem de considerar não apenas como modelar o mundo real, mas também as limitações do sistema de banco de dados e a eficiência da recuperação e atualização dos dados. Por exemplo: 1. O projetista de banco de dados é restringido pelos tipos limitados de estrutura de dados que são suportados pelo sistema de gerência de banco de dados. Por exemplo, os relacionamentos muitos-para-muitos entre dois tipos de entidades,
10
Modelagem de Dados
tais como os relacionamentos entre funcionários e projetos, não podem ser representados diretamente em muitos sistemas de banco de dados. 2. O projetista de banco de dados pode ter de considerar a via de acesso dos registros (ou seja, como acessar um tipo particular de registro). Por exemplo, a suposição implícita na Figura 3 é que registros de FUNCIONÁRIO têm de ser acessados por meio do registro de DEPARTAMENTO correspondente. 3. O projetista de banco de dados pode querer tornar a recuperação e a atualização mais eficientes. Assim, os dados sobre uma entidade no mundo real podem ser colocados em mais de um registro para propósitos de eficiência. Por exemplo, os itens de dados sobre um funcionário podem ser agrupados em dois registros: FUNCIONÁRIO-PRINCIPAL e FUNCIONÁRIO-DETALHE. Há dois problemas no método convencional de projeto de banco de dados: 1. O projetista de banco de dados tem de considerar muitas questões ao mesmo tempo, o que torna a tarefa de projeto de banco de dados muito difícil. 2. O resultado final do projeto lógico de banco de dados é o esquema do usuário (ou seja, uma descrição da visão do banco de dados pelo usuário). Uma vez que o esquema do usuário representa a solução do projetista para as questões complicadas mencionadas acima, não é difícil perceber por que os esquemas do usuário são geralmente difíceis de ser compreendidos e alterados. 1.5 UM NOVO MÉTODO PARA PROJETO DE BANCO DE DADOS: O MÉTODO ENTIDADE-RELACIONAMENTO Vamos descrever um novo método para projeto lógico de bancos de dados chamado método Entidade-Relacionamento (E-R). A idéia-cha-
O método entidade-relacionamento para projeto lógico de bancos de dados
11
ve do método E-R é acrescentar um estágio intermediário ao projeto lógico de bancos de dados. (Ver Figura 11.) O projetista de banco de dados primeiro identifica as entidades e relacionamentos que são de interesse para a empresa usando a técnica diagramática Entidade-Relacionamento (E-R). Nesse estágio, o projetista deve examinar os dados do ponto de vista da empresa como um todo (não a visão de um programador de aplicação específico). Portanto, vamos chamar a descrição da visão da empresa quanto aos dados de "esquema da empresa". O esquema da empresa deve ser uma representação "pura" do mundo real e deve ser independente de considerações sobre armazenamento e eficiência. O projetista de banco de dados primeiro projeta o esquema da empresa e então o traduz a um esquema do usuário para seu sistema de banco de dados. (Ver Figura 11.) MUNDO REAL
ESQUEMA DA EMPRESA
ESQUEMA DO USUÁRIO
HIERÁRQUICO
PONTOS DE INTERESSE PARA A EMPRESA
REDE
RELACIONAL
Figura 11
Esquema da empresa - uma etapa intermediária no projeto lógico de bancos de dados.
12
Modelagem de Dados
1.6 VANTAGENS DO MÉTODO ENTIDADERELACIONAMENTO Os métodos convencionais de projeto lógico de bancos de dados usualmente apresentam uma única fase: mapeamento de informações sobre objetos do mundo real diretamente em um esquema do usuário. O método E-R para projeto lógico de bancos de dados consiste em duas fases principais: (1) Definição do esquema da empresa usando o diagrama de Entidade-Relacionamento; e (2) tradução do esquema da empresa em um esquema do usuário. As vantagens do método E-R são: 1. A divisão da funcionalidade e trabalho em duas fases torna o processo de projeto de banco de dados mais simples e mais bem organizado. 2. O esquema da empresa é mais fácil de ser projetado do que o esquema do usuário, uma vez que não precisa ser restrito pelas características do sistema de banco de dados e é independente de considerações sobre armazenamento e eficiência. 3. O esquema da empresa é mais estável do que o esquema do usuário. Se uma pessoa quiser mudar de um sistema de banco de dados para outro, provavelmente terá de alterar o esquema do usuário, mas não o esquema da empresa, uma vez que este é independente dos sistemas de banco de dados usados. O que precisa ser feito é um remapeamento do esquema da empresa para um esquema do usuário compatível com o novo sistema de banco de dados. De forma semelhante, se uma pessoa quiser mudar o esquema do usuário para otimizar um novo programa de aplicação, não é necessário alterar o esquema da empresa, mas apenas remapeá-lo para um novo esquema do usuário. 4. O esquema da empresa expresso pelo diagrama de entidaderelacionamento é mais facilmente compreendido por pessoas não ligadas ao processamento eletrônico de dados.
O método entidade-relacionamento para projeto lógico de bancos de dados
13
2. MÉTODO E-R E PROPOSTA ANSI/X3/SPARC 2.1 PROPOSTA ANSI/X3/SPARC O conceito do esquema de empresa é muito semelhante ao conceito de esquema conceituai proposto pelo grupo ANSI/X3/SPARC. Nesta seção, vamos discutir a arquitetura ANSI/X3/SPARC e como aplicar a ela o método E-R. No outono de 1971, o Comitê sobre Computador e Processamento dé Informações (abreviado com Comitê X3) do American National Standards Institute (ANSI) formou um grupo de estudos especial para determinar quais (se há algum) aspectos dos sistemas de gerenciamento de bancos de dados são candidatos adequados ao desenvolvimento de padrões. O grupo de estudos especial, que é chamado Comitê de Planejamento e Requisitos de Padrões (Standards Planning and Requirements Committee — SPARC), consiste em representantes da comunidade de usuários, fabricantes de hardware e universidades. O grupo ANSI/X3/SPARC gastou tempo e esforços consideráveis ponderando diferentes visões da teoria dos bancos de dados e desenvolvendo um vocabulário que fosse consistente e bem compreendido por todos. Como resultado, seu trabalho despertou muita atenção na comunidade de banco de dados. O grupo ANSI/X3/SPARC descobriu que não é desejável desenvolver padrões que especifiquem como os componentes de um sistema de gerenciamento de banco de dados devem funcionar, sendo mais recomendável centrar-se em como os componentes se integram (ou seja, as interfaces). Com isso em mente, o relatório delineia uma arquitetura de três esquemas de um sistema de gerência de bancos de dados. (Ver Figura 12.) Os sistemas de gerência de bancos de dados atuais usualmente possuem uma estrutura de dois níveis: a estrutura lógica (ou seja, a estrutura de dados como é vista pelo programador) e a estrutura física (ou seja, a estrutura de dados como é vista pelo computador).
14
Modelagem de Dados
A proposta ANSI/X3/SPARC apresenta uma estrutura de três níveis: esquema externo, esquema conceituai e esquema interno. (Ver Figura 12.) O esquema externo (esquema do usuário) representa a visão do usuário (ou seja, do programador) quanto aos dados. Em outras palavras, um esquema externo é uma descrição de dados visíveis para um programa de aplicação em termos de nomes e características de dados. O esquema interno representa a organização física de dados nos dispositivos de armazenamento. Contém também os detalhes de integridade, recuperação e maneiras eficientes de recuperar e atualizar dados. O esquema conceituai representa a visão da empresa quanto aos dados. É uma descrição de um modelo da empresa em termos de suas entidades, atributos e relacionamentos entre si. Contém também os requerimentos para operações permitidas, integridade semântica e privacidade. O esquema conceituai visa proporcionar uma visão estável dos dados.
USUÁRIO MUNDO REAL ESQUEMA , DO USUÁRIO
PONTOS DE INTERESSE PARA A EMPRESA
ESQUEMA CONCEITUAL
ESQUEMA INTERNO
DISPOSITIVOS DE ARMAZENAMENTO
Figura 12
Arquitetura ANSI/X3/SPARC.
O método entidade-relacionamento para projeto lógico de bancos de dados
15
2.2 ESQUEMA CONCEITUAL E ESQUEMA DA EMPRESA Qual é a diferença entre o esquema conceituai proposto pelo grupo ANSI/X3/SPARC e o esquema da empresa discutido nesta obra? A resposta é que são quase a mesma coisa, exceto que o esquema conceituai é necessário para servir como interface entre o esquema externo e o esquema interno. (Ver Figura 12.) Uma razão para usar o esquema conceituai como a interface é reduzir o número de mapeamentos entre os esquemas externos e os esquemas internos. Por exemplo, se há M esquemas externos e N esquemas internos, precisamos de M.N programas para fazer os mapeamentos entre os esquemas externos e os esquemas internos. (Ver Figura 13.) Se houver um esquema conceituai entre os esquemas externos e os esquemas internos, precisaremos de apenas M+N programas para fazer os mapeamentos. (Ver Figura 14.) Portanto, o número de programas de mapeamento é reduzido drasticamente. M ESQUEMAS EXTERNOS
ESQUEMA EXTERNO Nº1
ESQUEMA EXTERNO Nº 2
ESQUEMA EXTERNO Nº M
ESQUEMA INTERNO Nº1
ESQUEMA INTERNO Nº2
ESQUEMA INTERNO Nº N
TRADUÇÕES
N ESQUEMAS INTERNOS
Figura 13 Tradução entre esquemas externos e esquemas internos sem um esquema conceituai.
16
Modelagem de Dados M ESQUEMAS EXTERNOS
ESQUEMA EXTERNO Nº 1
ESQUEMA EXTERNO Nº 2
ESQUEMA EXTERNO
NºM
ESQUEMA CONCEITUAI.
ESQUEMA INTERNO Nº 1
ESQUEMA INTERNO Nº 2
ESQUEMA INTERNO Nº N
N ESQUEMAS INTERNOS
Figura 14 Uso do esquema conceituai como interface entre esquemas internos e externos.
Uma das metas da arquitetura ANSI/X3/SPARC é manter o esquema conceituai relativamente estável, permitindo mudanças nos esquemas externos e internos. Esta meta não parece difícil de ser atingida, uma vez que o esquema conceituai representa a visão da empresa quanto aos dados e deve ser relativamente estável em comparação à visão do usuário quanto à visão física dos dados. Portanto, quando a organização física do banco de dados é alterada ou os dados são transportados de dispositivos de armazenamento "antigos" para dispositivos de armazenamento "novos", apenas alteramos o esquema interno, e não o esquema conceituai ou os esquemas externos. Similarmente, se um usuário quiser ver os dados como um certo tipo de organização, podemos projetar um esquema externo para ele sem mudar o esquema conceituai e os esquemas internos. A não ser por servir como uma interface entre os esquemas externos e internos, o esquema conceituai é a mesma coisa que o esquema de empresa e podemos usar o diagrama de entidade-relacionamento
O método entidade-relacionamento para projeto lógico de bancos de dados 17
para descrever o esquema conceituai. Além disso, uma vez que os esquemas externos podem ser expressos em termos de diferentes tipos de estruturas de dados, tais como rede (CODASYL), hierárquica ou relacionai (ver Figura 15), as regras de tradução entre diagramas E-R e diferentes tipos de estruturas de dados discutidos adiante nesta obra seriam muito úteis na implementação da arquitetura ANSI/X3/SPARC. REDE
HIERÁRQUICA
RELACIONAL
ESQUEMAS EXTERNOS
ESQUEMA CONCEITUAL
ESQUEMA INTERNO
Figura 15 Os esquemas externos podem ser expressos em diferentes tipos de estruturas de dados.
2.3 TRÊS TIPOS DE ADMINISTRADORES DE BANCOS DE DADOS O grupo ANSI/X3/SPARC identificou três tipos de administradores de bancos de dados:
18
Modelagem de Dados
1. Administrador de empresa O administrador de empresa define o esquema conceituai e, se possível, o valida. Ele deve compreender muito bem as operações da empresa e o significado de suas informações (dados). Ele é responsável pelo conteúdo, integridade e segurança do banco de dados. 2. Administrador de banco de dados O administrador de banco de dados define o esquema interno. Ele projeta as estruturas físicas de dados, codificando esquemas, vias de acesso e colocação de dados em dispositivos de armazenamento. Ele é responsável pela utilização eficiente do espaço de armazenamento, assim como pelo desempenho do sistema de banco de dados. 3. Administrador de aplicação Um esquema externo representa uma visão dos dados pelo programador de aplicação. Imagina-se que cada área geral de aplicação terá seu próprio administrador de aplicação que provê os esquemas externos para aquela área. Mas esses esquemas externos têm de ser consistentes e deriváveis de um único esquema conceituai. Observe que os mesmos esquemas externos podem ser usados por vários programadores de aplicação, não necessariamente trabalhando no mesmo programa. Estes três tipos de administradores representam três diferentes papéis que podem ser desempenhados por um indivíduo ou um grupo de pessoas. Embora as distinções entre esses três tipos de administradores de banco de dados sejam claras em termos da arquitetura de três esquemas do ANSI/X3/SPARC, não são claras nos ambientes de bancos de dados convencionais. Na verdade, o "administrador de banco de dados", como é definido hoje em dia em muitas organizações, tem todas as responsabilidades dos três tipos de administradores mencionados. Em termos do âmbito desta monografia, preocupamo-nos primariamente com a responsabilidade do administrador de empresa (ou seja, a tarefa de modelar o mundo real) e a responsabilidade do administrador de aplicação (ou seja, a tarefa de projetar os esquemas externos).
O método entidade-relacionamento para projeto lógico de bancos de dados
19
2.4 RELEVÂNCIA DO MÉTODO E-R Em suma, se a arquitetura ANSI/X3/SPARC tornar-se realidade, o método E-R pode ser usado das seguintes maneiras: 1. No projeto do esquema conceituai. 2. Na tradução do esquema conceituai em esquemas externos.
20
Modelagem de Dados
3. DIAGRAMA DE ENTIDADERELACIONAMENTO (E-R) Neste capítulo, vamos introduzir a técnica diagramática de entidade-relacionamento. Discutiremos primeiro o que são entidades e relacionamentos e, então, explicaremos como descrever propriedades de entidades e relacionamentos. 3.1 ENTIDADES E RELACIONAMENTOS 3.1.1 Tipos de Entidade Uma entidade é uma "coisa" que pode ser distintamente identificada. As entidades podem ser classificadas em diferentes tipos, tais como FUNCIONÁRIO e ACIONISTA. (Ver Figura 16.) No diagrama E-R, um tipo de entidade é representado por um retângulo. (Ver Figura 17.)
FUNCIONÁRIO
Figura 16 Entidades e tipos de entidades.
ACIONISTA
O método entidade-relacionamento para projeto lógico de bancos de dados
FUNCIONÁRIO
21
ACIONISTA
Figura 17 Tipos de entidades são representados por retângulos.
Há muitas "coisas" no inundo real. Algumas delas são de interesse para a empresa, e o resto não. É responsabilidade do projetista de banco de dados selecionar os tipos de entidade que são mais adequados para sua empresa. 3.1.2 Tipos de Relacionamento Relacionamentos podem existir entre entidades. Por exemplo, CASAMENTO é um relacionamento entre duas entidades humanas. (Ver Figura 18.) Os relacionamentos podem ser classificados em diferentes tipos de relacionamentos. Por exemplo, PROJ-FÜNC e PROJ-GERENTE são dois tipos de relacionamentos diferentes entre dois tipos de entidades, PROJ (projeto) e FUNC (funcionário). Na notação diagramática de entidade-relacionamento, um tipo de relacionamento é representado por um losango com linhas conectadas a tipos de entidades relacionadas. (Ver Figura 19.) As notações "m" e "1" associadas ao tipo de relacionamento PROJ-GERENTE na Figura 16 indicam que cada projeto tem apenas um gerente, mas que um funcionário pode ser o gerente de muitos projetos. O V e "n" associados com o tipo de relacionamento PROJ-FUNC indicam que é um mapeamento muitos-paramuitos. Isto é, cada projeto pode consistir em vários funcionários e cada funcionário pode estar associado a mais de um projeto. Observe que outros tipos de mapeamento entre entidades também são possíveis. Por exemplo, o tipo de relacionamento CASAMENTO é um mapeamento um-para-um entre entidades humanas. (Ver Figura 20.) É possível definir um tipo de relacionamento entre mais de dois tipos de entidades. Por exemplo, PARTE-FORN-PROJ, que descreve que partes são abastecidas por fornecedores específicos para projetos específicos (Figura 21), é um tipo de relacionamento definido em três tipos de entidades: PARTE, FORN (fornecedor) e PROJ (Figura 22).
22
Modelagem de Dados
CASAMENTO
Figura 18 CASAMENTO como um relacionamento entre duas entidades humanas.
PROJGERENTE
FUNC
PROJ
PROJ-FUNC
Figura 19 Tipos de relacionamentos são representados por losangos.
PESSOA
CASAMENTO
Figura 20 CASAMENTO como um tipo de relacionamento entre entidades humanas.
O método entidade-relacionamento para projeto lógico de bancos de dados
Figura 21
Nº PARTE
Nº FORNECEDOR
Nº PROJ
25
4
1
25
5
2
10
4
2
10
4
3
17
2
1
17
5
1
23
Informações sobre relacionamentos PARTE-FORN-PROJ.
PARTE
FORN PARTE FORNPROJ
PROJ
Figura 22
PARTE-FORN-PROJ como um tipo de relacionamento.
Note que um relacionamento ternário usualmente não pode ser substituído por três relacionamentos binários. Por exemplo, o relacionamento ternário PARTE-FORN-PROJ na Figura 21 é substituído por três relacionamentos binários: PARTE-FORN, FORN-PROJ e PROJ-PARTE. (Ver Figura 23.) Contudo, se quisermos construir o relacionamento ternário partindo desses três relacionamentos binários, obteremos alguns "não-fatos". (Ver as entradas com asteriscos na Figura 24.) Há muitos tipos de relacionamentos entre entidades e alguns deles são de interesse para a empresa: o projetista de banco de dados é responsável pela seleção dos tipos de relacionamentos relevantes para a empresa. Ele deve também especificar os tipos de mapeamento dos tipos de relacionamentos (ex.: um-para-um, um-para-muitos, muitos-para-muitos).
24
Modelagem de Dados
Nº PARTE
Nº FORN
Nº FORN
Nº PROJ
NºPROJ
Nº PARTE
25
4
4
1
1
25
25
5
4
2
1
17
10
4
4
3
2
10
2
25
3
10
17
2
5
1
17
5
5
2
2
1
Figura 23 Informações sobre três relações binárias: PARTE-FORN, FORN-PROJ e PROJ-PARTE.
* *
Nº PARTE
Nº FORN
Nº PROJ
25
4
1
25
4
2
25
5
1
25
5
2
10
4
2
10
4
3
17
2
1
17
5
1
Figura 24 Informações geradas das três relações binárias da Figura 23.
3.2 DESCRIÇÃO DE ENTIDADES E RELACIONAMENTOS 3.2.1 Atributos e Valores Entidades e relacionamentos têm propriedades que podem ser expressas em termos de pares atributo-valor. Por exemplo, na afirmação "a IDADE DO FUNCIONÁRIO x é 24", "IDADE" é um atributo do funcionário x e "24" é o valor do atributo "IDADE". Os valores podem ser
O método entidade-relacionamento para projeto lógico de bancos de dados
25
classificados em diferentes tipos de valor, tais como Nº DE ANOS, QUANTIDADE e COR. Na notação diagramática E-R, um tipo de valor é representado por vim círculo (ver Figura 25) e um atributo é representado por um ponteiro dirigido do tipo de entidade para o tipo de valor desejado.
FUNCIONÁRIO
Nº DO CIC
F i g u r a 25
IDADE
Nº DO TELEFONE
234-55-7684 013-64-7777 315-88-4158
20 18 26 55
253-6606 253-9999 478-6574
Nº DO CIC
IDADE
N2 DO TELEFONE
Tipos de valores e atributos.
Em alguns casos, um atributo pode ter mais de um valor para uma determinada entidade. Por exemplo, "Nº DE TELEFONE" do funcionário x pode ter dois valores: 253-6606 e 253-9999. Neste caso, colocamos "l:n" no ponteiro para indicar que é um atributo de valores múltiplos. Isto é similar ao conceito de "grupo de repetição" em processamento de dados convencional. Contudo, muitos atributos, tais como "IDADE" e "Nº DO CIC", têm um só valor. Para simplicidade, não associamos nada como "1:1" aos ponteiros no diagrama E-R para tais atributos. Até agora, consideramos apenas os atributos de entidades. Às vezes, estamos também interessados nas propriedades de um relacionamento. Por exemplo, podemos querer saber quando o funcionário x começou a trabalhar em um determinado projeto. A DATA DE INÍCIO não é um atributo do FUNCIONÁRIO nem do PROJ, uma vez que seu valor depende tanto do funcionário específico quanto do projeto envol-
26
Modelagem de Dados
vido. Portanto, a DATA DE INÍCIO é um atributo do relacionamento PROJ-FUNC. Um outro exemplo de atributo do relacionamento é a PORCENTAGEM DE ESFORÇO, que é a porcentagem de tempo que um funcionário devota a um determinado projeto. (Ver Figura 26.) O conceito de atributo de relacionamento é importante para compreender a semântica dos dados. O conceito é semelhante ao de dados de relacionamento em sistemas de bancos de dados do tipo "rede" (CADASYL) e ao de dados de intersecção em sistemas de bancos de dados do tipo hierárquico (tipo IMS).
PROJFUNC
PROJ
DATA DE INÍCIO
FUNC
PORCENTAGEM DE ESFORÇO
9/15/75 7/22/76
20% 30% 90%
DATA DE INÍCIO PORCENTAGEM DE ESFORÇO Figura 26
Atributos de relacionamento.
3.2.2 Identificador de Entidade As entidades discutidas até agora são aquelas que existem em nossas mentes ou podem ser identificadas com um apontar de dedo. Quando alguém pergunta, "De que cor é isto?", "isto" ou é compreendido tanto por quem está falando quanto pelo ouvinte, ou é identificado apontando-se para o objeto. Este esquema de identificação pode funcionar para muito poucos objetos, porém encontraremos dificuldades quando quisermos comunicar a informação sobre uma variedade de objetos para muitas pessoas diferentes. Portanto, tanto na conversa do dia-a-dia como em processamento de dados computadorizado, precisa-
O método entidade-relacionamento para projeto lógico de bancos de dados
27
mos de um outro esquema para identificar entidades. Cada entidade tem muitos atributos, mas qual deles deve ser escolhido? A resposta é que os atributos escolhidos devem ser capazes de identificar de forma absoluta as entidades. Por exemplo, podemos usar o atributo NOME para identificar funcionários em uma pequena companhia, mas não em uma grande firma. Esses atributos escolhidos da entidade são chamados de identificadores de entidade. Em alguns casos, pode ser difícil ou inconveniente usar os atributos disponíveis como identificadores da entidade. O que podemos fazer é criar um atributo artificial que possa identificar incontestavelmente as entidades. Exemplos são Nº DO CIC, Nº DO FUNC, Nº DA PARTE e Nº DO PROJ. O conceito de identificador de entidade é similar ao conceito de chave primária em processamento de dados convencional.
3.2.3 Identificador de Relacionamento Os relacionamentos são identificados pelo uso de identificadores das entidades envolvidas no relacionamento. Por exemplo, se um projeto é identificado por seu Nº DO PROJ e um funcionário é identificado por Nº DO FUNC, então o relacionamento PROJ-FUNC é identificado por ambos os Nº DO PROJ e nº DO FUNC. Em algumas situações, um tipo de relacionamento é definido entre duas ocorrências do mesmo tipo de entidade. Por exemplo, CASAMENTO é um tipo de relacionamento definido entre ocorrências do mesmo tipo de entidade, PESSOAS. Para identificar inequivocamente tais relacionamentos, usamos não apenas o identificador de entidade, mas também indicamos qual o papel que a entidade desempenha no relacionamento. No caso de CASAMENTO, devemos ligar os nomes MARIDO e MULHER ao identificador de entidade NOME, onde MARIDO e MULHER são os "papéis" que eles desempenham na relação CASAMENTO. 3.3 TIPOS ESPECIAIS DE ENTIDADE E RELACIONAMENTO Nesta seção, vamos discutir alguns tipos especiais de entidade e relacionamento que são comumente encontrados.
28
Modelagem de Dados
3.3.1 Existência-Dependente A existência de uma entidade pode depender da existência de um outro tipo de entidade. Por exemplo, a existência de entidades FILHOS no banco de dados depende da existência dos funcionários associados. Em outras palavras, se um funcionário deixa a companhia, não precisamos manter o registro de seus filhos. A Figura 27 ilustra o diagrama E-R para essa situação. FILHOS é representado por um retângulo duplo, o que significa que é um tipo de entidade "fraca". A existência de uma entidade fraca depende da existência de outras entidades. O "E" dentro do losango do relacionamento indica que é um relacionamento existência-dependente; o ponteiro associado ao losango do relacionamento indica a direção da dependência. E possível que o relacionamento existência-dependente seja um mapeamento muitos-para-muitos. Por exemplo, se o pai deixa a companhia, as entidades FILHOS podem ainda existir se a mãe continuar sendo uma funcionária da companhia. Esta situação é representada no diagrama E-R mostrado na Figura 28.
FUNC
E
FILHOS
Figura 27 Um relacionamento de tipo existência-dependente e um tipo de entidade fraca.
O método entidade-relacionamento para projeto lógico de bancos de dados
29
FUNC M (PELO MENOS 1)
E
FILHOS
Figura 28 Uma relação existência-dependente pode ser também um mapeamento muitos-para-muitos.
3.3.2 Dependência de Identificador (ID) Se uma entidade não puder ser identificada inequivocamente por seus próprios atributos e tiver de ser identificada por seus relacionamentos com outras entidades, ela tem dependência de identificador com as outras entidades. Por exemplo, "rua" só é específica dentro de uma cidade, uma cidade só é específica dentro de um Estado, e um Estado só é específico dentro de um país. Para identificar precisamente o endereço de uma localização, temos de especificar os nomes da cidade, Estado e país, além do nome da rua. Á dependência de identificador é indicada pelo "ID" no losango de relacionamento, e a direção do relacionamento é indicada pelo ponteiro (Ver Figura 29); a maioria das dependências ID está associada a existências-dependentes. Contudo, a existênciadependente não implica a dependência ID. Por exemplo, as entidades FILHOS na Figura 30 são identificadas com seus próprios atributos e o ID de seus pais (ver Figura 31), enquanto as entidades FILHOS na Figura 27 podem ser identificadas por seus próprios Nº DO FILHO. (Ver Figura 32.)
30
Modelagem de Dados
PAÍS
E&
ESTADO
E& ID
CIDADE
E& ID
RUA
Figura 29 Existência-dependente e Dependência ID.
O método entidade-relacionamento para projeto lógico de bancos de dados
FUNC
FILHOS
Figura 30 Existência-dependente e Dependência ID.
ID DOS FILHOS
D ADOS SOBRE FILHOS
ID DO FUNC NOME
CIC DO PAI OU MÃE
IDADE
SEGURO-SAÚDE
NANCY BOK
013-58-5545
12
BC/BS
LAWRENCE BOK
172-66-6672
5
BC/BS
ROBERT JOHNSON
819-38-7776
21
TEM PLANO PRÓPRIO
Nº DOS FILHOS
NOME
IDADE
SEGURO-SAÚDE
1011
NANCY BOK
12
BC/BS
1025
LAWRENCE BOK
5
BC/BS
1044
ROBERT JOHNSON
21
TEM PLANO PRÓPRIO
Figura 31 Dependência ID.
ID DOS FILHOS
Figura 32 Sem Dependência ID.
31
32
Modelagem de Dados
4. TRADUÇÃO DE DIAGRAMAS E-R EM DIAGRAMAS DE ESTRUTURA DE DADOS 4.1 DIAGRAMAS DE ESTRUTURA DE DADOS As estruturas lógicas de dados de bancos de dados suportadas pelo sistema tipo CODASYL (rede) de banco de dados podem ser expressas em termos de diagrama de estrutura de dados. Cada retângulo representa um tipo de registro, tal como FUNC e DEPENDENTE. O ponteiro representa um conjunto de estrutura de dados que conecta dois tipos de registro. O tipo de registro no qual o ponteiro se origina é o tipo proprietário de registro do conjunto de estrutura de dados, e o tipo de registro no qual o ponteiro termina é o tipo membro de registro do conjunto de estrutura de dados. Na Figura 33, FUNC é o tipo proprietário de registro e DEPENDENTE é o tipo membro de registro. Em um conjunto de estrutura de dados, o registro proprietário pode ter zero, um ou mais registros membros (ocorrências). Um registro membro em um conjunto de estrutura de dados tem exatamente um registro proprietário. Em nosso exemplo, cada registro de funcionário pode estar conectado a muitos registros de DEPENDENTE ou a nenhum. Contudo, cada registro de DEPENDENTE deve estar associado a exatamente um registro FUNC. Isto é ilustrado na Figura 34. Conceitualmente, o ponteiro representa uma associação l:n (um-para-muitos) entre o tipo proprietário de registro e o tipo membro de registro. Este tipo de associação pode também ser representado em forma de tabela. (Ver Figura 35.)
FUNC
TIPO "PROPRIETÁRIO" DE REGISTRO CONJUNTO DE ESTRUTURA DE DADOS
DEPENDENTE
TIPO "MEMBRO" DE REGISTRO
Figura 33 Um diagrama de estrutura de dados.
O método entidade-relacionamento para projeto lógico de bancos de dados
FUNC 2142
Nº DO FUNC
(A) ZERO DEPENDENTE
FUNC 2566
FUNC 1781
DEP A
33
DEP C
DEP B
(B) TRÊS DEPENDENTES
DEP D
(C) UM DEPENDENTE
Figura 34 Um registro PROPRIETÁRIO pode ter zero, um ou mais registros "membros*. Nº DO FUNC
DEPENDENTE
1781
A
1781
B
1781
C
2566
D
Figura 35 Correspondência um-para-muitos entre FUNCIONÁRIO e DEPENDENTES.
A Figura 36 ilustra uma estrutura de dados mais complicada. O tipo de registro FUNCIONÁRIO é o registro proprietário de um conjunto de estrutura de dados no qual FUNCIONÁRIO-HABILIDADE é o registro membro. O tipo de registro FUNCIONÁRIO-HABILIDADE é também o registro membro de um outro conjunto de estrutura de dados no qual o tipo de registro HABILIDADE é o registro proprietário. Na verdade, o registro FUNCIONÁRIO-HABILIDADE contém a informação sobre FUNCIONÁRIOS e HABILIDADES. Esse tipo de informação pode ser representado na forma de tabela, como é mostrado na Figura 37. Podemos ver na Figura 37 que um funcionário pode ter uma ou mais habilidades e que usualmente mais de um funcionário tem uma habilidade específica. Portanto, a relação entre funcionários e habilidades é m:n (muitos-para-muitos). Essa correspondência m:n entre funcionários e habilidades pode ser derivada da Figura 36. Os conjuntos
Rafael Gama de Macedo Jr.
34
Modelagem de Dados
de estrutura de dados na Figura 36 mostram que existe um mapeamento l:m (um-para-muitos) entre o tipo de registro FUNCIONÁRIO e o tipo de registro FUNCIONÁRIO-HABILIDADE, e que um mapeamento semelhante (l:n) existe entre o tipo de registro HABILIDADE e o tipo de registro FUNC-HABILIDADE. Portanto, a correspondência entre o registro FUNC e o tipo de registro habilidade é m:n (muitos-para-muitos). FUNC
HABILIDADE
FUNC-HABILIDADE
Figura 36 Dois conjuntos de estrutura de dados têm o mesmo tipo "membro" de registro.
Nº DO FUNC
HABILIDADE
2142
COBOL
2141
PL/1
1781
COBOL
2566
PL/1
Figura 37 Informações cruzadas sobre FUNCIONÁRIOS e HABILIDADES.
O diagrama de estrutura de dados na Figura 36 pode ser implementado usando-se um conjunto de ponteiros, como é mostrado na Figura 38. O conjunto de estrutura de dados entre o tipo de registro FUNC e o tipo de registro HABILIDADE é representado pelas linhas contínuas, e o conjunto de estrutura de dados entre o tipo de registro HABILIDADE e o tipo de registro FUNC-HABILIDADE é representado por linhas pontilhadas.
o método entidade-relacionamento para projeto lógico de bancos de dados
35
Na Figura 38, como determinamos as habilidades de um funcionário específico? O primeiro passo é localizar o registro de FUNC com o Nº DO FUNC = 2142, usando um algoritmo hashing ou algum outro método. O segundo passo é encontrar o primeiro registro FUNC-HABILIDADE relacionado com esse funcionário. Por meio do ponteiro mostrado pela linha pontilhada, podemos encontrar um registro de habilidade com HABILIDADE-NOME = COBOL. Encontramos, então, o segundo registro FUNCIONÁRIO-HABILIDADE relacionado com o mesmo registro de funcionário (por meio dos ponteiros de linha contínua). Do registro FUNC-HABILIDADE, podemos seguir por intermédio do ponteiro de linha pontilhada para localizar um registro HABILIDADE com HABILIDADE-NOME = PL/1. Não conseguimos, então, encontrar mais nenhum registro FUNC-HABILIDADE relacionado com os mesmos registros de FUNCIONÁRIO (ou seja, encontramos a informação de que necessitávamos: o funcionário com Nº DO FUNC = 2142 tem duas habilidades: COBOL e PL/1).
FUNC 2142
FUNC 1781
FUNCHABILIDADE
FUNCHABILIDADE
HABILIDADE COBOL
FUNC 2586
FUNCHABILIDADE
FUNCHABILIDADE
HABILIDADE PL/1
Figura 38 Implementação dos conjuntos de estrutura de dados da Figura 37 como conjuntos de ponteiros.
Como encontramos todos os funcionários com uma habilidade específica, digamos, COBOL? Primeiro, localizamos o registro HABILIDADE com HABILIDADE-NOME = COBOL. Então, recuperamos todos os registros FUNC-HABILIDADE relacionados com o registro HABILIDADE. Para cada registro FUNCIONÁRIO-HABILIDADE, recuperamos, por meio do ponteiro de linha contínua, o registro FUNC correspondente. Fazendo isso, sabemos que há dois funcionários com a habilidade COBOL, e seus números são 2142 e 1781.
36
Modelagem de Dados
Uma outra maneira de implementar o diagrama de estrutura de dados da Figura 22 é usar cadeias, como é mostrado na Figura 39. As linhas contínuas conectam todos os registros FUNC-HABILIDADE relacionados com o mesmo registro HABILIDADE. Vamos ver como encontrar as habilidades do funcionário com Nº DO FUNC = 2142. Em primeiro lugar, encontramos o primeiro registro FUNC-HABILIDADE por intermédio da cadeia de linha contínua. Do registro FUNCHABILIDADE, encontramos o registro de habilidade por meio da cadeia de linha pontilhada. Do registro FUNC-HABILIDADE procuramos o registro FUNC-HABILIDADE seguinte pela cadeia de linha sólida. Do segundo registro FUNC-HABILIDADE, podemos determinar o registro de habilidade correspondente por meio da cadeia de linha pontilhada. Do segundo registro FUNC-HABILIDADE, não conseguimos encontrar mais nenhum registro FUNC-HABILIDADE na cadeia de linha contínua. Agora, sabemos todas as habilidades que o funcionário 2142 tem. Similarmente, podemos encontrar todos os funcionários com uma determinada habilidade seguindo através das cadeias.
FUNC 1781
FUNC 2142
FUNCHABILIDADE
FUNCHABILIDADE
COBOL
FUNC 2566
FUNCHABILIDADE
FUNCHABILIDADE
PL/1
Figura 39 Implementação dos conjuntos de estrutura de dados da Figura 27 como cadeias.
Um outro tipo de estrutura de dados, que pode usualmente ser encontrado em bancos de dados de processos de produção, é mostrado na Figura 40. Há dois tipos de registro: PARTE e PRD-REL (produção-relacionamento). Cada produto a ser fabricado consiste em muitas "partes" (componentes). Cada parte, por sua vez, é feita de outras partes. O tipo
O método entidade-relacionamento para projeto lógico de bancos de dados
37
de registro PARTE contém informações sobre a parte específica. 0 tipo de registro PRD-REL contém as informações sobre o relacionamento entre as partes. A Figura 41 ilustra esse tipo de relacionamento. Indica que, para produzir a PARTE Nº1, precisamos de cinco PARTES Nº 2e duas PARTES Nº 3. Podemos ver também que a PARTE Nº 3 é uma subparte tanto da PARTE Nº1 quanto da PARTE Nº 4. Há dois conjuntos de estrutura de dados na Figura 40 e eles podem ser implementados como "cadeias", como mostrado na Figura 42. As linhas contínuas representam a cadeia COMPONENTE e as linhas pontilhadas representam a cadeia ONDE USADA. Para encontrar os componentes de uma parte específica, primeiro recuperamos todos os registros PRD-REL por meio da cadeia COMPONENTE e, então, recuperamos as subpartes correspondentes pela cadeia ONDE USADA. Fazendo isso, evidenciamos que a PARTE Nº 4 consiste em uma PARTE Nº 3 e em duas PARTES Nº 5. Para descobrir onde uma parte específica é usada para produzir outras partes, primeiro recuperamos todos os registros PRD-REL relacionados com esse registro PARTE específico por intermédio da cadeia ONDE USADA, e então recuperamos os registros PARTE correspondentes por meio da cadeia COMPONENTE. Fazendo isso, descobrimos que duas PARTES Nº 5 são usadas na fabricação da PARTE Nº 4. As Figuras 33, 36 e 40 são os tipos básicos de diagramas de estrutura de dados. Um banco de dados pode ser expresso em um grande diagrama de estrutura de dados baseado nesses três modelos básicos.
PARTE COMPONENTES
ONDE USADA
PRD-REL
Figura 40 Dois conjuntos de estrutura de dados têm os mesmos tipos de registro "proprietário" e "membro".
38
Modelagem de Dados
SUPERPARTE Nº
SUBPARTE Nº
QUANTIDADE
1
2
5
1
3
2
4
3
1
4
5
2
Figura 41 Relação de fabricação entre partes.
PARTE Nº 4
PARTE Nº 1 CADEIA COMPONENTE
CADEIA COMPONENTE
PRD-REL
CADEIA ONDE usada PARTE Nº 2
PRD-REL
PRD-REL
CADEIA ONDE USADA PARTE Nº 3
PRD-REL
2
CADEIA ONDE USADA PARTE Nº 5
Figura 42 Implementação dos conjuntos de estrutura de dados da Figura 41.
4.2 REGRAS DE TRADUÇÃO Como vimos na seção anterior, o diagrama de estrutura de dados está mais próximo da organização física do banco de dados que o diagrama de entidade-relacionamento. Usualmente, é difícil desenhar um diagrama de estrutura de dados para as entidades e relacionamentos que são de interesse para a empresa. Portanto, propomos que o projetista de banco de dados primeiro desenhe um diagrama E-R para representar a visão da empresa quanto aos dados e, então, traduza-o para um diagrama de estrutura de dados. Nesta seção, vamos discutir como traduzir um diagrama E-R para um diagrama de estrutura de dados. Identificamos algumas regras básicas para tradução com base no tipo de
O método entidade-relacionamento para projeto lógico de bancos de dados
39
relacionamentos entre entidades. Começamos com relacionamentos definidos por dois tipos de entidades, depois relacionamentos definidos por mais de dois tipos de entidades e, por fim, relacionamentos do mesmo tipo de entidade. As regras de tradução são as seguintes: 1. Relacionamentos definidos por dois tipos diferentes de entidades: a) O relacionamento é uma correspondência um-para-muitos (ou um-para-um). Por exemplo, o tipo de relacionamento DEPT-FUNC na Figura 43 (a) é uma correspondência umpara-muitos e pode ser transformada no diagrama de estrutura de dados da Figura 43 (b). Note que os tipos de entidades tais como DEPT e FUNC no diagrama E-R são tratados como tipos de registro no diagrama de estrutura de dados, enquanto o tipo de relacionamento DEPT-FUNC é representado por um conjunto de estrutura de dados (um ponteiro) no diagrama de estrutura de dados. Similarmente, o tipo de relacionamento PROJ-GERENTE na Figura 44 (a), que restringe um gerente por projeto mas permite vários projetos com o mesmo gerente, é representado por um ponteiro no diagrama de estrutura de dados mostrado na Figura 44 (b).
DEPT
DEPT
DEPT fUNC
Figura 43
FUNC
FUNC
DIAGRAMA E-R
DIAGRAMA DE ESTRUTURA DE DADOS
40
Modelagem de Dados
FUNC
FUNC
PROJGERENTE
PROJ
PROJ
DIAGRAMA E-R
DIAGRAMA DE ESTRUTURA DE DADOS
Figura 44
b) O relacionamento é uma correspondência muitos-para-
muitos. Por exemplo, o tipo de relacionamento PROJ-FUNC na Figura 45 (a) é uma correspondência muitos-para-muitos. O diagrama de estrutura de dados correspondente é mostrado na Figura 45 (b). Note que o tipo de relação PROJ-FUNC não é traduzido em um ponteiro, mas em um tipo de registro. Podemos concluir que, se um tipo de relacionamento é uma correspondência muitos-para-muitos, ele será traduzido em um tipo de registro com dois ponteiros apontando para ele, vindos dos tipos de registro de entidade relacionados. O tipo de registro PROJ-FUNC é usualmente chamado um tipo de registro de relacionamento. Um exemplo semelhante é mostrado na Figura 46. Uma vez que o tipo de relacionamento FUNC-HABILIDADE é uma correspondência muitos-paramuitos, é traduzido em um tipo de registro (de relacionamento) no diagrama de estrutura de dados.
o método entidade-relacionamento para projeto lógico de bancos de dados (b)
(a) PROJ
41
PROJ
FUNC
PROJ FUNC PROJ-FUNC FUNC DIAGRAMA E-R
DIAGRAMA DE ESTRUTURA DE DADOS
Figura 45
FUNC
HABILIDADE
FUNC
FUNC HABILIDADE* FUNCHABILIDADE HABILIDADE DIAGRAMA E-R
DIAGRAMA DE ESTRUTURA DE DADOS
Figura 46
2. Relacionamentos definidos por mais que dois tipos de entidades: Neste caso, o tipo de relacionamento no diagrama E-R será traduzido em um tipo de registro de relacionamento no diagrama de estrutura de dados, seja o relacionamento uma correspondência um-para-muitos ou de outro tipo. Por exemplo, o tipo de relacionamento PARTE-PROJ-FORN na Figura 47 (a) é um tipo de relacionamento definido
42
Modelagem de Dados
por três tipos de entidades e será traduzido em um tipo de registro no diagrama de estrutura de dados, como é mostrado na Figura 47 (b).
PROJ
PARTE
PARTEPROJ FORN'
FORN DIAGRAMA E-R
PARTE
PROJ
FORN
PARTE-PROJ-FORN DIAGRAMA DE ESTRUTURA DE DADOS
Figura 47
3. Relacionamentos binários definidos pelo mesmo tipo de entidade: Se o relacionamento binário for uma correspondência um-paramuitos, tal como o tipo de relacionamento GERENCIADO na Figura 48 (a), ele poderá ser transformado em pelo menos dois possíveis diagramas de estrutura de dados, como é mostrado nas Figuras 48 (b) e (c). Uma vez que a maioria dos sistemas de bancos de dados do tipo CADOSYL (rede)
O método entidade-relacionamento para projeto lógico de bancos de dados
43
não permite que o mesmo tipo de registro seja usado tanto como tipo de registro proprietário quanto como tipo de registro membro de um conjunto de estrutura de dados, a Figura 48 (b) não é válida. Portanto, usaremos a Figura 48 (c) como o diagrama de estrutura de dados relativo ao diagrama E-R na Figura 48 (a). Para relacionamentos binários com outros tipos de correspondência, usaremos o mesmo tipo de diagrama de estrutura de dados. Por exemplo, PRD-REL é um relacionamento de tipo de correspondência muitos-para-muitos e seu diagrama de estrutura de dados equivalente é mostrado na Figura 49 (b).
PESSOA
PESSOA
PESSOA
View more...
Comments