• Nenhum resultado encontrado

Cap05

N/A
N/A
Protected

Academic year: 2021

Share "Cap05"

Copied!
43
0
0

Texto

(1)

Bancos de Dados

(2)

O Modelo Relacional

• O modelo de dados relacional foi introduzido por Codd em

1970 através de um artigo acadêmico

• A base é o conceito de relação da matemática (teoria de

conjuntos e lógica de predicados de primeira ordem)

• Sua simplicidade e eficiência garantiram a ele amplo

predomínio nos sistemas comerciais atuais

• Este capítulo traz:

– Características básicas do modelo – Restrições e sua definição

(3)

Conceitos do Modelo Relacional

• Domínio

– Um domínio D é um conjunto de valores atômicos – Por atômico entende-se indivisível

– A definição do domínio pode começar com a especificação de um tipo de dado

– Exemplos

• Telefones_Nacionais: até 12 dígitos numéricos; tem que ser um telefone válido

• Idade: inteiro positivo entre 0 e 99

• CPF_Valido: 11 dígitos numéricos, sendo que os últimos 2 obedecem à regra de dígito verificador

(4)

Conceitos do Modelo Relacional

• Domínio (cont)

– Um tipo ou formato de dado pode também ser especificado para cada domínio

– Exemplo: Telefones_nacionais: (0dddd)dddd-dddd, onde d=[0-9]

– Informações adicionais podem ser necessárias para caracterizar o domínio. Ex.: altura de uma pessoa definida em metros (valor real) ou centímetros (valor inteiro)

(5)

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, Endereço, Idade, numMatrícula)

(6)

Conceitos do Modelo Relacional

• 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: seqüê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é 12 dígitos numéricos; tem que ser um telefone válido

(7)

Conceitos do Modelo Relacional

• Relações e tuplas

– Uma relação (ou estado da relação) r de um esquema de relação R(A1, A2, ..., An), também representada por r(R) é um conjunto de

n-tuplas r = {t1, t2, ..., tn}.

– Cada tupla ti é uma lista ordenada de n valores t = <v1, v2, ..., vn>, onde cada valor vi é um elemento pertencente a dom(Ai), ou um valor especial chamado nulo

– O i-ésimo valor na tupla t, que corresponde ao atributo Ai, é representado como t[Ai]

(8)
(9)

Conceitos do Modelo Relacional

• Outra definição para relação:

– r(R) é uma relação matemática de grau n nos domínios dom(A1), dom(A2), ..., dom(An), que é um subconjunto do produto cartesiano dos domínios que definem R

– O produto cartesiano gera todas as possíveis combinações de valores dos domínios existentes

– Se representa a cardinalidade do domínio, então o número total de possíveis tuplas diferentes é

))

(

)

(

)

(

(

)

(

R

dom

A

1

dom

A

2

dom

A

n

r

×

×

K

×

)

(

)

(

)

(

A

1

dom

A

2

dom

A

n

dom

K

) (Ai dom

(10)

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 papéis diferentes

– Ex.: atributos diferentes para telefone residencial e telefone comercial

(11)

Conceitos do Modelo Relacional

• Características das relações

– Ordenamento das tuplas: matematicamente, não existe

ordenamento, porém na implementação 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 (ex: não disponível, não se aplica, etc.), porém isso dificulta a implementação

(12)
(13)
(14)

Conceitos do Modelo Relacional

• Interpretação de uma relação

– O esquema de uma relação pode ser interpretado como uma

afirmação (assertion): cada aluno possui nome, CPF, endereço,

telefone e número de matrícula

– Assim, cada tupla pode ser interpretada como um fato, uma determinada instância da afirmação

– Algumas relações podem representar fatos sobre entidades, enquanto outras podem representar fatos sobre relacionamentos

(15)

Conceitos do Modelo Relacional

• Notação do modelo relacional, resumo

(16)

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 mundo real e que atuam

sobre os valores armazenados no BD

(17)

Restrições Relacionais

• Categorias de restrições:

– Inerentes ao modelo de dados

– Baseadas no esquema do banco de dados

• Podem ser expressas usando o modelo

• Especificadas usando a DDL no nível físico

– Restrições da aplicação

• não podem ser expressas diretamente nos esquemas • são implementadas nos programas da aplicação

• Existem ainda dependências de dados (funcionais e

(18)

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

(19)

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

(20)

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

(21)

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 é 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

(22)

Restrições Relacionais

• Restrições de chave

– Um esquema de uma relação pode possuir mais de uma chave – Nesse caso, cada uma das chaves é denominada chave candidata – É usual designar uma das chaves como chave primária da relação

• Restrições em nulo

– Pode-se definir se valores nulos são ou não permitidos em um dado atributo

(23)
(24)

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

(25)

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 fig.

5.5 e estado válido fig. 5.6.

(26)
(27)
(28)

Mais Restrições Relacionais

• Restrição de integridade da entidade

– Nenhuma chave primária pode ter valor nulo

– 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 distinguí-las, violando a regra básica da chave primária

(29)

Mais Restrições Relacionais

• Restrição de integridade referencial

– Especificada entre duas relações

– Utilizada para manter a consistência entre tuplas dessas duas relações

– A regra informal é que uma tupla em uma relação que se refere a outra relação deve corresponder a uma tupla existente naquela relação

• Ex: em EMPREGADO existe um atributo NUD; o valor de NUD em cada tupla de EMPREGADO deve coincidir com um valor de

(30)

Mais Restrições Relacionais

• Para formalizar a definição da restrição de integridade

referencial, é necessário primeiro definir chave estrangeira

(foreign key)

• Um conjunto de atributos FK no esquema da relação R

1

é

uma chave estrangeira de R

1

que referencia uma relação

R

2

se ele satisfizer às seguintes regras:

– 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

– Um valor de FK em uma tupla t1 do estado corrente 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.

(31)

Mais Restrições Relacionais

• 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.: NSSUPER em EMPREGADO se refere a um empregado, portanto ao atributo NSS da própria relação EMPREGADO

• O diagrama do esquema relacional pode indicar as

restrições de integridade referencial (fig. 5.7)

(32)
(33)

Mais Restrições Relacionais

• 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 SGBD suporta restrições de integridade de

entidades e restrições de chave, e possui recursos para

suportar a integridade referencial

(34)

Mais Restrições Relacionais

• 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

• Exemplo: “o número máximo de horas mensais por projeto para cada empregado é de 100 horas”

– São definidas usando uma linguagem de especificação de

restrições, ou mecanismos como gatilhos (triggers) e declarações

(35)

Mais Restrições Relacionais

• Outra classificação de restrições:

– Restrições de estado: definem as condições que devem ser atendidas em cada estado válido do banco de dados

– 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 EN cap. 23) • Exemplo: “o salário de um empregado só pode aumentar”

(36)

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 (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

(37)

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

(38)

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

(39)

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

– Ex.: 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

– Ex.: ao constatar uma violação, o SGBD poderia solicitar ao usuário que preenchesse algum campo onde nulo não fosse permitido

(40)

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

(41)

Operação DELETE

• Existem três comportamentos possíveis quando uma operação de exclusão causa uma violação da integridade:

– Rejeitar a exclusão

– Propagar a exclusão (provocar um efeito cascata), excluindo todas as tuplas que referenciam a tupla escolhida

– 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

(42)

Operação UPDATE

• A operação de atualizaçã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

(43)

Referências

• Capítulo 5 de Elmasri & Navathe

• Codd’s 12 Rules

Referências

Documentos relacionados

Com relação ao CEETEPS, o tema desta dissertação é interessante por se inserir no Programa de Educação de Jovens e Adultos (PROEJA), sob a tutela da Coordenação de

balho que vise a um levantamento da literatura em nosso Es­ tado, tanto pelo número de escritores que arregimentou, como pelo fato de originar, mais tarde, a

comemorativos são tradicionais desde a inauguração do restaurante, há 15 anos Opção com estadia no Hotel Mercure Lourdes Belo Horizonte tem preço especial - Fotos: Paulo Cunha /

O processo de transformação bacteriana utilizada na Biologia Molecular ocorre in vitro, e pode ser afetado pelo tamanho e conformação da molécula de DNA a ser introduzida na

A impressão é que tanto na cúpula da FUNAI como no próprio Ministério do Interior, poucos entendem do problema indígena e menos ainda das medidas a decruadas para a sua

“De outra parte, em se tratando de arguição de negativa de prestação jurisdicional, o prequestionamento tem de estar revelado nos embargos de declaração, ou seja, a parte

 Alguns transportadores transportadores das das classes classes anteriores, anteriores, entre entre os os quais quais o o de de correia, o helicoidal e o de

A Tabela 3 apresenta os parâmetros de perda de cocção, volume específico, dureza, atividade de água (Aa) e escore total para o pão controle e para os pães adicionados de mucilagem