Baixe o app para aproveitar ainda mais
Prévia do material em texto
O modelo de dados relacional e as restrições em banco de dados relacionais Disciplina: Banco de Dados Professor: Wandré Nunes de Pinho Veloso 2 Modelo ER • Introduzido inicialmente por Ted Cood da IBM Research em 1970 (Codd, 1970) • O modelo ER contém descrições e notações para – Entidades – Relacionamentos – Atributos • Cada um desses elementos pode assumir, conforme o caso, um tipo especial, com características específicas 3 Entidades • Primeiro passo: entender o problema e determinar que entidades estão envolvidas nele • Entidade: algo que existe no mundo real e é discernível de outras entidades • A entidade pode ou não ter existência física • Cada entidade possui atributos, que são propriedades específicas que a descrevem. • Cada atributo terá um valor, que se tornará parte do banco de dados 4 Domínio de Atributos • Cada atributo simples de uma entidade está associado a um conjunto de valores que formam o domínio dos possíveis valores do atributo • O domínio é, portanto, o conjunto de valores que podem ser designados para o atributo em cada entidade individual • É feita uma analogia com o conceito matemático de função A: E → P(V) A: atributo; E: entidade; V: conjunto de valores (domínio); P(V): conjunto domínio de V • Para atributos compostos, tem-se V = P(V1)xP(V2)x...P(Vn) 5 Domínio de Atributos • Exemplos: – Numeros_telefone_nacional: O conjunto de números de telefone com 11 dígitos válidos no Brasil – Numeros_telefone_local: O conjunto de números de telefone de 9 dígitos válidos dentro de um código de área particular no Brasil – Cadastro_pessoa_fisica: O conjunto de números de CPF com 11 dígitos – Idades_funcionario: Idades possíveis dos funcionários em uma empresa; cada um deve ter um valor inteiro entre 13 e 90 – Nomes_departamento_academico: O conjunto de nomes de departamentos acadêmicos em uma universidade 6 Conceitos do Modelo Relacional • Esquema de uma relação – R(A1, A2, ..., An), onde R é a relação e Ai são atributos – Cada atributo Ai corresponde ao nome do papel desempenhado por algum domínio D no esquema da relação R – D é denominado o domínio de Ai e é indicado por dom(Ai) – O esquema de uma relação é usado para descrever essa relação, e por isso é chamado de nome da relação – O grau de uma relação (n) é o número de atributos desse esquema de relação – Exemplo: • ALUNO(Nome, CPF, Telefone_residencial, Endereco, Telefone_comercial, Idade, Media) 7 Atributos e tuplas de uma relação (tabela) Aluno 8 Atributos • A cada atributo corresponde um domínio • A especificação dos domínios é feita da seguinte forma: – Aluno: dom(CPF) = CPF_Valido, dom(Nome) = Nomes, dom(Telefone) = Telefones_Nacionais, dom(Endereço) = Endereços, dom(numMatrícula) = NúmerosDeMatrícula – Domínio Nomes: conjunto de até 50 caracteres – Domínio Endereços: conjunto de até 150 caracteres – Domínio NúmerosDeMatrícula: sequência de 7 dígitos numéricos no padrão dddddd-d – Domínio CPF_Valido: 11 dígitos numéricos, sendo que os últimos 2 obedecem à regra de dígito verificador – Domínio Telefones_Nacionais: até 11 dígitos numéricos; tem que ser um telefone válido 9 Atributos • Tipos – Simples (atômicos) ou compostos – De valor único ou multivalorados – Armazenados ou derivados – Complexos – Valor nulo 10 Atributos • Compostos: podem ser divididos em subpartes que representam outros atributos básicos com significados diferentes. Exemplos: endereço, data – Podem formar hierarquias – Úteis em situações em que os atributos são referenciados ora completos, ora por partes • Simples: não são divisíveis 11 Hierarquia de atributos compostos 12 Atributos • Multivalorados – Vários valores simultâneos para a mesma entidade – Exemplos: telefone para uma empresa; formação superior para uma pessoa – Podem existir limites inferior e superior quanto ao número de valores permitidos • Valor único – Caso mais comum 13 Atributos • Derivados – O valor é determinado a partir de outro(s) atributo(s) usando determinada função – Ex.: Idade e Data_de_Nascimento • A idade é calculável a partir da data de nascimento e de um parâmetro variável, que é a data de hoje • Diz-se então que a Idade é um atributo derivável da data de nascimento – Alguns valores podem ser derivados de entidades relacionadas • Exemplo: número de empregados de um departamento, calculado contando os empregados que estão alocados ao departamento • Armazenados – A data de nascimento é um atributo armazenado, ou seja, existe fisicamente no BD 14 Atributos • Valor nulo – Em alguns casos, o preenchimento de um atributo pode não ser aplicável ou mesmo ser opcional • Ex.: “complemento” em Endereço – Pode ser permitido o uso de valor nulo se o valor real de um atributo é desconhecido • Atributos complexos – É possível agrupar arbitrariamente atributos compostos e multivalorados – Isso permite criar combinações que podem ser úteis e complexas 15 Entidades • Tipo de entidade: um conjunto de entidades com os mesmos atributos – = classe de objetos • Conjunto de entidades: coleção de todas as entidades de determinado tipo de entidade existentes no BD – Geralmente usamos o mesmo nome do tipo de entidade para nos referirmos ao conjunto de entidades • Um tipo de entidade descreve o esquema para um conjunto de entidades que compartilham a mesma estrutura 16 Dois tipos de entidade, FUNCIONARIO e EMPRESA, e algumas entidades membro (instâncias) de cada uma 17 Entidades • Atributo chave – Consiste no estabelecimento de uma restrição de unicidade para um atributo – Assim, um atributo cujo valor tem que ser distinto para cada entidade individual na coleção pode ser usado para identificar a entidade de forma única – Exemplo: na entidade EMPRESA, o nome constitui um atributo chave, pois não é permitido que existam duas empresas com o mesmo nome – Às vezes vários atributos juntos formam uma chave, ou seja, é a combinação dos atributos que tem que ser distinta para cada entidade – Pode haver mais de um atributo chave – Se a entidade não possuir nenhum atributo chave ela é chamada de entidade fraca Tipos de atributos chave • Chave primária – Atributo ou combinação de atributos que possuem a propriedade de identificar de forma única uma linha da tabela. Corresponde a um atributo determinante – Não pode ser NULL – Simples • 1 único atributo é selecionado como chave primária, e não se repetirá no Banco de Dados – Composta • 2 ou mais atributos são selecionados como chave primária e este grupo não se repetirá no Banco de Dados • Chave estrangeira – Ocorre quando um atributo de uma relação for chave primária em outra relação. Em outras palavras sempre que houver o relacionamento 1:N entre duas tabelas, a tabela 1 receberá a chave primária e a tabela N receberá a chave estrangeira 18 Tipos de atributos chave • Chave candidata ou chave única – Ocorrem quando em uma relação existe mais de uma combinação de atributos possuindo a propriedade de identificação única. A chave candidata é apenas conceitual, ou seja, ela não é implementada – Exemplos: Matrícula, CPF, RG, Título de Eleitor, etc. • Superchave – Conjunto de um ou mais atributos que, tomando coletivamente, permite-nos identificar unicamente uma entidade no conjunto de entidades – Superchaves mínimas são chamadas de chaves candidatas, chaves únicas ou, simplesmente, chaves • Chave parcial – Permite a distinção entre atributos em uma entidade fraca 19 20 Chave primária, estrangeira, candidata ou única? 21 Conceitos do Modelo Relacional • Relações e tuplas – Uma relação (ouestado da relação) r do esquema de relação R(A1, A2, ..., An), também indicada por r(R) é um conjunto de n tuplas r = {t1, t2, ..., tn}. – Cada n tuplas t é uma lista ordenada de n valores t = <v1, v2, ..., vn>, em que cada valor vi, 1 ≤ i ≤ n, é um elemento pertencente a dom(Ai) ou é um valor especial nulo (NULL) • Valores NULL representam atributos cujos valores são desconhecidos ou não existem para alguma tupla individual – O i-ésimo valor na tupla t, que corresponde ao atributo Ai, é representado como t[Ai] ou t.Ai 22 Conceitos do Modelo Relacional • Outra definição para relação: – r(R) é uma relação matemática de grau n sobre os domínios dom(A1), dom(A2), ..., dom(An), que é um subconjunto do produto cartesiano dos domínios que definem R r(R) (dom(A1) x dom(A2) x ... x dom (An)) – O produto cartesiano especifica todas as combinações possíveis de valores dos domínios existentes 23 Conceitos do Modelo Relacional • De todas essas possíveis combinações, o estado atual da relação reflete apenas as tuplas válidas, que representam um determinado estado do mundo real em um determinado momento • Como o estado do mundo real se altera, então a relação também é alterada, se transformando em outro estado • É possível que diversos atributos compartilhem o mesmo domínio, porém estarão desempenhando papeis diferentes – Exemplo: atributos diferentes para telefone residencial e telefone comercial 24 Conceitos do Modelo Relacional • Características das relações – Ordenamento das tuplas: matematicamente, não existe ordenamento, porém na implementação (fisicamente) alguma ordem terá que ser estabelecida • É possível definir a relação estabelecendo pares (atributo, valor) – Valores nas tuplas: cada valor em uma tupla é atômico; não são permitidos atributos multivalorados ou compostos • Este é o pressuposto da primeira forma normal • Atributos multivalorados podem ser codificados em relações separadas • Mais recentemente vem sendo implementado o conceito de relações aninhadas – Valor nulo: podem existir diversos tipos (exemplo: valor desconhecido, não disponível, não se aplica, etc.), porém isso dificulta a implementação 25 26 Duas tuplas idênticas quando a ordenação dos atributos e dos valores não faz parte da definição de relação 27 Conceitos do Modelo Relacional • Interpretação de uma relação – O esquema de uma relação pode ser interpretado como uma declaração ou um tipo de afirmação (asserção) • Exemplo: o esquema da relação Aluno afirma que, em geral, uma entidade aluno tem um Nome, Cpf, Telefone_residencial, Endereco, Telefone_comercial, Idade e Media – Assim, cada tupla pode ser interpretada como um fato, uma determinada instância da afirmação • Exemplo: a primeira tupla afirma que existe um Aluno cujo Nome é Bruno Braga, o Cpf é 305.610.243-51, a Idade é 19, e assim por diante – Algumas relações podem representar fatos sobre entidades, enquanto outras podem representar fatos sobre relacionamentos 28 Restrições Relacionais • Um banco de dados típico contém diversas relações, cujas tuplas estão relacionadas de diversas maneiras • O estado do banco de dados corresponde ao conjunto dos estados das relações em um determinado instante • Restrições são regras derivadas do minimundo que o banco de dados representa 29 Restrições Relacionais • Categorias de restrições: – Inerentes ao modelo de dados, implícitas ou baseadas no modelo – Baseadas no esquema do banco de dados ou explícitas • Podem ser expressas usando o modelo • Especificadas usando a DDL no nível físico – Baseadas na aplicação, semânticas ou regras de negócio • Não podem ser expressas diretamente nos esquemas • Devem ser expressas e impostas pelos programas de aplicação • Existem ainda dependências de dados (funcionais e multivaloradas), que são a base dos testes de normalização 30 Restrições Relacionais • Vários tipos de restrições baseadas no esquema podem ser especificadas em um esquema de banco de dados relacional – Restrições de domínio – Restrições de chave – Restrições de integridade das entidades – Restrições de integridade referencial 31 Restrições Relacionais • Restrições de domínio – Em cada tupla, o valor de cada atributo deve ser um valor atômico pertencente ao domínio correspondente ao atributo – Tipos de dados associados a atributos: short int, int, long int, float, double, char, string, varchar, date, time, timestamp, money • Outros: extensões de tipos de dados e tipos enumerados – Mais informações vide Elmasri e Navathe 6ª ed. Capítulo 4 (SQL) 32 Restrições Relacionais • Restrições de chave – Por definição, todos os elementos de um conjunto são distintos – Portanto, todas as tuplas precisam ser distintas, ou seja, duas tuplas não podem ter a mesma combinação de valores para todos os seus atributos – É necessário que existam subconjuntos de atributos (SK) de modo que, para duas tuplas distintas quaisquer t1 e t2, se tenha a restrição t1[SK] != t2[SK] – SK é chamado de superchave do esquema da relação R, e a superchave especifica uma restrição de unicidade 33 Restrições Relacionais • Restrições de chave – Cada relação possui pelo menos uma superchave: o conjunto de todos os atributos – Uma superchave pode possuir atributos redundantes – Uma chave K de um esquema de relação R é uma superchave de R, porém a remoção de um atributo de K faz com que deixe de ser uma superchave • Portanto, uma chave, ou chave candidata é uma superchave mínima – Uma chave é determinada a partir do significado dos atributos, e sua propriedade deve ser invariável no tempo • Se há o risco de, em algum ponto no futuro, alguma tupla vir a repetir o valor da chave, então a chave é inválida 34 Esquemas de BD Relacionais • As restrições vistas até agora aplicam-se a relações simples e a esquemas de relações simples • No Banco de Dados como um todo, deve existir a garantia de que seu conteúdo esteja sempre íntegro e coerente • Definições importantes no contexto de BD relacionais – Um esquema de um BD relacional S é um conjunto de esquemas de relações S = {R1, R2, ..., Rm} e um conjunto de restrições de integridade RI – Um estado do banco de dados relacional BD de S é um conjunto de estados de relação BD = {r1, r2, ..., rm} tal que cada ri é um estado de Ri, e tal que os estados da relação ri satisfazem as restrições de integridade especificadas em RI 35 Esquemas de BD Relacionais • Traduzindo: – As restrições de integridade fazem parte do esquema do BD – Assume-se que as restrições de integridade são mantidas em todos os estados do banco de dados – O modelo relacional inclui as restrições de domínio, de chave (já vistas), de integridade das entidades e de integridade referencial (a seguir) – Restrições definidas pelo usuário são tratadas separadamente, e o SGBD não as garante sozinho; é necessário desenvolver código para cuidar delas • Exemplo: Esquema empregado/departamento/projeto e o estado do Banco de Dados relacional correspondente a esse esquema 36 Esquema empregado/departamento/projeto 37 Um estado do BD possível para o esquema anterior 38 Integridade, Integridade Referencial e chaves estrangeiras • Restrição de integridade da entidade – Nenhuma chave primária pode ter valor nulo (NULL) – Se isso fosse permitido, então estaríamos admitindo que existem tuplas que não conseguimos identificar – Se duas ou mais tuplas estiverem nesse estado, não conseguiremos distingui-las, violando a regra básica da chave primária 39 • Restrição de integridade referencial – Especificada entre duas relações – Utilizada para manter a consistência entretuplas nas duas relações – A regra informal é que uma tupla em uma relação que referencia outra relação precisa se referir a uma tupla existente naquela relação • Exemplo: O atributo Dnr de FUNCIONARIO fornece o número de departamento para o qual cada funcionário trabalha – Seu valor em cada tupla FUNCIONARIO precisa combinar com o valor Dnumero de alguma tupla na relação DEPARTAMENTO Integridade, Integridade Referencial e chaves estrangeiras 40 • Para formalizar a definição da restrição de integridade referencial, é necessário primeiro definir chave estrangeira (foreign key, FK ou ChE) • Um conjunto de atributos FK no esquema da relação R1 é uma chave estrangeira de R1 que referencia uma relação R2 se ele satisfizer às seguintes regras: 1. Os atributos em FK possuem o(s) mesmo(s) domínio(s) que os atributos da chave primária PK • Os atributos FK referenciam ou se referem à relação R2 2. Um valor de FK em uma tupla t1 do estado atual r1(R1) ocorre como um valor de PK para alguma tupla t2 no estado corrente r2(R2), ou é nulo • Se FK não for nulo, então temos t1[FK] = t2[PK], e diz-se que a tupla t1 referencia ou se refere à tupla t2. • R1 é chamada de relação referenciadora e R2 de relação referenciada Integridade, Integridade Referencial e chaves estrangeiras 41 • Em um BD com muitas relações, é provável que existam diversas restrições de integridade referencial • As restrições de integridade referencial geralmente são definidas a partir dos relacionamentos entre as entidades no esquema conceitual • Observe que uma chave estrangeira pode se referir à sua própria relação – Ex.: Cpf_supervisor em FUNCIONARIO se refere a um supervisor de um empregado, portanto ao atributo Cpf da própria relação FUNCIONARIO • O diagrama do esquema relacional pode indicar as restrições de integridade referencial Integridade, Integridade Referencial e chaves estrangeiras 42 Restrições de integridade referencial exibidas no esquema de um Banco de Dados relacional EMPRESA 43 • Todas as restrições de integridade devem ser especificadas no esquema do banco de dados relacional se quisermos que o SGBD as implemente • As restrições são especificadas usando a DDL • A maioria dos SGBDs relacionais admite restrições de integridade de entidades e restrições de chave, e possui recursos para suportar a integridade referencial Integridade, Integridade Referencial e chaves estrangeiras 44 • Restrições de integridade semântica – São definidas de acordo com o problema, e portanto não correspondem a uma situação genérica, como nas restrições vistas até agora • Exemplos: – “O número máximo de horas mensais por projeto para cada empregado é de 100 horas” – “O salário de um funcionário não deve ser superior ao salário de seu supervisor” – São definidas usando uma linguagem de especificação de restrições, ou mecanismos como gatilhos (triggers) e afirmações (assertivas ou assertions) • Em SQL, os comandos CREATE ASSERTION e CREATE TRIGGER são usados para esse fim Outros tipos de restrições 45 Outros tipos de restrições • Dependência funcional – Especifica que o valor de X determina um valor exclusivo de Y em todos os estados de uma relação (vide Elmasri e Navathe, 6ª edição, Capítulos 15 e 16) • Restrições de estado – Definem as restrições às quais um estado válido do BD precisa satisfazer – São as restrições discutidas até aqui • Restrições de transição – Definem regras para a alteração do estado do banco de dados – São especificadas usando regras ativas e triggers (vide Elmasri e Navathe, 6ª edição, Seção 26.1) • Exemplo: “o salário de um empregado só pode aumentar” 46 Operações de Atualização • Existem duas classes de operações no modelo relacional: operações de recuperação e operações de atualização • As operações de atualização precisam ser aplicadas sem violar a integridade do banco de dados – Inserir (INSERT) – Excluir (DELETE) – Alterar ou Modificar (UPDATE) • Existem políticas que devem ser adotadas para definir o comportamento do SGBD para garantir a integridade do banco em operações de atualização 47 Operações de Atualização • É necessário garantir, em cada operação, que o estado do banco de dados continue válido • Alternativas para ação em caso de tentativa de violação de alguma restrição: – Rejeitar a operação – Tentar corrigir o motivo da violação • Neste caso, a correção pode também esbarrar em alguma outra restrição • Pode ser necessário definir uma política geral para essas tentativas de correção, dependendo da situação 48 Operação INSERT • INSERT fornece uma lista de atributos para uma nova tupla t que está sendo inserida em uma relação R • Inserir pode violar qualquer um dos tipos de restrição – Domínio: violada se algum atributo não estiver contido no domínio definido – Chave: violada se o valor já existir em outra tupla – Entidade: violada se o valor da chave primária for nulo – Integridade referencial: violada se o valor de alguma chave estrangeira em t se referir a uma tupla não existente na outra relação 49 Operação INSERT • Em caso de violação de restrições, a ação default é rejeitar a inserção • Existe a possibilidade de tentar corrigir o motivo da rejeição da inserção, porém isso não é usual – Exemplo de violação da integridade referencial: pode ser disparada uma inserção na tabela referenciada de modo a eliminar a causa do problema; essa inserção pode violar a integridade referencial com outras tabelas, em cascata – Exemplo: ao constatar uma violação, o SGBD poderia solicitar ao usuário que preenchesse algum campo onde nulo não fosse permitido 50 Operação DELETE • A operação DELETE é (obviamente) usada para excluir tuplas • A única restrição de integridade que a operação DELETE pode violar é a integridade referencial – Isso ocorre quando a tupla que está sendo excluída é referenciada por chaves estrangeiras em outras tuplas no BD • Para determinar qual(is) a(s) tupla(s) a excluir, é usada uma condição 51 Operação DELETE • Existem três comportamentos possíveis quando uma operação de exclusão causa uma violação da integridade: – Restrict: Rejeitar a exclusão – Cascade: Propagar a exclusão (provocar um efeito cascata), excluindo todas as tuplas que referenciam a tupla escolhida – Set NULL ou Set default: Modificar os valores dos atributos referenciados que causam a violação, por exemplo substituindo-os por nulo ou fazendo com que referenciem uma tupla válida • Naturalmente, se o atributo referenciado for parte da chave primária ele não poderá ser alterado para nulo • Conforme o caso, pode-se combinar esses comportamentos • O SGBD deve permitir a especificação do comportamento desejado em caso de violação de integridade 52 Operação UPDATE • A operação de atualização ou modificação (UPDATE) serve para alterar os valores de um ou mais atributos em uma ou mais tuplas de alguma relação R • É necessário especificar uma condição para indicar que tuplas devem ser alteradas • As seguintes violações podem ser causadas: – Domínio: idem a INSERT – Chave e Entidade: modificar o valor de uma chave primária é equivalente a excluir uma tupla e incluir outra; nisso, as restrições e problemas de INSERT e DELETE têm que ser observadas – Integridade referencial: possivelmente violada se algum atributo de chave estrangeira for alterado; o SGBD deve garantir que o novo valor se refira a algum valor existente na relação referenciada 53 Bibliografia • Capítulo 3: Elsmari Ramez; Navathe Shamkant B. Sistemas de Banco de Dados – Fundamentos e Aplicações. 6 ed. Pearson, São Paulo, 2011. • Date, C.J. Introdução a Sistema de Bancode Dados. 7 ed. Campus, Rio de Janeiro, 2000.
Compartilhar