Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* Importância da boa modelagem! Como assim?! Você não percebeu que aqui existe um erro ?! Não lembra ?! Você disse que queria assim !! Esses caras nunca ouviram falar de modelagem ! Cliente Gerente Operário Esperto !! * Introdução Após o projeto conceitual do banco de dados, passamos para o projeto lógico; Nesta etapa, recebemos um esquema conceitual e o convertemos para um esquema lógico; Particularmente, vamos estudar como converter um diagrama entidade-relacionamento para um conjunto de tabelas do modelo relacional; Esta conversão é feita através de sete regras; * Modelagem para facilitar a comunicação Uma vez definido o MER agora é possível caminhar para uma modelagem mais precisa (mais próxima da implementação), por exemplo, a Modelagem Relacional. Surge a dúvida ... “não é mais interessante modelar logo no relacional ?!” Resposta: Não é aconselhável. É muito mais fácil para o cliente entender o MER, assim evitamos “ruídos” na comunicação, ou seja, problemas de entendimento. * Transformação: MER MR * Algoritmo Regra 1: Mapeamento de Entidades Fortes Cada entidade forte deve ser transformada em uma relação; Todos os atributos simples da entidade devem ser incluídos na relação; Apenas os componentes simples dos atributos compostos devem ser incluídos na relação; Um dos atributos chaves da entidade deve ser escolhido como chave primária da relação; * Algoritmo Regra 1: Mapeamento de Entidades Fortes Exemplo: Seja a entidade Empregado abaixo: * Algoritmo Regra 1: Mapeamento de Entidades Fortes: Exemplo (cont..): Pela aplicação da Regra1, temos a seguinte relação: Empregado (Matrícula, Nome, Salário, Rua, Número, Bairro); Ou seja: MER MR Pessoa (CPF, Nome, Telefone) * Algoritmo Regra 2: Mapeamento de Entidades Fracas Cada entidade fraca deve ser transformada em uma relação, seguindo as mesmas restrições da Regra 1 para os seus atributos simples e compostos; Incluir os atributos da chave primária da tabela dominante como chave estrangeira da relação; A chave primária da relação deve ser a combinação dos atributos da chave primária da relação dominante e da chave da entidade fraca; * Algoritmo Regra 2: Mapeamento de Entidades Fracas Exemplo: Sejam as duas entidades abaixo relacionadas; * Algoritmo Regra 2: Mapeamento de Entidades Fracas Exemplo: Temos as seguintes relações: Cliente (CPF, RG, Nome, Endereço), pela aplicação da Regra 1; Dependente (CPF, Nome, Parentesco), pela aplicação da Regra 2; Ou seja: MER MR Dependente(CPF, Nome, Parentesco) * Regras: Relacionamento A cardinalidade do relacionamento vai determinar como será a transformação, podendo ser: * Algoritmo Regra 3: Mapeamento de Relacionamentos binários Um para Um: Deve-se identificar as entidades que participam do relacionamento; Existem três soluções possíveis: Escolha da chave estrangeira; Relacionamento incorporado; Relação de relacionamento; * Algoritmo Regra 3: Mapeamento de Relacionamentos binários Um para Um: Escolha da chave estrangeira: Deve-se escolher uma das relações e inserir nela a chave estrangeira da outra relação; Geralmente, as entidades com participação total no relacionamento exercem este papel; Incluir também todos os atributos do relacionamento como atributos da tabela; É a solução mais utilizada para mapear este tipo de relacionamento; * Algoritmo Regra 3: Mapeamento de Relacionamentos binários Um para Um: Escolha da chave estrangeira: Exemplo: Sejam as entidades mostradas abaixo: * Algoritmo Regra 3: Mapeamento de Relacionamentos binários Um para Um: Escolha da chave estrangeira: Exemplo: Temos as seguintes relações: Empregado (Matrícula, Nome, Salário, Endereço) Departamento(Código, Nome) Pela aplicação da Regra 1; Departamento (Código, Nome, Matrícula, DataInício) Pela aplicação da Regra 3 com a escolha da chave estrangeira; * Algoritmo Regra 3: Mapeamento de Relacionamentos binários Um para Um: Escolha da chave estrangeira: Outro Exemplo: MER MR Computador (Serial, Descrição) Bolsa (Código, Descrição, SerialComp) * Algoritmo Regra 3: Mapeamento de Relacionamentos binários Um para Um: Relacionamento unificado: Incorporar as duas entidades e o relacionamento, com seus atributos se houver, em uma única relação; Solução utilizada quando as duas entidades têm participação total no relacionamento; Escolhemos como chave primária a chave da entidade que mais influência no relacionamento, na visão do mundo real. * Algoritmo Regra 3: Mapeamento de Relacionamentos binários Um para Um: Relacionamento unificado: Exemplo: Temos as seguintes relações: Empregado (Matrícula, Nome, Salário, Endereço) Projeto (Número, Nome) Pela aplicação da Regra 1; Trabalha_Projeto(Matrícula, Nome, Salário, Endereço, NumeroProjeto, NomeProjeto, horas) Pela aplicação da Regra 3 com a escolha do relacionamento unificado; * Algoritmo Regra 3: Mapeamento de Relacionamentos binários Um para Um: Relacionamento unificado: Outro exemplo: MER MR Programa (NumPrograma, Descrição, CodApresentador, NomeApresentador) * Algoritmo Regra 3: Mapeamento de Relacionamentos binários Um para Um: Relação de relacionamento: O relacionamento é transformado em uma relação; A relação incorpora a chave primária das duas entidades como chave estrangeira; A tabela criada serve de referência cruzada para às chaves primárias das duas relações Serve como uma tabela de busca * Algoritmo Regra 3: Mapeamento de Relacionamentos binários Um para Um: Relação de relacionamento: Exemplo: Temos as seguintes relações: Empregado (Matrícula, Nome, Salário, Endereço) Projeto (Número, Nome) Pela aplicação da Regra 1; Trabalha_Projeto(MatrículaEmp, NumeroProjeto, horas) Pela aplicação da Regra 3 com a escolha da relação de relacionamento; * Algoritmo Regra 4: Mapeamento de Relacionamentos binários Um para Muitos: Deve-se incluir a chave primária da relação que representa a entidade que aparece do lado “1” do relacionamento como chave estrangeira na outra relação; Isto acontece porque cada instância de uma entidade está relacionada a apenas uma instância da outra entidade; Incluir também os atributos do relacionamento na relação que contém a chave estrangeira; * Algoritmo Regra 4: Mapeamento de Relacionamentos binários Um para Muitos: Exemplo: Sejam as duas entidades abaixo relacionadas; * Algoritmo Regra 4: Mapeamento de Relacionamentos binários Um para Muitos Exemplo: Temos as seguintes relações; Departamento (CodDepto, NomeDep); Empregado (Matrícula, Nome, Salário, Endereço, CodDepto); * Algoritmo Regra 4: Mapeamento de Relacionamentos binários Um para Muitos Outro exemplo: MER MR Canal (Número, Descrição) Programa (Código, Canal_Descrição, NumCanal) * Algoritmo Regra 5: Mapeamento de Relacionamentos binários Muitos para Muitos Deve-se criar uma nova relação para o relacionamento; Incluir as chaves primárias das duas entidades que participam do relacionamento na relação; A combinação destas chaves formará a chave primária da relação; Incluir também na relação os atributos do relacionamento; * Algoritmo Regra 5: Mapeamento de Relacionamentos binários Muitos para Muitos Exemplo: Sejam as entidades abaixo: NumHoras * Algoritmo Regra 5: Mapeamento de Relacionamentos binários Muitos para Muitos Exemplo: Teremos as seguintes relações: Empregado (CodEmp, Nome, Salário, Endereço); Projeto (CodProjeto, NomeProjeto); Trabalha(CodEmp, CodProjeto, NumHoras) * Algoritmo Regra 5: Mapeamento de Relacionamentos binários Muitos para Muitos Outro Exemplo: MER MR Professor (Código, Nome) Disciplina (Número, Descrição) Turma (CodProf, NumDisc, Qtde_Alunos) * Algoritmo Regra 6: Mapeamento de atributos multivalorados Deve-se criar uma nova relação para o atributo multivalorado; Incluir na relação o atributo multivalorado; Incluir a chave primária da relação que representa a entidade ao qual o atributo está associado como chave estrangeira; A chave primária será a combinação da chave estrangeira e do atributo multivalorado; * Algoritmo Regra 6: Mapeamento de atributos multivalorados Exemplo: Vamos considerar a entidade abaixo: Telefone Salário * Algoritmo Regra 6: Mapeamento de atributos multivalorados Exemplo: Teremos as seguintes relações: Cliente (CodCliente, Nome, CPF, Salário); TelefoneCliente (CodCliente, Telefone); * Algoritmo Regra 6: Mapeamento de atributos multivalorados Outro Exemplo: MER MR Pessoa (CPF, Nome) TelefonePessoa (CPF_Pessoa,Num_Telefone) * Algoritmo Regra 7: Mapeamento de relacionamentos n-ários Para relacionamentos n-ários (n>2), deve-se criar uma nova relação para representar o relacionamento; As chaves primárias de cada relação que representa uma entidade participante do relacionamento devem ser inseridas na relação; Os atributos do relacionamento também devem ser inclusos na relação; A chave primária da relação será a combinação das chaves primárias das relações; * Algoritmo Regra 7: Mapeamento de relacionamentos n-ários Exemplo: Seja o relacionamento abaixo: Aluno Disciplina Semestre Matrícula Nome Telefone Código Nome C. Horária CodSemestre Início Término Matrícula N N 1 * Algoritmo Regra 7: Mapeamento de relacionamentos n-ários Exemplo: Teremos as seguintes relações: Aluno (Matrícula, Nome, Telefone); Disciplina (Código, Nome, CargaHorária); Semestre (CodSemestre, Início, Término); Matrícula (MatrículaAluno, CodDisciplina, CodSemestre) * Estudo de Caso Vamos agora converter um DER que descreve um domínio acadêmico para o modelo relacional; A conversão será feita usando as sete regras do algoritmo de mapeamento; O DER utilizado é mostrado no próximo slide; * Estudo de Caso * Estudo de Caso Pela Regra 1, temos o mapeamento das entidades fortes; Obtemos as seguintes relações: Aluno (Matrícula, Nome Departamento (CodDep, Nome Professor (Matrícula, NomeProf); Curso (IDCurso, NomeCurso Disciplina (IDDisciplina, NomeDisc Semestre (IDSemestre, Início, Fim * Estudo de Caso Como não existem entidades fracas pulamos a regra 2: Continuamos com as seguintes relações: Aluno (Matrícula, Nome Departamento (CodDep, Nome Professor (Matrícula, NomeProf); Curso (IDCurso, NomeCurso Disciplina (IDDisciplina, NomeDisc Semestre (IDSemestre, Início, Fim * Estudo de Caso Pela Regra 3, mapeamos o relacionamento “gerenciado” entre Departamento e Professor; A relação Departamento fica com a seguinte forma: Departamento (CodDep, Nome, Gerente); O atributo Gerente é uma chave estrangeira que faz referência à matrícula do professor que gerencia o departamento; O método usado foi o da escolha da chave estrangeira; * Estudo de Caso Pela Regra 4, mapeamos os seguintes relacionamentos: O relacionamento “possui” entre Departamento e Professor: Professor (Matrícula, NomeProf, CodDepto); O relacionamento “oferece” entre Departamento e Curso: Curso (IDCurso, NomeCurso, CodDepto); O relacionamento “responsável” entre Departamento e Disciplina; Disciplina (IDDisciplina, NomeDisc, CodDepto); * Estudo de Caso Pela Regra 5, mapeamos os seguintes relacionamentos: O relacionamento “possui” entre Curso e Disciplina; DisciplinaCurso (IDDisciplina, IDCurso); Note que as chaves primárias das duas tabelas são colocadas como chaves estrangeiras na nova relação; A combinação das duas chaves estrangeiras forma a chave primária da relação; * Estudo de Caso Pela Regra 6, mapeamos o atributo multivalorado “Telefone”, da classe Aluno: TelefoneAluno (MatrículaAluno, Telefone); Note que uma nova relação é criada para mapear este atributo; A chave primária da tabela que representa a entidade ao qual o atributo está relacionado é incluída como chave estrangeira na relação criada; * Estudo de Caso Pela Regra 7, mapeamos os seguintes relacionamentos: O relacionamento “leciona”, entre Professor, Disciplina e Semestre; Leciona (MatrículaProfessor, IDDisciplina, IDSemestre); Note que a chave primária das relações que representam as três entidades que compõem o relacionamento são inclusas como chaves estrangeiras; A combinação destas chaves formam a chave primária da relação; O relacionamento “cursada”, entre Disciplina, Aluno e Semestre; MatrículaDisciplina (IDDisciplina, MatrículaAluno, IDSemestre, matrícula); * Estudo de Caso No fim, temos o seguinte esquema lógico relacional: Departamento (CodDep, Nome, Gerente); Professor (Matrícula, NomeProf, CodDepto); Curso (IDCurso, NomeCurso, CodDepto); Disciplina (IDDisciplina, NomeDisc, CodDepto); Semestre (IDSemestre, Início, Fim); Aluno (Matrícula, Nome, IDCurso); DisciplinaCurso (IDDisciplina, IDCurso); TelefoneAluno (MatrículaAluno, Telefone); Leciona (MatrículaProfessor, IDDisciplina, IDSemestre); MatrículaDisciplina (IDDisciplina, MatrículaAluno, IDSemestre, CH); * Regras: Generalização / Especialização Três alternativas de implementação: * Regras: Generalização / Especialização (1) Uma tabela para cada entidade. MER MR Pessoa (Código , Nome) P_Física (Cod_Pessoa, CPF, Sexo) Cod_Pessoa referencia Pessoa (Código) P_Jurídica (Cod_Pessoa, CNPJ, Nome_Fantasia) Cod_Pessoa referencia Pessoa (Código) * Regras: Generalização / Especialização (2) Tabela única para toda hierarquia. MER MR Pessoa (Código, Nome, tipo, CPF, Sexo, CNPJ e Nome_Fantasia) Atributo Verificador * Regras: Generalização / Especialização (3) Tabela apenas para as entidades especializadas. MER MR P_Física (Código, Nome, CPF, Sexo) P_Jurídica (Código, Nome, CNPJ, Nome_Fantasia) * Regras: Generalização / Especialização Comparando as três soluções: Tabela para cada Entidade: Vantagens É a que melhor reflete o modelo conceitual As colunas desta relação são correspondentes aos atributos específicos da entidade. Desvantagens Necessidade de realizar junções entre as tabelas. Baixo desempenho da manipulação das relações Inserções e remoções e junções. * Regras: Generalização / Especialização Comparando as três soluções: Tabela Única: Vantagens Consulta rápida; Todos os dados estão em uma única tupla, não sendo necessário efetuar junções; A chave primária é armazenada uma única vez. Desvantagens Existe a ocorrência de muitos campos nulos; Quando uma instância é modificada na superentidade, cada uma das relações correspondentes as suas entidades filhas devem ser modificadas. * Regras: Generalização / Especialização Comparando as três soluções: Tabela apenas para as Entidades especializadas: Vantagens A implementação é simples; Há uma facilidade nas situações em que instâncias mudam de entidade. Desvantagens Há muitas junções e não pode ser implementada se possuir relacionamento envolvendo a entidade genérica. Alteração de esquema na adição ou remoção de atributos. Tem o potencial de desperdiçar bastante espaço de armazenamento: hierarquia com várias entidades “irmãs” instâncias pertencem a uma, e somente uma, entidade da hierarquia. * Regras: Generalização / Especialização Atenção !! Se existir um relacionamento com a entidade mais genérica não pode ser aplicada a regra 3 (tabelas apenas para as entidades especializadas). * Regras: Agregação Implementação: Criar tabela para cada entidade; A agregação deve ser vista como dois relacionamentos e deve criar tabela de acordo com as regras aplicadas aos relacionamentos. * Regras: Agregação Exemplo: MER MR Médico (CRM, Nome) Paciente (Codigo, Nome) Medicamento (Codigo, Descricao) Medico_Pac (Codigo, CRM, Cod_Paciente, Data) CRM referencia Médico (CRM); Cod_Paciente referencia Paciente (Codigo) Cons_Medicamento (Cod_Consulta, Cod_Medicamento) Cod_Consulta referencia Medico_Pac (Codigo); Cod_Medicamento referencia Medicamento (Codigo) * Pergunta??? Qual das situações deverá ser adotada no mapeamento de especialização/generalização? A prioridade da escolha deve ser adequada à necessidade do cliente e à estratégia de ter ou manter uma base de dados consistente, eficiente e rápida! * Quadro Resumo: Regras Gerais * Considerações Finais Para facilitar o seu entendimento, o esquema relacional gerado deve ser descrito em um dicionário de dados; Este dicionário deve conter as seguintes informações: Descrição de todas as relações; Descrição de cada atributo das relações; Tipo de dado, restrições, etc; * Considerações Finais Exemplo de descrição da relação Departamento: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
Compartilhar