COMPUTADORES
Disciplina: Fundamentos de Banco de Dados
Professor: Henrique Leito
Resumo
Captulo 3 (O modelo de dados relacional e as restries em banco de dados relacionais)
Livro Sistemas de banco de dados /Ramez Elmasri e Shamkant B. Navathe 6 ed. So
Paulo : Pearson Addison Wesley, 2011.
Introduo
O modelo relacional foi introduzido por Ted Codd, da IBM Research, em 1970 e
atraiu ateno imediata por ser simples e ter base matemtica, fazendo uso de relaes
matemticas como bloco de montagem bsico e da teoria de conjuntos e lgica de predicado
como base terica.
Na dcada de 1980, surgiram as primeiras implementaes comerciais do modelo
relacional, como o SGBD da Oracle, e desde ento o modelo foi implementado em grande
quantidade de sistemas comerciais. Os SGBDs relacionais mais populares atualmente so
DB2 e Informix Dynamic Server, o Oracle e Rbd, o Sybase SGBD e o SQLServer e Access.
Existem ainda os de cdigo aberto como o MySQL e o PostgreSQL.
Os modelos que precederam o relacional so o modelo hierrquico e de rede, os quais
foram propostos na dcada de 1960 e implementados nos primeiros SGBDs. Eles ficaram
conhecidos como sistemas de banco de dados legados.
3.1 Conceitos do modelo relacional
No modelo relacional, o banco de dados representado como uma coleo de
relaes, as quais so semelhantes a tabelas de valores, ou a arquivos planos, at certo ponto,
por cada registro ter uma estrutura linear e plana.
Quando uma relao considerada uma tabela de valores, cada linha da tabela
representa uma coleo de valores de dados relacionados, as quais representam fatos
normalmente correspondentes a entidades ou relacionamentos. Os nomes da tabela e de
colunas so usados para ajudar na interpretao do significado dos valores de cada linha. Os
valores pertencentes a uma mesma coluna possuem o mesmo tipo de dados.
No modelo relacional, uma linha recebe o nome de tupla, um cabealho de coluna
chamado de atributo e a tabela denominada relao. O tipo de dados que cada coluna pode
receber representado por um domnio de valores.
Uma definio alternativa de uma relao pode ser dada, tornando a ordem dos valores em
uma tupla desnecessria. Um esquema de relao um conjunto de atributos, em vez de uma
lista, e um estado de relao um conjunto finito de mapeamento onde cada tupla um
mapeamento de relao e domnio. Dessa forma, uma tupla pode ser considerada um conjunto
de pares (atributo e valor) em que cada par d o valor do mapeamento a partir do atributo para
um valor no domnio. O nome do atributo no importante, j que o nome vem acompanhado
de seu valor. Quando uma relao feita como arquivo, os atributos so fisicamente
ordenados como campos dentro de um registro.
Valores e NULLs nas tuplas
Os valores nas tuplas so atmicos, ou seja, no divisvel em seus componentes dentro
da estrutura do modelo relacional bsico. Assim, atributos compostos e multivalorados no
so permitidos. Dessa forma, atributos multivalorados tm que ser representados
separadamente e os compostos so representados por seus atributos de componentes simples
no modelo relacional bsico. Os valores NULL so utilizados para representar valores dos
atributos que podem ser desconhecidos ou que no se aplicam a uma tupla. Podem-se criar
diferentes cdigos para diversos significados de valores NULL. O significado exato de um
NULL determina como ele ser aplicado durante agregaes aritmticas ou comparaes com
outros valores, como nos casos em que a comparao de dois valores NULL gera
ambiguidade. Deve-se ento evitar o uso do NULL em um projeto ao mximo.
Interpretao de uma relao
O esquema de relao pode ser interpretado como uma declarao ou tipo de afirmao.
Cada tupla pode ser interpretada como uma instncia em particular da afirmao. Algumas
relaes representam fatos sobre entidades, outras podem representar fatos obre
relacionamentos. Logo, o modelo relacional representa fatos sobre entidades e
relacionamentos de forma uniforme como relaes, o que s vezes compromete a
compreenso, pois preciso descobrir se uma relao representa um tipo de entidade ou um
tipo de relacionamento.
3.2 Restries em modelo relacional e esquemas de bancos de dados relacionais
Existem muitas restries sobre os valores reais em um estado de banco de dados, as
quais derivam das regras que o minimundo do banco de dados representa. As restries
podem ser divididas em trs categorias: restries inerentes no modelo de dados, as quais
chamamos de restries implcitas; restries que podem ser expressas diretamente nos
esquemas do modelo de dados, em geral especificando-as na DDL, restries explcitas; e as
restries que no podem ser expressas diretamente nos esquemas do modelo de dados e
devem ser expressas e impostas pelos programas de aplicao, so as chamadas restries
semnticas ou regras de negcio.
3.2.1 Restries de Domnio
Especificam que dentro de uma tupla p valor de cada atributo deve ser um valor
indivisvel no considerado. Os tipos de dados associados aos domnios normalmente incluem
os tipos de dados numricos padro para inteiros e nmeros reais, sendo que caracteres,
booleanos, cadeias de caracteres entre outros tambm esto especificadas. Tambm pode-se
descrever outros domnios possveis por um subintervalo dos valores de um tipo de dados ou
conjunto deles enumerado, no qual todos os valores possveis so explicitamente listados.
3.2.2 Restries de chave e restries sobre valores NULL
Duas tuplas no podem ter igual combinao de valores para todos os seus atributos.
Em geral, usa-se subconjuntos de atributos de um esquema de uma relao com a propriedade
de que duas tuplas em qualquer estado de relao no devero ter a mesma combinao de
valores para esses atributos.
Uma superchave especifica uma restrio de exclusividade de que duas tuplas
diferentes em qualquer estado no podem ter o mesmo valor em um atributo. Cada relao
possui no mnimo uma superchave padro, mas uma superchave pode ter atributos
redundantes, de forma que um conceito til o de uma chave que no redundncia. Uma
chave de um esquema de relao uma superchave da relao com a propriedade adicional de
que a remoo de um atributo deixa um conjunto de atributos que no mais uma superchave.
Uma chave satisfaz duas propriedades: tuplas distintas em qualquer estado no podem ter
valores idnticos para atributos na chave (aplica-se a superchave); e uma superchave
mnima, ou seja, no podemos remover nenhum atributo e ainda mantemos uma restrio de
exclusividade na condio anterior (no exigida por uma superchave). Uma chave
determinada com base no significado dos atributos e a propriedade invarivel no tempo, ou
seja, ela permanece mesmo que se insiram novas tuplas. Um esquema de relao pode conter
vrias chaves e cada uma recebe o nome de chave candidata. Elege-se uma chave primria,
que uma candidata cujos valores so usados para identificar tuplas em uma relao.
Existem tambm restries quanto ao valor NULL, permitindo-o ou no. Como
exemplo temos os casos em que a tupla precisa ter um valor diferente de NULL para um
atributo, ento esse atributo restrito a ser NOT NULL.
3.2.3 Bancos de dados relacionais e esquemas de banco de dados relacional
Um esquema de banco de dados relacional S um conjunto de esquemas de relao
S=(R1, R2,..) e um conjunto de restries de integridade RI. Um estado de banco de dados
relacional DB de S um conjunto de estados e relao DB = (r1, r2,...), no qual cada r um
estado de R e os estados satisfazem as restries de integridade especificadas em RI.
Um estado de BD que desobedece alguma das restries de integridade chamado de
estado invlido, e um que satisfaz todas as restries no conjunto definido de restries de
integridade chamado de estado vlido. Verses antigas do modelo relacional faziam uma
suposio de que o mesmo conceito do mundo real teria nomes de atributos idnticos em
todas as relaes, quando representados em forma de atributos. O problema quando o
mesmo conceito do mundo real usado em diferentes papis na mesma relao. Todos os
SGBDs relacionais necessitam de uma linguagem de definio de dados (DDL) para
estabelecer um esquema de BD relacional. Geralmente usa-se a linguagem SQL.
As restrio de integridades so especificadas em um esquema de BD e espera-se que
sejam mantidas em cada estado de BD vlido de ume esquema.
Existem 3 operaes bsicas que podem ser feitas em um BD: inserir, excluir e alterar.
Ao aplicar essas operaes as restries de integridade no devem ser violadas.
3.3.1 A operao Inserir
Oferece uma lista de valores de atributo para que uma nova tupla possa ser inserida em
uma relao. Pode violar qualquer um dos 4 tipos de restries. As de domnio so violadas se
for dado um valor de atributo que no aparece no domnio correspondente ou no do tipo de
dado apropriado. Viola as restries de chave se um valor de chave na nova tupla j existir em
outra na relao. A integridade de entidade pode ser violada se qualquer parte da chave
primaria da nova tupla for NULL. A integridade referencial pode ser violada se o valor de
qualquer chave estrangeira na tupla se referir a uma tupla que no existe na tabela
referenciada. Caso uma insero viole alguma restrio, rejeita-se a insero ou tenta-se
corrigir o motivo da rejeio.
3.3.2 Operao Excluir
Pode violar apenas a integridade referencial, caso uma tupla que esta sendo excluda
seja referenciada por chaves estrangeiras de outras tuplas no BD. A fim de especificar a
excluso uma condio sobre os atributos da relao seleciona a tupla a ser excluda.
Se uma excluso causar violao, existem opes para resolver. A primeira a
chamada restrict, que recusa a excluso. A segunda a cascade que tenta propagar a exluso,
excluindo tuplas que referenciam aquela que est sendo excluda. E a terceira set null ou set
default, que modifica os valores de atributo que referenciam a causa da violao, cada valor
desse tipo definido como NULL ou alterado para referenciar outra tupla de valor vlido.
Vale lembrar que combinaes dessas trs operaes possvel. Quando uma restrio de
integridade especificada na DDL, o SGBD permite que o projetista especifique qual dessas
operaes usar.
3.3.3 A operao Alterar
Usada para alterar os valores de um ou mais atributos em uma tupla de alguma
relao. Faz-se necessrio especificar uma condio sobre os atributos da relao para que
seja selecionada a tupla que se deseja modificar. Alterar atributo que no pertence chave
primria e nem estrangeira no causa problemas, basta verificar se o novo valor pertence ao
domnio. J modificar atributos que pertenam a chave primaria ou estrangeira equivalente a
excluir uma tupla e inserir uma nova no lugar. Caso atributo da chave estrangeira seja
modificado, o SGBD deve garantir eu o novo valor referencia a uma tupla existente na relao
referenciada. Em caso de violao de integridade, o SGBD permitir a usurio escolher
opes separadas para lidar com a violao.