Introdução
No modelo relacional a informação é apresentada através de relações (i.e. tabelas), que são manipuladas através de conjuntos intersecção, produtos cartesiano (p.e. joins), união, etc.
No modelo relacional a informação é apresentada através de relações (i.e. tabelas), que são manipuladas através de conjuntos intersecção, produtos cartesiano (p.e. joins), união, etc.
A base de dados relacional é um conjunto de relações, e cada uma possui um número específico de atributos (i.e. colunas) e um número variável tuplos (i.e. linhas ou instâncias).
A cada atributo é atribuído um domínio (i.e. conjunto de valores válidos) e um nome único na relação.
Por seu lado, os valores são armazenados na intersecção entre as linhas e os atributos, pertencendo ao domínio do atributo. Na “ausência de valor” estas assumem o valor “NULL”.
Uma operação entre conjuntos, que produz um novo conjunto (constituído por todas as combinações entre os seus elementos), designa-se por produto cartesiano.
Assim, uma relação é um subconjunto do produto cartesiano de uma lista de domínios (p.e. qualquer subconjunto de Int x String x String é uma relação).
Contudo, a informação obtida unicamente através de produtos cartesianos entre tabelas pode ser incoerente, despoletando a necessidade de se efectuarem joins. Estes correspondem a produtos cartesianos complementados por uma filtragem das linhas que obedecem a um determinado critério de equivalência.
Corolários da relação como conjunto:
· O modelo relacional preconiza que não podem existir dois tuplos exactamente iguais, pois representariam a mesma realidade ou seja, informação duplicada;
· Não podemos assumir a existência de uma ordem definida entre as linhas de uma tabela (i.e. que esta se encontre ordenada por um ou mais atributos).
Diferentes tipos de Keys
Chave primária ou Primary Key (doravante designada por PK) é um conjunto minimal de atributos que permitem identificar univocamente um tuplo de uma relação. Esta chave não pode conter registos vazios a deve ser única (i.e. não pode conter dois tuplos com o mesmo valor). Todas as relações têm de possuir uma cave primária.
Ao conjunto da PK com outro atributo, designa-se por Super-Chave (p.e. Num_cliente e Nome_cliente). Nesta chave, apenas o atributo PK deve encontrar-se sempre preenchido e ser único (no exemplo previamente facultado, o Nome_Cliente pode possuir registos com a mesma informação ou com valor “NULL”.
As Chaves Candidatas ou Candidate Keys são representadas por um conjunto de atributos, entre os quais se encontra a PK. Desta forma, os restantes atributos são designados por Chaves Alternativas ou Alternative Keys.
A Chave Composta ou Composed Key é constituída por mais do que um atributo e tal como a PK deve ser única (i.e. não podem existir registos com informação duplicada no conjunto ordenado de valores assumidos em todos os atributos que a compõem) e não deve conter registos “NULL”.
No processo de selecção da PK devem ser tidos em consideração os seguintes aspectos:
· Deve ser composta por um atributo familiar ao utilizador – designadas por Chaves Naturais (conceito inexistente no modelo relacional original);
· Por motivos de eficiência, esta deve pertencer a um domínio numérico;
· Também por motivos de eficiência, esta deve ser composta por apenas um atributo.
A Chave Estrangeira ou Foreign Key (doravante designada por FK) corresponde ao atributo cujo domínio é composto por valores existentes na PK e apenas em PK. Caso, o atributo em causa possua valores “NULL” então este não será uma FK, uma vez que esse valor não é válido na PK.
A FK permite o cruzamento de variáveis entre tabelas.
Restrição da integridade referencial
A restrição da integridade referencial corresponde à restrição dos dados na FK imposta por uma PK, ou seja, a FK apenas poderá conter valores não “NULL” definidos previamente na PK.
O quadro abaixo, permite-nos percepcionar as opções que os Administradores dos sistemas possuem para gerir esta restrição quando os utilizadores pretendem apagar, criar ou alterar as PK’s.
Opção
|
“ON DELETE”
|
“ON UPDATE”
|
Restrict
|
A BD não permite apagar o valor da PK, sem que se apague primeiro todas as linhas com FK associadas ao valor
|
A BD não permite criar/alterar o registo
|
Cascade
|
A BD permite apagar o valor da PK, apagando automaticamente todas as linhas com FK associadas a esse valor
|
Ao alterar a PK, a BD automaticamente actualiza todos os registos na FK.
|
Set NULL
|
A BD permite apagar o valor da PK, e automaticamente todos os registos de FK associadas a esse valor, passam a assumir o valor “NULL”
|
Ao alterar a PK, a BD automaticamente actualiza todos os registos na FK com o valor “NULL”.
|
Quadro 1 – Restrição da integridade referencial
Os Administradores possuem ainda outros tipos de restrições que lhes permite gerir a integridade dos dados:
· Definir o atributo como PK ou FK;
· Definir se o atributo pode ou não assumir valores “NULL”;
· Definir o atributo como “UNIQUE”, ou seja, definir se este pode ou não possuir registos duplicados;
· Definir validações por lógica envolvendo um ou mais atributos e operadores lógicos;
· Definir o “valor por omissão”, ou seja, o valor que é automaticamente preenchido no caso de existirem registos vazios;
· Definir descritivos textuais (i.e. comentários) sobre o objectivo do atributo.
Referências
Professor José Farinha (2011): Apontamentos e documentação em formato digital, facultada no âmbito do MSIAD do ISCTE-IUL.