Baixe o app para aproveitar ainda mais
Prévia do material em texto
Banco de Dados 1 • Aula 05 Claudio Lobo Banco de Dados 1 Slide 2 Objetivos • C04. Conhecer os principais conceitos de modelagem e normalização de dados; – C04H7. Ser capaz de construir um modelo de negócios; – C04H8. Ser capaz de construir um modelo lógico de dados; – C04H9. Entender um modelo físico de dados e suas implicações na construção do banco de dados; – C04H10. Conhecer e utilizar as 3 primeiras formas normais. Claudio Lobo Banco de Dados 1 Slide 3 Abordagem Relacional • Atualmente, há um claro predomínio dos SGBD relacionais. • Muitos conceitos usados no projeto de BD (Ex.: o conceito de normalização), foram criados em combinação com a abordagem relacional. • Um banco de dados relacional é composto por Tabelas (também chamadas relações). Claudio Lobo Banco de Dados 1 Slide 4 Abordagem Relacional • Tabelas – Conjunto não ordenado de linhas (tuplas, na terminologia acadêmica). – Cada linha é composta por uma série de campos (ou atributos, na terminologia acadêmica). – Cada campo é identificado por um nome de campo (nome de atributo, na terminologia acadêmica). – O conjunto de campos das linhas de uma tabela que possuem o mesmo nome formam uma coluna. Claudio Lobo Banco de Dados 1 Slide 5 Abordagem Relacional • Chaves – Conceito básico para estabelecer relações entre linhas de tabelas de um SGBD Relacional (SGBDR). – Em um SGBDR, há ao menos três tipos de chaves: • Primária. • Alternativa. • Estrangeira. Claudio Lobo Banco de Dados 1 Slide 6 Abordagem Relacional • Chave Primária – É uma coluna (ou uma combinação de colunas) cujos valores distinguem uma linha das demais dentro de uma tabela. • Torna-se o identificador único. • A definição formal de chave primária exige que seja mínima. – Uma chave é mínima quando todas suas colunas forem realmente necessárias para garantir o requisito de unicidade de valores da chave. – Na abordagem relacional, uma chave primária é uma restrição de integridade. • Garante a unicidade de valores nas colunas que compõem a chave. Claudio Lobo Banco de Dados 1 Slide 7 Abordagem Relacional • Chave Estrangeira – É uma coluna (ou combinação de colunas), cujos valores referenciam valores da chave primária de uma outra tabela. • É o mecanismo que permite a implementação de relacionamentos em um banco de dados relacional. • Logo, na tabela que possui a chave estrangeira, não podem aparecer linhas que contenham um valor do campo que é chave estrangeira que não exista na coluna que é chave primária da tabela referenciada. Claudio Lobo Banco de Dados 1 Slide 8 Abordagem Relacional • Chave Estrangeira – Uma chave estrangeira impõe restrições que devem ser garantidas em diversas situações de alteração do banco de dados: • Ao incluir uma nova linha ou alterar um valor de chave estrangeira já existente, na tabela que contém a chave estrangeira: – Deve ser garantido que o valor da chave estrangeira EXISTA na coluna da chave primária referenciada. • Ao excluir uma linha da tabela que contém a chave primária referenciada pela chave estrangeira: – Deve ser garantido que na coluna chave estrangeira não apareça o valor da chave primária que está sendo excluída. Claudio Lobo Banco de Dados 1 Slide 9 Abordagem Relacional • Chave Estrangeira Claudio Lobo Banco de Dados 1 Slide 10 Abordagem Relacional • Chave Estrangeira – Uma chave estrangeira NEM SEMPRE referencia uma chave primária de outra tabela. • Ela pode referenciar a chave primária da própria tabela. • Isso acontece nos auto-relacionamentos. Claudio Lobo Banco de Dados 1 Slide 11 Abordagem Relacional • Domínios e valores nulos (null) – Quando definimos uma tabela, para cada coluna deve ser especificado um conjunto de valores (alfanumérico, numérico, booleano, etc) que os campos daquela coluna podem assumir. • Este conjunto de valores é chamado de domínio. – Além disso, deve ser especificado se os campos da coluna podem estar nulos (“null” em inglês) ou não. • Se não puderem ser nulos, indica obrigatoriedade. – Normalmente, os SGBDR exigem que as colunas que compõem a chave primária (e estrangeira) sejam obrigatórias (não nulas). Claudio Lobo Banco de Dados 1 Slide 12 Abordagem Relacional • Restrições de Integridade de Dados. – Para tentar garantir a integridade de um banco de dados, os SGBD oferecem o mecanismo de restrições de integridade. • Conjunto de regras de consistência de dados que é garantida pelo próprio SGBD. – No caso da abordagem relacional, costuma-se classificar as restrições de integridade nas seguintes categorias: • De Domínio. • De Nulo (Null). • De Chave. • De Integridade Referencial. Claudio Lobo Banco de Dados 1 Slide 13 Transformações entre Modelos Transformações entre Modelos Claudio Lobo Banco de Dados 1 Slide 14 Transformações entre Modelos • Foram vistas duas formas de modelagem de dados, que se propõem a modelar os dados em diferentes níveis de abstração: – Abordagem ER. • Voltada à modelagem de dados de forma independente do SGBD considerado. • Gera o modelo conceitual. – Abordagem Relacional. • Modela os dados a nível de SGBDR. • Gera o modelo lógico. Claudio Lobo Banco de Dados 1 Slide 15 Transformações entre Modelos • Um MER pode ser implementado por meio de diversos modelos relacionais. – Todos podem ser considerados uma implementação correta do desse MER. – Contudo, estes diferentes modelos relacionais podem: • Resultar em diferentes performances do sistema construído sobre o banco de dados. • Implicar maior facilidade ou dificuldade de desenvolvimento e manutenção do sistema construído sobre o SGBD. Claudio Lobo Banco de Dados 1 Slide 16 Transformação ER → Relacional • Procura-se alcançar dois objetivos centrais: – Obter um banco de dados que permita boa performance de instruções de consulta e alteração do banco de dados. – Obter um banco de dados que simplifique o desenvolvimento e a manutenção de aplicações. • Para alcançar esses objetivos, é conveniente: – Evitar junções, tendo os dados necessários à consulta numa única linha. • Junções envolvem diversos acessos a disco. – Diminuir o número de chaves primárias. • O SGBD usa um índice para cada chave primária. Índices ocupam espaço em disco. Inserir/Remover entradas em um índice pode exigir diversos acessos a disco. Claudio Lobo Banco de Dados 1 Slide 17 Transformação ER → Relacional • Passos: – Tradução inicial de entidades e respectivos atributos. – Tradução de relacionamentos e respectivos atributos. – Tradução de generalizações/especializações. • Claudio Lobo Banco de Dados 1 Slide 18 Transformação ER → Relacional • Tradução inicial de entidades e respectivos atributos. – Cada entidade vira uma tabela. – Cada atributo da entidade vira uma coluna desta tabela. • Os atributos identificadores da entidade correspondem às colunas que compõem a chave primária da tabela. – É uma tradução inicial. • Pode ser que tabelas definidas nesta etapa sejam fundidas. – Caso de algumas alternativas de implementação de relacionamentos 1:1 e de generalização/especialização. Claudio Lobo Banco de Dados 1 Slide 19 Transformação ER → Relacional • Tradução inicial de entidades e respectivos atributos. • PESSOA (CpfPessoa, Nome, Endereco, DataAdm, DataNAsc) Claudio Lobo Banco de Dados 1 Slide 20 Transformação ER → Relacional • Tradução inicial de entidades e respectivos atributos. – Regras para nomes de entidades e atributos: • É conveniente manter os nomes de colunas curtos. – Ex.: DataNasc, em vez de Data de Nascimento. • O nome de uma coluna não deve conter espaços em branco. – Ex.: DataNasc, em vez de Datade Nascimento. • Nomes de atributos compostos de diversas palavras devem ser abreviados. – Ex.: DataNasc, em vez de Data de Nascimento. Claudio Lobo Banco de Dados 1 Slide 21 Transformação ER → Relacional • Tradução inicial de entidades e respectivos atributos. – Regras para nomes de entidades e atributos: • Não é recomendado incluir no nome de uma coluna o nome da tabela em que ela aparece. – A coluna chave primária da entidade é exceção a essa regra. – Como esta coluna pode aparecer em outras tabelas na forma de chave estrangeira, é recomendável que os nomes das colunas que compõem a chave primária sejam sufixadas ou prefixadas com o nome ou sigla da tabela na qual aparecem como chave primária. – Ex.: CpfPessoa. Claudio Lobo Banco de Dados 1 Slide 22 Transformação ER → Relacional • Tradução inicial de entidades e respectivos atributos. – Relacionamentos Identificadores (Entidade Fraca) • A tabela que possui o Relacionamento Identificador (Entidade Fraca) HERDA, como parte de sua chave primária, o atributo identificador da tabela "forte". DEPENDENTE (CpfEmpregado, CodDependente, Nome) Claudio Lobo Banco de Dados 1 Slide 23 Transformação ER → Relacional • Tradução de relacionamentos e respectivos atributos. – Para Relacionamentos, o fator determinante para a tradução a adotar é a cardinalidade mínima e máxima das entidades que participam do relacionamento. – É interessante conhecer as três formas básicas de tradução de relacionamentos para o modelo relacional: • Tabela própria. • Colunas adicionais dentro da tabela da(s) entidade(s). • Fusão de tabelas de entidades. Claudio Lobo Banco de Dados 1 Slide 24 Transformação ER → Relacional • Tradução de relacionamentos e respectivos atributos. – Tradução usando Tabela própria. • O relacionamento torna-se uma tabela própria. • Esta tabela contém as colunas que herdam: – Os identificadores das entidades relacionadas. » Comporão a chave primária dessa tabela. – Os atributos do relacionamento. • Cada uma das colunas que corresponde ao identificador de uma entidade é chave estrangeira em relação à tabela que implementa a entidade referenciada. Claudio Lobo Banco de Dados 1 Slide 25 Transformação ER → Relacional • Tradução de relacionamentos e respectivos atributos. – Tradução usando Tabela própria. ENGENHEIRO (CodEng, Nome) PROJETO (CodProj, Titulo) ALOCAÇÃO (CodEng, CodProj, Funcao) CodEng referencia Engenheiro CodProj referencia Projeto Claudio Lobo Banco de Dados 1 Slide 26 Transformação ER → Relacional • Tradução de relacionamentos e respectivos atributos. – Tradução usando colunas adicionais dentro da tabela da(s) entidade(s). • Só é possível quando uma das entidades que participa do relacionamento tem cardinalidade máxima um. • A tabela com entidade de cardinalidade máxima 1 HERDA: – As colunas do identificador da entidade relacionada. » Estas colunas formam a chave estrangeira em relação à entidade relacionada. – As colunas correspondentes aos atributos do relacionamento. Claudio Lobo Banco de Dados 1 Slide 27 Transformação ER → Relacional • Tradução de relacionamentos e respectivos atributos. – Tradução usando colunas adicionais dentro da tabela da(s) entidade(s). DEPARTAMENTO (CodDep, Nome) EMPREGADO (CodEng, Nome, CodDep, DataLot) CodDep referencia Departamento Claudio Lobo Banco de Dados 1 Slide 28 Transformação ER → Relacional • Tradução de relacionamentos e respectivos atributos. – Tradução com Fusão de tabelas de entidades. • Só pode ser aplicada quando o relacionamento é de tipo 1:1. • A tradução consiste em implementar todos atributos de ambas entidades, bem como os atributos do relacionamento em uma única entidade. Claudio Lobo Banco de Dados 1 Slide 29 Transformação ER → Relacional • Tradução de relacionamentos e respectivos atributos. – Tradução com Fusão de tabelas de entidades. PAISTRATADO (CodPais, Nome, DataCeleb, Local) Claudio Lobo Banco de Dados 1 Slide 30 Transformação ER → Relacional • Tradução de relacionamentos e respectivos atributos. – A regra específica que deve ser usada na tradução de um relacionamento é determinada pelas cardinalidades mínima e máxima das entidades envolvidas nos relacionamentos. Claudio Lobo Banco de Dados 1 Slide 31 Transformação ER → Relacional • Tradução de relacionamentos e respectivos atributos. Relacionamentos 1:1 Regra de Implementação Tabela Própria Adição de Coluna Fusão de Tabelas (0,1)──◊──(0,1) Talvez Sim Não (0,1)──◊──(1,1) Não Talvez Sim (1,1)──◊──(1,1) Não Talvez Sim Claudio Lobo Banco de Dados 1 Slide 32 Transformação ER → Relacional • Tradução de relacionamentos e respectivos atributos. Relacionamentos 1:n Regra de Implementação Tabela Própria Adição de Coluna Fusão de Tabelas (0,1)──◊──(0,n) Talvez Sim Não (0,1)──◊──(1,n) Talvez Sim Não (1,1)──◊──(0,n) Não Sim Não (1,1)──◊──(1,n) Não Sim Não Claudio Lobo Banco de Dados 1 Slide 33 Transformação ER → Relacional • Tradução de relacionamentos e respectivos atributos. Relacionamentos n:n Regra de Implementação Tabela Própria Adição de Coluna Fusão de Tabelas (0,n)──◊──(0,n) Sim Não Não(0,n)──◊──(1,n) (1,n)──◊──(1,n) Claudio Lobo Banco de Dados 1 Slide 34 Transformação ER → Relacional • Tradução de Especialização/Generalização. – Para hierarquias de generalização/especialização na abordagem relacional, há duas alternativas a considerar: • Uso de uma única tabela para toda hierarquia de generalização/especialização. • Uso de uma tabela para cada entidade. Claudio Lobo Banco de Dados 1 Slide 35 Transformação ER → Relacional • Tradução de Especialização/Generalização. – Uso de uma única tabela para toda hierarquia de generalização/especialização. • Esta tabela conterá: – A chave primária correspondente ao identificador da entidade mais genérica (“entidade pai”). – Uma coluna Tipo, que identifica que tipo de entidade especializada está sendo representada por cada linha da tabela. – Uma coluna para cada atributo da entidade genérica. – Colunas referentes aos relacionamentos dos quais participa a entidade genérica e que sejam implementados através da alternativa de adicionar colunas à tabela da entidade genérica. Claudio Lobo Banco de Dados 1 Slide 36 Transformação ER → Relacional • Tradução de Especialização/Generalização. – Uso de uma única tabela para toda hierarquia de generalização/especialização. • Esta tabela conterá: – Uma coluna para cada atributo de cada entidade especializada. – Colunas referentes aos relacionamentos dos quais participa cada entidade especializada e que sejam implementados através da alternativa de adicionar colunas à tabela da entidade. Os valores destas colunas serão opcionais, já que só existirão valores quando a linha for referente à entidade especializada em questão. Claudio Lobo Banco de Dados 1 Slide 37 Transformação ER → Relacional • Tradução de Especialização/Generalização. – Uso de uma única tabela para toda hierarquia de generalização/especialização. INSTRUMENTO (CodInstr, NrCordas, Tipo) VIOLONISTA (Rg, Nome, CodInstr) CodInstr referencia INSTRUMENTO Claudio Lobo Banco de Dados 1 Slide 38 Transformação ER → Relacional • Tradução de Especialização/Generalização. – Uso de uma tabela para cada entidade. • Nesse caso, cria-se uma tabela para cada entidade que compõe a hierarquia: – Aplicando as regras correspondentes à implementação de entidades e relacionamentos já vistas. – Incluindo a chave primária da tabela correspondente à entidade genérica em cada tabela correspondente a uma entidade especializada. Claudio Lobo Banco de Dados 1 Slide 39 Transformação ER → Relacional • Tradução de Especialização/Generalização.– Uso de uma tabela para cada entidade. SOPRO (CodInstr, Tipo) CORDAS (CodInstr, NrCordas) VIOLONISTA (Rg, Nome, CodInstr) CodInstr referencia CORDAS Claudio Lobo Banco de Dados 1 Slide 40 Transformação ER → Relacional • Tradução de Especialização/Generalização. – Comparação entre as abordagens Tabela única Uma tabela para cada entidade Todos os dados (tanto da entidade genérica quanto das especializações) estão em uma única linha. Os dados encontram-se separados em várias tabelas. Gera colunas cujos dados são opcionais (ou seja, podem não ser preenchidos) As colunas opcionais que aparecem são apenas aquelas referentes a atributos que podem ser vazios do ponto de vista da aplicação. Não há necessidade de realizar junções para obter dados referentes a uma ocorrência de entidade genérica juntamente com uma ocorrência de entidade especializada. Necessita junções para obter valores correspondentes à entidade genérica e suas especializações. A chave primária é armazenada uma única vez A chave primária aparece tanto na tabela referente à entidade genérica quanto na tabela referente à entidade especializada. Claudio Lobo Banco de Dados 1 Slide 41 Transformação ER → Relacional • Tradução de Atributos Multivalorados. – Atributos multivalorados não são desejáveis em DER, já que não possuem implementação direta na abordagem relacional. – Normalmente, são traduzidos em uma Entidade. – Entretanto, esta implementação pode trazer problemas de performance. Deve ser analisado se: • Existem casos em que a entidade não possui mais que duas instâncias do atributo. – Quando isso ocorrer, é suficiente armazenarmos apenas os dois atributos. • Há consultas ao SGBD usando o atributo multivalorado como critério de seleção. – Se não houver, não deve ser gerada outra entidade. Claudio Lobo Banco de Dados 1 Slide 42 Transformação ER → Relacional • Tradução de Atributos Multivalorados. Abordagem usando outra entidade CLIENTE (CpfCli, Nome) TELEFONE (CpfCli, NúmeroTel) CpfCli referencia CLIENTE Abordagem usando uma única entidade CLIENTE (CpfCli, Nome, NúmeroTel1, NúmeroTel2) Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21 Slide 22 Slide 23 Slide 24 Slide 25 Slide 26 Slide 27 Slide 28 Slide 29 Slide 30 Slide 31 Slide 32 Slide 33 Slide 34 Slide 35 Slide 36 Slide 37 Slide 38 Slide 39 Slide 40 Slide 41 Slide 42
Compartilhar