Você está na página 1de 65

Restrições em modelo relacional

1
Prof. Igor negreiros

Faculdades Cearenses 09/04/2018


Geralmente no BD relacional haverá muitas relações
As tuplas dessas relações relacionam-se de várias
maneiras
O estado do BD inteiro corresponde aos estados de
todas as suas relações em determinado ponto no
tempo
Existem muitas restrições (constraints) sobre os valores
reais em um estado do banco de dados

Faculdades Cearenses 09/04/2018 2


A DDL inclui meios para especificar os diversos tipos de
restrições
O SGBD pode impô-las automaticamente
A maioria dos SGBD’s admitem restrições de chave,
integridade de entidade e integridade referencial

Faculdades Cearenses 09/04/2018 3


Restrições Implícitas
Restrições inerentes baseadas no modelo
Restrições Explícitas
Restrições em esquema
Expressas diretamente do modelo de dados
DDL
Restrições Semânticas
Baseadas na aplicação
Conhecidas como regras de negócio
Expressas e impostas pelos programas de aplicação

Faculdades Cearenses 09/04/2018 4


Restrições Implícitas
Inerentes do modelo relacional
Ex.: Uma relação não pode ter tuplas duplicadas

Restrições Explícitas
Expressa no esquema do modelo relacional por meio da DDL
Restrições Semânticas
Mais gerais e difíceis de expressar e impor
Relação com o significado e o comportamento dos atributos
Verificadas nos programas de aplicação

Faculdades Cearenses 09/04/2018 5


Restrições baseadas em esquema (explícitas)
Restrições de domínio
Restrições de chave
Restrições sobre NULL’s
Restrições de integridade de entidade
Restrições de integridade referencial

Faculdades Cearenses 09/04/2018 6


Restrições de domínio
Dentro de cada tupla o valor de cada atributo A deve ser
um valor indivisível do domínio 𝑑𝑜𝑚(𝐴)
Padrões inteiros (SHORT INTEGER, INTEGER, LONG
INTEGER)
Números reais (FLOAT e DOUBLE)
Booleanos
Cadeia de caracteres (tamanho fixo e variável)
Data e hora
Moeda

Faculdades Cearenses 09/04/2018 7


Restrições de chave
Relação
Conjunto de tuplas
Todos os elementos de um conjunto são distintos
Todas as tuplas de uma relação tem que ser distintas
Duas tuplas não podem ter a mesma combinação de valores
para todos os seus atributos

Faculdades Cearenses 09/04/2018 8


Restrições de chave
Existe um subconjunto de atributos de um esquema de
relação R onde duas tuplas, em qualquer estado de
relação r de R, não deverão ter a mesma combinação de
valores para estes atributos
SCh – Subconjunto de atributos
𝑡1 [𝑆𝐶ℎ]≠𝑡2 [𝑆𝐶ℎ]

Faculdades Cearenses 09/04/2018 9


Restrições de chave
𝑡1 [𝑆𝐶ℎ]≠𝑡2 [𝑆𝐶ℎ]
Qualquer conjunto de atributos SCh é chamado de
superchave do esquema de relação R
Restrição de exclusividade
Cada relação tem pelo menos uma superchave padrão
O conjunto de todos os seus atributos

Faculdades Cearenses 09/04/2018 10


Restrições de chave
Chave (Ch) de um esquema de relação R
É uma superchave de R
A remoção de qualquer atributo da Ch faz com que este
novo conjunto deixe de ser uma superchave de R

Faculdades Cearenses 09/04/2018 11


Restrições de chave
Propriedade da chave:
1. Restrição de Exclusividade
Duas tuplas distintas em qualquer estado da relação não
podem ter valores idênticos para os atributos na chave
2. Superchave mínima
É uma superchave que não pode-se remover nenhum
atributo sem manter a restrição de exclusividade
A primeira propriedade aplica-se a chaves e superchaves
A segunda propriedade é exigida apenas para chaves

Faculdades Cearenses 09/04/2018 12


Restrições de chave
Uma chave também é superchave, mas não o contrário
Ex.: O conjunto de atributos {Cpf} é chave de ALUNO
Qualquer conjunto de atributos que inclua o Cpf é superchave
{Cpf, Nome, Idade}

Faculdades Cearenses 09/04/2018 13


Restrições de chave
Chave com múltiplos atributos
Todos os seus atributos juntos tenham a propriedade de
exclusividade
A chave é determinada baseada no significado dos
atributos
Invariável no tempo
Necessita permanecer verdadeira ao inserir novas tuplas na
relação

Faculdades Cearenses 09/04/2018 14


Restrições de chave
Chave primária: Contém os atributos necessários para
identificar tuplas na relação
Chave candidata: Uma relação pode ter mais de uma chave
Designa-se uma das chaves candidatas como chave
primária
Por convenção, os atributos que formam a chave primária
são sublinhados

Faculdades Cearenses 09/04/2018 15


Restrições de chave
Quando existem várias chaves candidatas realiza-se a
escolha da chave primária
Preferência àquelas chaves com um único atributo ou um
menor número de atributos
O restante das chaves candidatas são então denominadas de
chaves únicas (unique Keys)

Faculdades Cearenses 09/04/2018 16


Restrições de chave
Ex.: O esquema CARRO tem duas chaves candidatas
Placa e Numero_chassi

Faculdades Cearenses 09/04/2018 17


Restrições sobre valores NULL
Especifica se valores nulos são permitidos ou não
Ex.: Se na relação ALUNO o atributo Nome precisa ter um
valor válido, diferente de nulo, então Nome de ALUNO é
restrito a ser NOT NULL

Faculdades Cearenses 09/04/2018 18


Esquema de BD relacional
𝑆={𝑅1 , 𝑅2 , … , 𝑅𝑚 }
Conjunto de restrições de integridade RI
Estado de BD relacional
𝐷𝐵={𝑟1 , 𝑟2 , … , 𝑟𝑚 }
Cada 𝑟𝑖 é um estado de 𝑅1 e satisfazem as restrições
especificadas em RI

Faculdades Cearenses 09/04/2018 19


EMPRESA = {FUNCIONARIO, DEPARTAMENTO,
LOCALIZACAO_DEP, PROJETO, TRABALHA_EM, DEPENDENTE }

Faculdades Cearenses 09/04/2018 20


Número de um departamento do mundo real
Dnumero
DEPARTAMENTO e LOCALIZACAO_DEP
Dnr
FUNCIONARIO
Dnum
PROJETO

Faculdades Cearenses 09/04/2018 21


Atributos que representam conceitos iguais podem ou
não ter nomes idênticos em diferentes relações
Atributos que representam conceitos diferentes podem
ter ou não o mesmo nome em diferentes relações
Ex.: O nome de atributo Nome para Projnome de
PROJETO e Dnome de DEPARTAMENTO

Faculdades Cearenses 09/04/2018 22


Manter consistência entre tuplas entre duas relações
Ex.: O atributo Dnr de FUNCIONARIO necessita combinar
com o valor Dnumero de DEPARTAMENTO

Faculdades Cearenses 09/04/2018 23


Chave estrangeira (𝐶ℎ𝐸- Foreign key)
Em esquemas de relação 𝑅1 e 𝑅2 , um conjunto de atributos 𝐶ℎ𝐸 no
esquema de relação 𝑅1 é uma chave estrangeria de 𝑅1 que
referencia a relação 𝑅2 se:
Os atributos em 𝐶ℎ𝐸 têm o mesmo domínio que os atributos da chave
primária 𝐶ℎ𝑃 de 𝑅2
Os atributos 𝐶ℎ𝐸 referenciam ou referem-se à relação 𝑅2
O valor em 𝐶ℎ𝐸 em uma tupla 𝑡1 do estado atual 𝑟1 (𝑅1 ) ocorre como
um valor de 𝐶ℎ𝐸 para alguma tupla 𝑡2 no estado atual 𝑟2 (𝑅2 ) ou é NULL
𝑡1 [𝐶ℎ𝐸]=𝑡2 [𝐶ℎ𝑃]
A tupla 𝑡1 referencia ou refere-se à tupla 𝑡2

Faculdades Cearenses 09/04/2018 24


Chave estrangeira (𝐶ℎ𝐸- Foreign key)
𝑅1 é chamada de relação de referência e 𝑅2 é a relação
referenciada
Restrição de integridade referencial de 𝑅1 em 𝑅2
Relacionamento entre entidades representadas pelos
esquemas de relação
Dnr é chave estrangeira de FUNCIONARIO que referencia a
relação DEPARTAMENTO (Dnumero)

Faculdades Cearenses 09/04/2018 25


Chave estrangeira (𝐶ℎ𝐸- Foreign key)
Uma chave estrangeira pode se referir a sua própria relação
Ex.: Cpf_supervisor em FUNCIONARIO – Outro funcionário
representando uma tupla na relação FUNCIONARIO

Faculdades Cearenses 09/04/2018 26


Chave estrangeira (𝐶ℎ𝐸- Foreign key)
Ex.:Cpf_supervisor é uma chave estrangeira que referencia a
própria relação FUNCIONARIO
O funcionário “João Silva” referencia o funcionário “Fernando
Wong”

Faculdades Cearenses 09/04/2018 27


Arco direcionado de cada
chave estrangeira para a
relação que ela referencia

Faculdades Cearenses 09/04/2018 28


Restrições de integridade semântica
Ex.: “O salário de um funcionário não deve ser superior ao
salário de seu supervisor”, “O número máximo de horas que
um funcionário pode trabalhar em todos os projetos por
semana é 56”
Especificadas e impostas em programas de aplicação ou
usando uma linguagem de especificação de restrição
Triggres (gatilhos) - CREATE TRIGGER (SQL)
Assertions (afirmações) - CREATE ASSERTION (SQL)

Faculdades Cearenses 09/04/2018 29


Dependência funcional
Estabelece um relacionamento funcional entre dois conjuntos
de atributos X e Y
Um valor X determina um valor exclusivo de Y em todos os
estados de uma relação 𝑋→𝑌
Analisar a qualidade dos projetos relacionais e normalizar
relações para melhorar a qualidade

Faculdades Cearenses 09/04/2018 30


Restrições de estado
Definem restrições às quais um estado válido do BD precisa
satisfazer
Restrições de transição
Lidar com mudanças de um estado no BD
Ex.: “O salário do funcionário só pode aumentar”
Costumam ser impostas pelo programa de aplicação ou
especificadas usando regras ativas e triggers

Faculdades Cearenses 09/04/2018 31


Categorização das operações do modelo relacional
Recuperações
Atualizações
Álgebra relacional
Expressão da álgebra relacional que forma uma nova relação
após a aplicação de uma série de operadores algébricos a um
conjunto existente de relações
Consultar o BD a fim de recuperar informações

Faculdades Cearenses 09/04/2018 32


Álgebra relacional
Formulação da consulta que especifica os dados de interesse
Uma nova relação é formada aplicando os operadores
relacionais para recuperar esses dados
Relação resultado
Resposta para a consulta
Cálculo relacional
Definir a nova relação de forma declarativa sem dar uma
ordem específica das operações

Faculdades Cearenses 09/04/2018 33


Três operações básicas para mudar os estados das
relações no BD
Sempre que aplicadas, as restrições de integridade
especificadas sobre o esquema não devem ser violadas
Comando Descrição SQL
Inserir Inserir novos dados INSERT
Excluir Excluir dados antigos DELETE
Alterar Modificar dados existentes UPDATE
Faculdades Cearenses 09/04/2018 34
Valores dos atributos para que uma nova tupla t possa ser
inserida em uma relação R
Violação de restrições
Ao inserir uma nova tupla, esta pode violar diversas
restrições
Se a inserção violar uma ou mais restrições, deve-se rejeitar a
inserção
Pode-se tentar corrigir o motivo da rejeição da inserção

Faculdades Cearenses 09/04/2018 35


Restrições de domínio
Valor do atributo não aparece no domínio correspondente
Restrições de chave
Existência da nova tupla t em outra tupla na relação 𝑟(𝑅)
Integridade de entidade
Qualquer parte da chave primária da nova tupla t for NULL
Integridade referencial
O valor da chave estrangeira se referir a uma tupla que não existe
na relação referenciada

Faculdades Cearenses 09/04/2018 36


Inserir <'Cecilia', 'F', 'Ribeiro', NULL, '05-04-1960', 'Rua
Esmeraldas, 35, Bueno Brandão,MG', F, 28.000, NULL, 4> em
FUNCIONARIO

Faculdades Cearenses 09/04/2018 37


Inserir <'Cecilia', 'F', 'Ribeiro', NULL, '05-04-1960', 'Rua
Esmeraldas, 35, Bueno Brandão,MG', F, 28.000, NULL, 4> em
FUNCIONARIO

Resultado: Esta inserção viola a restrição de integridade de


entidade (NULL para a chave primária Cpf), de modo que é
rejeitada

Faculdades Cearenses 09/04/2018 38


Inserir <'Alice', ‘J', 'Zelaya ', '99988777767', '05-04-1960', 'Rua
Souza Lima, 35, Curitiba, PR', F, 28.000, '98765432168', 4> em
FUNCIONARIO

Faculdades Cearenses 09/04/2018 39


Inserir <'Alice', ‘J', 'Zelaya ', '99988777767', '05-04-1960', 'Rua
Souza Lima, 35, Curitiba, PR', F, 28.000, '98765432168', 4> em
FUNCIONARIO

Resultado: Esta inserção viola a restrição de chave porque outra


tupla com o mesmo valor de Cpf já existe na relação
FUNCIONARIO, e, portanto, é rejeitada

Faculdades Cearenses 09/04/2018 40


Inserir <'Cecilia', 'F', 'Ribeiro', '67767898976', '05-04-1960', 'Rua
Esmeraldas, 35, Bueno Brandão, MG', F, 28.000, '98765432168', 7>
em FUNCIONARIO

Faculdades Cearenses 09/04/2018 41


Inserir <'Cecilia', 'F', 'Ribeiro', '67767898976', '05-04-1960', 'Rua
Esmeraldas, 35, Bueno Brandão, MG', F, 28.000, '98765432168', 7>
em FUNCIONARIO

Resultado: Esta inserção viola a restrição de integridade


referencial especificada sobre Dnr em FUNCIONARIO porque
não existe uma tupla referenciada correspondente em
DEPARTAMENTO com Dnumero = 7

Faculdades Cearenses 09/04/2018 42


Inserir <' Cecilia', 'F', 'Ribeiro', '67767898976', '05-04-1960', 'Rua
Esmeraldas, 35, Bueno Brandão, MG', F, 28.000, NULL, 4> em
FUNCIONARIO

Faculdades Cearenses 09/04/2018 43


Inserir <' Cecilia', 'F', 'Ribeiro', '67767898976', '05-04-1960', 'Rua
Esmeraldas, 35, Bueno Brandão, MG', F, 28.000, NULL, 4> em
FUNCIONARIO

Resultado: Esta inserção satisfaz todas as restrições, de modo


que é aceitável

Faculdades Cearenses 09/04/2018 44


Pode violar apenas a restrição de integridade referencial
Se a tupla excluída for referenciada por chaves estrangerias
de outras tuplas no BD

Faculdades Cearenses 09/04/2018 45


Excluir a tupla em TRABALHA_EM com Fcpf = '99988777767' e
Pnr = 10

Faculdades Cearenses 09/04/2018 46


Excluir a tupla em TRABALHA_EM com Fcpf = '99988777767' e
Pnr = 10

Resultado: Esta exclusão é aceitável e exclui exatamente uma


tupla

Faculdades Cearenses 09/04/2018 47


Excluir a tupla em FUNCIONARIO com Cpf = '99988777767'

Faculdades Cearenses 09/04/2018 48


Excluir a tupla em FUNCIONARIO com Cpf = '99988777767'

Resultado: Esta exclusão não é aceitável, pois existem tuplas


em TRABALHA_EM que se referenciam a esta tupla. Logo, se a
tupla em FUNCIONARIO for excluída, haverá violações de
integridade referencial

Faculdades Cearenses 09/04/2018 49


Excluir a tupla em FUNCIONARIO com Cpf = '33344555587'

Faculdades Cearenses 09/04/2018 50


Excluir a tupla em FUNCIONARIO com Cpf = '33344555587‘

Resultado: Esta exclusão resultará em ainda mais violações de


integridade referencial, pois a tupla envolvida é referenciada
por tuplas das relações FUNCIONARIO, DEPARTAMENTO,
TRABALHA_EM e DEPENDENTE

Faculdades Cearenses 09/04/2018 51


Opções caso uma operação cause uma violação da
restrição de integridade referencial
RESTRICT – Rejeitar a exclusão (Padrão)
CASCADE – Tentar propagar (gerar em cascata) a exclusão
excluindo tuplas que referenciam aquela que está sendo
excluída
SET NULL (SET DEFAUT) – Modificar os valores de atributo
que referenciam a causa da violação.
Definido como nulo ou alterado para referenciar um valor válido

Faculdades Cearenses 09/04/2018 52


Opções caso uma operação cause uma violação da
restrição de integridade referencial
Há possibilidade da combinação dessas três opções
Excluir automaticamente todas as tuplas de TRABALHA_EM e
DEPENDENTE com Fcpf = “3334455587”
As tuplas em FUNCIONARIO com o Cpf_supervisor e em
DEPARTAMENTO com Cpf_gerente = “3334455587” podem ter
seus valores (Cpf_supervisor e Cpf_gerente) alterados para
outros valores válidos ou para NULL

Faculdades Cearenses 09/04/2018 53


Necessário especificar uma condição sobre atributos da
relação para selecionar as tuplas a serem modificadas
Pode violar as mesmas restrições das operações INSERIR e
EXCLUIR
Restrições de domínio
Restrições de chave
Integridade de entidade
Integridade referencial

Faculdades Cearenses 09/04/2018 54


Alterar o salário da tupla em FUNCIONARIO com Fcpf =
'99988777767' para 28.000,00

Faculdades Cearenses 09/04/2018 55


Alterar o salário da tupla em FUNCIONARIO com Fcpf =
'99988777767' para 28.000,00

Resultado: Esta alteração é aceitável

Faculdades Cearenses 09/04/2018 56


Alterar o Dnr da tupla em FUNCIONARIO com Fcpf =
'99988777767' para 1

Faculdades Cearenses 09/04/2018 57


Alterar o Dnr da tupla em FUNCIONARIO com Fcpf =
'99988777767' para 1

Resultado: Esta alteração é aceitável

Faculdades Cearenses 09/04/2018 58


Alterar o Dnr da tupla em FUNCIONARIO com Fcpf =
'99988777767' para 7

Faculdades Cearenses 09/04/2018 59


Alterar o Dnr da tupla em FUNCIONARIO com Fcpf =
'99988777767' para 7

Resultado: Inaceitável, pois viola a integridade referencial

Faculdades Cearenses 09/04/2018 60


Alterar o Cpf da tupla em FUNCIONARIO com Fcpf =
'99988777767' para ‘987654432168’

Faculdades Cearenses 09/04/2018 61


Alterar o Cpf da tupla em FUNCIONARIO com Fcpf =
'99988777767' para ‘987654432168’

Resultado: Inaceitável, pois viola a restrição de chave


primária ao inserir um valor que já existe na relação. Viola
as restrições de integridade referencial porque existem
outras relações que se referem ao valor existente de Cpf

Faculdades Cearenses 09/04/2018 62


Atualizar um campo que não faz parte de uma chave
primária nem de uma chave estrangeira, em geral, não
causa problemas
Necessidade de verificar se o tipo de dado e o domínio são
corretos
A operação ALTERAR é semelhante a excluir uma tupla e
inserir outra em seu lugar

Faculdades Cearenses 09/04/2018 63


Programa de aplicação de bando de dados que
normalmente executa transações
Programa em execução que inclui algumas operações de
BD (leitura, inserir, excluir, ...)
Ao finalizar uma transação é necessário deixar o BD em um
estado válido
Satisfazer todas as restrições especificadas no esquema

Faculdades Cearenses 09/04/2018 64


Essas recuperações e atualizações juntas formam um
unidade atômica de trabalho no BD
Ex.: Transação para aplicar um saque bancário
Ler o registro da conta do usuário
Validar a senha
.....
Verificar se existe saldo suficiente
Atualizar o registro pelo valor do saque

Faculdades Cearenses 09/04/2018 65

Você também pode gostar