Baixe o app para aproveitar ainda mais
Prévia do material em texto
Olá, estudante! Nesta revisão serão abordados os seguintes temas: 1. Projeto Conceitual: Modelo Entidade-Relacionamento 2. Projeto Lógico: Modelo Relacional 3. Normalização 4. MySQL Workbench Projeto Conceitual: Modelo Entidade- Relacionamento Modelo Entidade-Relacionamento (MER): é um modelo de dados utilizado na fase de projeto conceitual do Banco de Dados. Entidade: é algo do mundo real que possui uma existência própria. Cada Entidade tem propriedades particulares que são chamadas de atributos. Tipos de entidade (retângulo no diagrama entidade-relacionamento) são os que têm a mesma "estrutura". Os tipos de entidade se escrevem com maiúscula no singular no DER (diagrama entidade-relacionamento). Um tipo de entidade define uma coleção, ou conjunto de entidades, que tem os mesmos atributos. Atributo: é uma propriedade que descreve uma entidade. A Figura 1 apresenta os atributos do tipo de entidade Funcionário: ident, nome, endereço, salário e dt_nasc, que é a data de nascimento. Figura 1: Atributos do tipo de entidade Funcionário. Instância: a coleção de todas as entidades de um tipo de entidade (elipses). Na Figura 2 temos o tipo de entidade FUNCIONÁRIO com os atributos nome e salário. As entidades individuais func1 e func2. Figura 2. Conceitos de tipo de entidade, entidade e instância. Atributo-chave: todo tipo de entidade deve ter um atributo-chave, que pode ser simples ou composto, e os valores devem ser distintos. Por exemplo, o CPF é o atributo-chave para o tipo de entidade FUNCIONÁRIO, não pode ser o atributo nome porque pode ter o mesmo nome para mais de um funcionário ou entidade, e isso viola a restrição de unicidade que proíbe que duas entidades, em um mesmo conjunto entidade, tenham os mesmos valores no seu atributo-chave. Atributos-chave são sinalizados com sublinhado. A Figura 3 apresenta o tipo de entidade Carro. Neste exemplo tem dois atributos cujos valores são distintos (Registro e Cod_veiculo) para cada entidade individual no conjunto, eles estão sublinhados indicando que são atributos- chave, cada um por si só. Depois, no modelo lógico, só será eleito um deles como chave. O atributo-chave Registro é também composto por subpartes: Estado e Número, isso significa que é necessária uma combinação de atributos para poder ser única. É o caso do RG, que, por não ser único, necessita da indicação do estado para poder compor um valor único para cada pessoa. Atributo multivalorado: o atributo Cor, da Figura 3, está destacado com linha dupla indicando que ele é multivalorado, isto é, atributos que podem ter um conjunto de valores. Exemplo: Cor={verde, branco, azul}. Figura 3. Carro com dois atributos-chave, Registro e Cod_veiculo (atributos- chave por separado) e um atributo multivalorado (Cor). Tipo de relacionamento: um tipo relacionamento R entre n entidades, E1, E2,..., En, define um conjunto de associações – ou um conjunto relacionamento – entre entidades desses tipos de entidade. A Figura 4 apresenta três tipos de relacionamentos: FORNECE, USA e PODE FORNECER, ambos são binários ou de grau 2, que significa que associa dois tipos de entidades. Figura 4. Tipos de relacionamento: FORNECE, USA e PODE FORNECER. Restrições Os tipos de relacionamento costumam ter certas restrições que limitam as combinações de entidades que podem participar no conjunto de relacionamentos correspondentes e que depende do minimundo. A Figura 5 apresenta a regra da empresa onde cada funcionário precisa trabalhar exatamente em um departamento. Isso é uma restrição do esquema. Figura 5: Associação entre uma ou mais entidades dos tipos de entidade EMPREGADO e DEPARTAMENTO. Existem as seguintes restrições sobre tipos de relacionamento: 1. Razão de cardinalidade: especifica a quantidade de instâncias (máxima) de relacionamentos que uma entidade pode participar: uma para um (1:1) um para muitos (1:N ou N:1), e muitos para muitos (N:N ou M:N). 2. Participação: especifica se a existência de uma entidade depende de ela estar relacionada com outra entidade através de um relacionamento. Sendo que ela é total quando ela é obrigatória (dependência existencial) e é apresentada com linha dupla no DER. A participação parcial ela é opcional e é apresentada no DER com linha simples. 3. Restrição estrutural, chamada de min max: define o mínimo e o máximo que uma entidade pode participar de um relacionamento. Tipo de Entidade Fraca São tipos de entidades que não têm atributos-chaves. Segundo Elmasri e Navathe (2003, p. 64), um tipo de entidade pode não ter chave, nesse caso ela é chamada de tipo de entidade fraca. Um tipo de entidade fraca pode ter uma chave parcial. A Figura 6 apresenta a modelagem de uma biblioteca com tipo de entidade Livro, com os dados do Livro, mas na biblioteca o que são emprestados são os exemplares do livro. O tipo de entidade fraca exemplar não tem chave por si só, ela tem que ser identificada através da associação com outro tipo de entidade, que neste caso é o Livro, chamada de tipo de entidade proprietário da identificação, e o tipo de relacionamento entre elas é tipo de relacionamento de identificação (repare que ele é um losango com linha dupla). Um tipo de entidade fraca sempre tem participação total (obrigatória, linha dupla) com respeito ao seu tipo de relacionamento de identificação (no exemplo, TEM), uma vez que não é possível identificar uma entidade fraca sem o correspondente tipo de entidade proprietária (LIVRO). A chave parcial do tipo de entidade fraca é sequência. Figura 6. Tipo de entidade fraca Exemplar. Projeto Lógico: Modelo Relacional O modelo relacional é um modelo de dados lógico utilizado para desenvolver projetos lógicos de bancos de dados. Os SGBDs que utilizam o modelo relacional são denominados SGBDs Relacionais. É o modelo de dados que representa um banco de dados como uma coleção de relações. Uma relação remete a uma tabela de valores, na qual cada linha representa uma coleção de valores (colunas) relacionados. Mapear o modelo conceitual para o modelo lógico relacional O mapeamento do modelo conceitual para o modelo lógico relacional é feito seguindo em uma série de passos descritos a seguir. • Passo 1: • Para cada tipo de entidade normal E no DER (empregado na Figura 7), crie uma relação R que inclua todos os atributos simples de E. • Inclua também os atributos simples dos atributos compostos. • Escolha um dos atributos-chave de E como a chave primária de R. • Se a chave escolhida é composta, então o conjunto de atributos simples que o compõem formarão a chave primária de R. Figura 7. Tipo de entidade Empregado. Assim, a relação EMPREGADO é criada seguindo o passo 1. EMPREGADO(Nss, Pnome, Mnome, Snome, Sexo, Endereço, DataNasc, Salário) • Passo 2: • Para cada tipo de entidade fraca W do DER (DEPENDENTE na Figura 8) com o tipo de relacionamento de identificação E, crie uma relação R e inclua todos os atributos simples (ou os atributos simples de atributos compostos) de W como atributos de R. • Além disso, inclua como a chave estrangeira de R a chave primária da relação que corresponde ao tipo de entidade proprietário da identificação. • A chave primária de R é a combinação da chave primária do tipo de entidade proprietário da identificação e a chave parcial do tipo de entidade fraca W. Figura 8. Tipo de entidade fraca Dependente. Assim a relação DEPENDENTE é criada seguindo o passo 2. DEPENDENTE(NssEmpregado, Nome, Sexo, DataNsc, TipoRelação) Em que NssEmpregado é chave estrangeira para a relação Empregado. • Passo 3: • Para cada tipo de relacionamento binário 1:1, R, do DER, identifique as relações S e T que correspondem aos tipos de entidade que participam da relação R. • Escolhauma das relações, por exemplo S, e inclua como chave estrangeira de S a chave primária de T. • É melhor escolher o tipo de entidade com participação total (linha dupla no DER) em R como sendo a relação S. Na figura 9, S foi escolhida como sendo DEPARTAMENTO ela tem participação total no tipo de relacionamento GERENCIA. • Inclua todos os atributos simples (ou os atributos simples de atributos compostos) do tipo de relacionamento 1:1, R, como atributos de S. Figura 9. Relacionamento binário 1:1. Assim, a relação DEPARTAMENTO é completa seguindo o passo 3. DEPARTAMENTO (Nome, Número, Número_de_empregados,NSSEmpregado, Data_inicio_gerencia) NSSEmpregado é chave estrangeira da Relação de Empregado, Data início gerencia é atributo do relacionamento GERENCIA que é colocado na relação DEPARTAMENTO. Note que o atributo multivalorado Localização não é colocado ainda na relação, porque ele será mapeado no passo 6. • Passo 4: • Para cada tipo de relacionamento binário regular 1:N, R, identificar a relação S que representa o tipo de entidade que participa do lado N (muitos) de R. • Inclua como chave estrangeira de S a chave primária de T que representa o outro tipo de entidade que participa em R; isso porque cada entidade do lado 1 está relacionada a mais de uma entidade no lado N. • Na Figura 10, S será escolhido como sendo a relação Empregado e T será escolhido como sendo a relação Departamento. Assim, a relação EMPREGADO deverá ter a chave estrangeira de DEPARTAMENTO. • Inclua também quaisquer atributos simples (ou atributos simples de atributos compostos) do tipo de relacionamento 1:N como atributos de S. No caso da Figura 10, não tem atributos no tipo de relacionamento. Figura 10. Relacionamento binário N:1. Assim, a relação EMPREGADO é completada seguindo o passo 4. EMPREGADO(Nss, Pnome, Mnome, Snome, Sexo, Endereço, DataNasc,Salário, Nome_Departamento) NomeDepertamento é chave estrangeira que mapeia o tipo de relacionamento: TRABALHA_PARA. Passo 5: • Para cada tipo de relacionamento binário M:N, R, crie uma nova relação S para representar R. • Inclua como chave estrangeira de S as chaves primárias das relações que representam os tipos de entidade participantes; sua combinação irá formar a chave primária de S. • Inclua também qualquer atributo simples do tipo de relacionamento M:N (ou atributos simples dos atributos compostos) como atributos de S. Figura 11. Relacionamento binário N:N ou N:M. Assim, seguindo o mapeamento da Figura 11 e considerando já ter a relação Projeto, a relação Trabalha_em é criada seguindo o passo 5. PROJETO(Número, Nome, Localização) TRABALHA_EM(NssEmpregado,NúmeroProjeto, Horas) NssEmpregado é chave estrangeira para Empregado e NúmeroProjeto é chave estrangeira para Projeto. O atributo horas que é do tipo de relacionamento e é incluído na relação TRABALHA_EM. • Passo 6: • Para cada atributo A multivalorado, crie uma nova relação R que inclua o atributo A e a chave primária, K, da relação que representa o tipo de entidade ou o tipo de relacionamento que tem A como atributo. • A chave primária de R é a combinação de A e K. • A Figura 12 apresenta o atributo multivalorado Localização. • Se o atributo multivalorado é composto, inclua os atributos simples que o compõem. Figura 12. Atributo multivalorado Localização. Assim, a relação LOCALIZAÇÃO é criada seguindo o passo 6. LOCALIZAÇÃO(DNome, DLocalização) Normalização Primeira Forma Normal A primeira forma normal proíbe que relações tenham: • Atributos compostos • Atributos multivalorados • Relações aninhadas O único valor permitido pela 1FN (Forma Normal) é o valor atômico. O esquema da tabela DEPTO não está na 1FN por ter o atributo Localizações que é multivalorado (Figura 13). Figura 13. Exemplo de relação que não está na 1FN. Normalizando, é criada duas relações (veja o passo 6 do mapeamento conceitual para lógico). A Figura 14 apresenta as duas relações que já estão na 1FN: DEPTO_B e DEPTO_LOCS desmembrando o atributo multivalorado. Figura 14. Processo de normalização da relação que não está na 1FN para duas relações em 1FN. Segunda Forma Normal Na segunda forma normal, se a relação só tem um atributo-chave, ela já está na segunda forma normal. Se a chave é composta por mais atributos, a relação R está na 2FN se também estiver na 1FN e todos os atributos não primos A de R forem totalmente dependentes da chave primária. Na Figura 15, a relação FUNC_PROJ não está na 2FN, ela tem dois atributos que compõem a chave e existem atributos que dependem de parte da chave, e não de toda a chave, por exemplo o atributo fuc_nome, que depende de parte da chave que é func_ident. Figura 15. Relação FUNC_PROJ não está na 2FN. Na relação FUNC_PROJ existem três dependências funcionais: DF1 func__ident e proj_numero determinam juntos as horas. DF2 func_ident determina func_nome. DF3 proj_numero determina proj_nome e proj_localização. Então não está na 2FN. Normaliza e cria relações para cada dependência funcional encontrada, como é possível observar na Figura 16. Figura 16. Processo de normalização da relação FUNC_PROJ. Terceira Forma Normal A Figura 17 apresenta uma relação FUNC_DEPTO que não se encontra na 3FN. Foram identificadas duas dependências funcionais: DF1 e DF2 na Figura 17. Figura 17. Relação FUNC_DEPTO que não se encontra na 3FN. func_ident depto_g_ident é uma dependência transitiva por depto_numero. Normalizando, são criadas duas relações, a FD1 da Figura 18, com os dados de Funcionário e a chave estrangeira para Departamento, e a relação Departamento com depto_número como chave primária e depto_nome e depto_g_ident como atributos. Figura 18. Processo de normalização da relação FUNC_DEPTO. BOYCE-CODD NORMAL FORM (BCNF) Uma relação esquema R está na BCNF se sempre que houver uma DF X->A em R, então X é uma superchave de R. No exemplo da Figura 19 vemos que existem duas DF: DF1: em que {estudante, curso} determina instrutor. DF2: em que instrutor determina curso. Se a relação tivesse apenas DF1, a relação estaria na BCNF. Mas em DF2, instrutor não é uma superchave, portanto, viola a BCNF, mas não a 3FN, pois curso é primo (faz parte da chave primária). Figura 19. Exemplo de relação na 3FN e não na BCNF. Para normalizar, a relação deve ser decomposta para atender a essa propriedade, mas abdica da preservação das dependências funcionais nas relações decompostas. No exemplo, a normalização correta é a apresentada na Figura 20, na qual a DF1 ela é perdida na decomposição, mas é possível reconstruir a relação originar com join sem ter tuplas espúrias. Figura 20. Normalização para BCNF do exemplo da Figura 19. Resumindo, cada forma normal engloba a forma normal anterior: • Toda relação em 2FN está na 1FN. • Toda relação em 3FN está na 2FN. • Toda relação em BCNF está na 3FN. Existem relações que estão na 3FN, mas não em BCNF. MYSQL É bom sempre ver a documentação da ferramenta que se encontra em: https://dev.mysql.com/doc/workbench/en/. Para instalação: Como instalar o MySQL e o WorkBench - Passo a Passo. https://dev.mysql.com/doc/workbench/en/ https://www.youtube.com/watch?v=a5ul8o76Hqw Para modelagem: https://dev.mysql.com/doc/workbench/en/wb-getting-started- tutorial-creating-a-model.html. Há diferentes vídeos, conforme as dúvidas que você tenha sobre o funcionamento da ferramenta, disponíveis em: https://www.youtube.com/mysqlchannel. https://dev.mysql.com/doc/workbench/en/wb-getting-started-tutorial-creating-a-model.htmlhttps://dev.mysql.com/doc/workbench/en/wb-getting-started-tutorial-creating-a-model.html https://www.youtube.com/mysqlchannel https://www.youtube.com/watch?v=a5ul8o76Hqw
Compartilhar