Baixe o app para aproveitar ainda mais
Prévia do material em texto
Modelo Relacional Audir da Costa Oliveira Filho Instituto Federal de Goiás – IFG campus Luziânia audir.filho@ifg.edu.br 13 de setembro de 2020 Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 1 / 87 audir.filho@ifg.edu.br Conteúdo programático 1 Modelo Relacional 2 Restrições de Integridade 3 Transformação ER para Relacional 4 Normalização Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 2 / 87 Conteúdo programático 1 Modelo Relacional 2 Restrições de Integridade 3 Transformação ER para Relacional 4 Normalização Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 3 / 87 Modelo Relacional Introduzido por Ted Codd, da IBM Research, em 1970. Utiliza o conceito de relação matemática. Possui base teórica na teoria dos conjuntos e na lógica de predicados. Primeiras implementações comercias modelo relacional: SGBD Oracle SQL/DS da IBM O modelo relacional representa o banco de dados como uma coleção de Relações (Tabelas). Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 4 / 87 Modelo Relacional O modelo relacional é um modelo lógico, utilizado em banco de dados relacionais. Neste modelo começamos a nos preocupar em como os dados devem ser armazenados e em como criaremos os relacionamentos do modelo conceitual. Este modelo tem por finalidade representar os dados como uma coleção de tabelas e cada linha de uma tabela representa uma coleção de dados relacionados. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 5 / 87 Modelo Relacional Domínio (Tipo de Dado) Atributo (Coluna) Tupla (Linha ou Registro) Relação (Tabela) Esquema (Definição das relações, Especificação do Banco de Dados) Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 6 / 87 Modelo Relacional Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 7 / 87 Identificação e Associação Entre Relações (Tabelas) Chave Primária (PK – primary key) é uma coluna ou uma combinação de colunas cujos valores distinguem uma linha das demais dentro de uma tabela. Chave Estrangeira (FK – foreign key) é uma coluna ou uma combinação de colunas, cujos valores aparecem necessariamente na chave primária de uma tabela. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 8 / 87 Identificação e Associação entre Relações (Tabelas) - Chave Primária Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 9 / 87 Identificação e Associação entre Relações (Tabelas) - Chave Estrangeira Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 10 / 87 Identificação e Associação entre Relações (Tabelas) - Chave Estrangeira Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 11 / 87 Esquema Completo do Banco de Dados Relacional Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 12 / 87 Características das Relações (Tabelas) Ordenação de tuplas em uma relação; Ordenação de valores dentro de uma tupla; Valores e NULLs nas tuplas; Interpretação (Sentido) de uma relação (Tipo Entidade ou Tipo Relacionamento). Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 13 / 87 Conteúdo programático 1 Modelo Relacional 2 Restrições de Integridade 3 Transformação ER para Relacional 4 Normalização Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 14 / 87 Restrições de Integridade Integridade de domínio Especificam que o valor de um campo deve obedecer a definição de valores admitidos para a coluna (o domínio da coluna). Ex. número inteiro, número real, alfanumérico de tamanho definido, data, . . . ). Integridade de vazio É especificado se os campos de uma coluna podem ou não ser vazios (se a coluna é obrigatória ou opcional). Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 15 / 87 Restrições de Integridade Integridade de chave Trata-se da restrição que define que os valores da chave primária e alternativa devem ser únicos. Integridade referencial É a restrição que define que os valores dos campos que aparecem em uma chave estrangeira devem aparecer na chave primária da tabela referenciada. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 16 / 87 Inserção sem Violação de Restrições Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 17 / 87 Restrição de Domínio Violada Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 18 / 87 Restrição de Integridade de Entidade Violada Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 19 / 87 Restrição de Chave Primária Violada Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 20 / 87 Restrição de Integridade Referencial Violada Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 21 / 87 Inserção sem Violação de Restrições Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 22 / 87 Alteração sem Violação de Restrições Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 23 / 87 Alteração sem Violação de Restrições Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 24 / 87 Restrição de Domínio Violada Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 25 / 87 Restrição de Integridade de Entidade Violada Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 26 / 87 Restrição de Chave Primária Violada Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 27 / 87 Restrição de Integridade Referencial Violada Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 28 / 87 Restrição de Integridade Referencial Violada Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 29 / 87 Alteração sem Violação de Restrições Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 30 / 87 Remoção sem Violação de Restrições Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 31 / 87 Restrição de Integridade Referencial Violada Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 32 / 87 Conteúdo programático 1 Modelo Relacional 2 Restrições de Integridade 3 Transformação ER para Relacional 4 Normalização Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 33 / 87 Transformação ER para Relacional Objetivos 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. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 34 / 87 Transformação entre Modelos Para descrever uma tabela no modelo relacional, usamos o nome da tabela seguida dos atributos entre parênteses; Para identificar chave primária, devem-se sublinhar o(s) atributo(s) correspondente(s) a ela; O tipo de cada atributo também deve aparecer no modelo relacional. tbAluno(matricula: inteiro, nome: character(100), dt_nascimento: data) Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 35 / 87 Chave Estrangeira e Integridade Referencial Um conceito muito importante no modelo relacional é o de chave estrangeira (ou Foreign Key); Uma chave estrangeira é um atributo da tabela que faz referência a uma chave primária de outra tabela ou da própria tabela. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 36 / 87 Chave Estrangeira e Integridade Referencial Exemplo: Dado a tabela “Aluno” e a Tabela “Turma” tbTurma(codigo_turma: inteiro, nome_turma: character(5)); tbAluno(matricula: inteiro, nome: character(200), dt_nascimento: data, codigo_turma: inteiro); Observe que a tabela tbAluno possui o atributo codigo_turma; Este atributo é chave primária na tabela tbTurma e, portanto, é uma chave estrangeira na tabela tbAluno. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 37 / 87 Chave Estrangeira e Integridade Referencial Uma chave estrangeira pode ser identificada por um asterisco (*) na frente do atributo, como no modelo abaixo. tbAluno(matricula: inteiro, nome: character(200), dt_nascmento: data, ∗codigo_turma: inteiro); No entanto este tipo de notação não nos permite identificar a que chave primária de qual tabela a chave estrangeira faz referência. tbAluno(matricula:inteiro, nome: character(200), dt_nascmento: data, codigo_turma: inteiro) codigo_turma referencia tbTurma Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 38 / 87 Chave Estrangeira e Integridade Referencial Uma chave estrangeira sempre fará referência a uma chave primária; A chave estrangeira nunca fará referência a um atributo que não seja uma chave primária; O Valor para uma chave estrangeira deve ser um valor que já tenha sido cadastrado na chave primária correspondente ou um valor nulo; Essa restrição é que garante a integridade referencial do modelo relacional, ou seja, garante que não se faça referencia a valores que não existam na base de dados. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 39 / 87 Chave Estrangeira e Integridade Referencial Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 40 / 87 Chave Estrangeira e Integridade Referencial Uma chave estrangeira pode também fazer referência a uma chave primária dentro da mesma tabela; Isso ocorre quando temos relacionamento recursivo. tbAluno(matricula: inteiro, nome: character(200), dt_nascmento: data, matricula_representante: inteiro); matricula_representante referencia tbaluno; Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 41 / 87 Transformação ER para Relacional Regras Evitar junções ter os dados necessários a uma consulta em uma única linha. Diminuir o número de chaves primárias Evitar campos adicionais Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 42 / 87 Transformação ER para Relacional Cliente (CodCliente: inteiro, NomeContato: character(200), Endereco: character(200), Telefone: character(10)); Cliente (CodCliente: inteiro, NomeContato: character(200)); ClienteEnder(CodCliente: inteiro, Endereco: character(200), Telefone: character(10)); CodCliente referencia Cliente Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 43 / 87 Transformação ER para Relacional Passos para a Transformação 1 Tradução inicial de entidades e respectivos atributos; 2 Tradução de relacionamentos e respectivos atributos; 3 Tradução de generalizações / especializações. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 44 / 87 Implementação Inicial de Entidades 1 Cada entidade é traduzida para uma tabela. 2 Cada atributo da entidade define uma coluna desta tabela. Esquema Relacional Correspondente: Pessoa (CodigoPessoa: inteiro, Nome: character(200)); Endereco: character(200), dtDamissao: date, dtNascimento: date); Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 45 / 87 Implementação Inicial de Entidades Relacionamento Identificador Situação na qual a tradução de uma entidade para uma tabela não é trivial. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 46 / 87 Implementação Inicial de Entidades Relacionamento Identificador Chave primária composta por diversos identificadores. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 47 / 87 Implementação de Relacionamentos Tabela Própria O relacionamento é implementado através de uma tabela própria. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 48 / 87 Implementação de Relacionamentos Colunas adicionais dentro de tabela de entidade. implementação de um relacionamento é a inserção de colunas em uma tabela correspondente a uma das entidades que participam do relacionamento. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 49 / 87 Implementação de Relacionamentos Fusão de tabelas de entidades A terceira forma de implementar um relacionamento é através da fusão das tabelas referentes às entidades envolvidas no relacionamento. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 50 / 87 Detalhes da Implementação de Relacionamentos Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 51 / 87 Detalhes da Implementação de Relacionamentos Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 52 / 87 Detalhes da Implementação de Relacionamentos Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 53 / 87 Relacionamentos 1:1 Ambas entidades têm participação opcional. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 54 / 87 Relacionamentos 1:1 Ambas entidades têm participação opcional. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 55 / 87 Relacionamentos 1:1 Uma entidade têm participação obrigatória e a outra tem opcional. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 56 / 87 Relacionamentos 1:1 Uma entidade têm participação obrigatória e a outra tem opcional. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 57 / 87 Relacionamentos 1:1 Ambas entidades têm participação obrigatória. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 58 / 87 Relacionamentos 1:n Tradução do relacionamento através da adição de colunas. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 59 / 87 Relacionamentos 1:n Entidades com cardinalidade máxima e um é opcional. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 60 / 87 Relacionamentos 1:n Entidades com cardinalidade máxima e um é opcional. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 61 / 87 Relacionamentos n:n Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 62 / 87 Relacionamentos n:n Relacionamento ternário (a) e sua transformação em entidade e relacionamentos binários (b). Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 63 / 87 Relacionamentos n:n Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 64 / 87 Implementação de Generalização / Especialização Há duas alternativas: 1 Uso de uma tabela para cada entidade 2 Uso de uma única tabela para toda hierarquia de generação/especialização. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 65 / 87 Uma Tabela por Entidade Especializada Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 66 / 87 Uma Tabela por Hierarquia Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 67 / 87 Implementação de Generalização / Especialização Vantagens da implementação com tabela única Todos os dados referentes a uma ocorrência de entidade genérica e de sua especialização, estão em uma única linha; Não há necessidade de realizar junções quando a aplicação deseja obter dados referentes a uma ocorrência de entidade genérica juntamente com uma ocorrência de entidade especializada; A chave primária é armazenada uma única vez, ao contrário da alternativa com múltiplas tabelas. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 68 / 87 Implementação de Generalização / Especialização Vantagens da implementação com uma tabela por entidade especializada As colunas opcionais que aparecem são apenas aquelas referentes a atributos que podem ser vazios do ponto de vista da aplicação. Na solução alternativa, todas colunas referentes a atributos e relacionamentos das entidades especializadas devem ser definidas como opcionais. O controle de colunas opcionais passa a ser feito pela aplicação com base no valor da coluna TIPO e não pelo SGBD como ocorre na solução alternativa. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 69 / 87 Refinamento do Modelo Relacional Observar a possibilidade de implementar o ideal ou o realizável dentro das restrições de recursos impostas pela prática. Algumas vezes, o esquema de BD criado através do uso das regras apresentadas não atende plenamente os requisitos de performance impostos ao sistema; Pode ser necessário buscar um alternativa de implementação que resulte em melhor performance do sistema; Tais alternativas somente devem ser tentadas em último caso, pois, do ponto de vista do desenvolvimento de programas sobre o banco de dados, são sempre piores que as alternativas apresentadas. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 70 / 87 Conteúdo programático 1 Modelo Relacional 2 Restrições de Integridade 3 Transformação ER para Relacional 4 Normalização Prof. Audir (IFG)Banco de Dados I 13 de setembro de 2020 71 / 87 Normalização em Banco de Dados O processo de normalização geralmente é aplicado quando temos uma base de dados que foi desenvolvida sem considerar a existência de um banco de dados relacional. O processo de normalização consiste de regras, denominadas formas normais. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 72 / 87 Normalização em Banco de Dados Mas o que é normalização em banco de dados? Processo onde se aplica regras a todas as entidades (tabelas) do banco de dados. O propósito é evitar redundância de dados; mistura de diferentes assuntos numa mesma entidade. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 73 / 87 Normalização em Banco de Dados As formas normais mais conhecidas, são: A primeira (1FN), segunda (2FN), terceira (3FN) e quarta formas normais (4FN). Mas existem mais: Forma normal de Boyce-Codd Quinta forma normal Forma normal Domain-Key Algumas pessoas trantam o Boyce/Codd como sendo um caso especifico da 3FN. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 74 / 87 Primeira Forma Normal (1FN) Uma entidade estará na 1FN, se e somente se, todos seus atributos (colunas) forem atômicos, ou seja não conter grupos repetitivos ou colunas que tenham mais de um valor; Grupos repetidos de dados ocorrem quando uma tabela aparece dentro de outra tabela. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 75 / 87 Primeira Forma Normal (1FN) Passos a serem aplicados para consolidação da 1FN: Identificação da chave primária da tabela; Identificação da coluna que contem dados repetidos e removê-las; Criação de uma nova tabela com chave primária para armazenamento do dado repetido; Criar uma relação entre a tabela principal e a tabela secundária. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 76 / 87 Exemplo 1a Forma Normal Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 77 / 87 Segunda Forma Normal (2FN) Uma entidade está na 2FN, se e somente se, estiver na 1FN e todos seus atributos (colunas) não chaves, dependam unicamente da chave primária. Se algum atributo depende de apenas uma parte da chave primária, isso é considerada uma violação da 2FN. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 78 / 87 Segunda Forma Normal (2FN) Passos a serem aplicados para consolidação da 2FN: Identificar colunas que não são funcionalmente dependentes da chave primária da tabela; Remover a coluna da tabela e criar uma nova tabela com esses. dados Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 79 / 87 Exemplo 2a Forma Normal Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 80 / 87 Terceira Forma Normal (3FN) Uma entidade está na 3FN, se e somente se, estiver na 2FN e todos os atributos (colunas) não chave, forem mutuamente independentes, isto é, não há dependência funcional entre elas, e todas dependem única e exclusivamente da chave primária de forma irredutível. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 81 / 87 Terceira Forma Normal (3FN) Passos a serem aplicados para consolidação da 3FN: Identificar as colunas que são funcionalmente dependentes das outras colunas não chave; Remover essas colunas. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 82 / 87 Exemplo 3a Forma Normal Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 83 / 87 Quarta Forma Normal (4FN) Uma entidade está na 4FR, primeiramente já deve estar na terceira, mas ao mesmo tempo não pode conter mais do que um atributo multivalorado Passos a serem aplicados para consolidação da 4FN: Criar duas entidades para separar os atributos Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 84 / 87 Exemplo 4a Forma Normal Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 85 / 87 Segunda Forma Normal (2FN) Forma Normal de Boyce-Codd (ou BCNF) requer que não exista nenhuma dependência funcional não-trivial de atributos em algo mais do que um superconjunto de uma chave candidata. Neste estágio, todos os atributos são dependentes de uma chave, de uma chave inteira e de nada mais que uma chave (excluindo dependências triviais, como A → A ). Quinta Forma Normal (ou 5FN ou PJ/NF) requer que não exista dependências de joins não triviais que não venham de restrições; chave. Domain-Key Normal Form (ou DK/NF) requer que todas as restrições sigam os domínios e restrições chave. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 86 / 87 Bibliografia I Ramez Elmasri, Shamkant Navathe Sistemas de Banco de Dados São Paulo: Pearson Addison Wesley, 2011. Carlos Alberto Heuser Projeto de Banco de Dados Porto Alegre: Sagra Luzzato, 1998. Prof. Audir (IFG) Banco de Dados I 13 de setembro de 2020 87 / 87 Modelo Relacional Restrições de Integridade Transformação ER para Relacional Normalização Bibliografia
Compartilhar