AULA 2
Abordagem Relacional
Um banco de dados relacional é
composto de tabelas ou relações. A terminologia
tabela
é mais comum nos produtos comerciais e na prática. Já
a terminologia relação foi utilizada na literatura
original sobre a abordagem relacional.
1. Tabelas
-
Uma tabela é um conjunto não
ordenado de linhas (tuplas) onde cada linha é composta por uma série
de campos (atributos).
-
Cada campo é identificado por
um nome e o conjunto de campos homônimos de todas as linhas de uma
tabela formam uma coluna.
EMP
CodigoEmp
|
Nome
|
CodigoDepto
|
CategFunc
|
E5
|
Souza
|
D1
|
C5
|
E3
|
Santos
|
D2
|
C5
|
E2
|
Silva
|
D1
|
C2
|
E1
|
Soares
|
D1
|
C4
|
1.1. Diferenças entre Arquivos
e Tabelas
-
As linhas das tabelas não tem
ordenação, não podendo selecionar as linhas por posição,
como na referência por registros.
-
Os valores de campo de uma tabela são
atômicos e monovalorados. Em arquivos convencionais, campos podem
ser compostos por outros campos e campos podem ser multivalorados ("arrays"
de Pascal).
-
As linguagens de consulta a base de
dados relacionais permitem o acesso por quaisquer critérios envolvendo
os campos de uma ou mais linhas. Em arquivos convencionais, para buscar
registros com base em valores de seus campos de forma rápida é
usualmente necessário que exista algum tipo de caminho de acesso
ou arquivo de índice.
2 Chaves
A chave é o conceito básico
para identificar linhas e estabelecer relações entre linhas
de uma tabela de um banco de dados relacional.
2.1. Chave Primária
-
É a coluna ou a combinação
de colunas cujos valores distinguem uma linha das demais dentro de uma
tabela.
-
A chave primária tem como regra
ser obedecida em todos os estados válidos do BD, no caso, a regra
é a de unicidade de valores nas colunas que compõem a chave.
-
A chave primária é uma
restrição de integridade.
-
Chave composta é quando mais
de um campo é necessário para identificar a linha na tabela.
Exemplo: Quando um empregado possui vários dependentes, na tabela
de dependente existirá uma chave para identificar o empregado e
outra para diferenciar cada um dos dependentes deste empregado.
Dependentes
CodigoEmp
|
CodDepend
|
Nome
|
Tipo
|
DataNasc
|
E1
|
01
|
João
|
Filho
|
12/12/1991
|
E1
|
02
|
Maria
|
Esposa
|
01/01/1950
|
E2
|
01
|
Ana
|
Esposa
|
05/11/1955
|
E6
|
01
|
Paula
|
Esposa
|
04/07/1975
|
E6
|
02
|
José
|
Filho
|
03/02/1990
|
2.2. Chave Estrangeira
-
A chave estrangeira é
uma coluna ou combinação de colunas, cujo valores aparecem
necessáriamente na chave primária de uma tabela.
-
É um mecanismo que permite a
implementação de relacionamentos em um banco de dados relacional.
-
A existência de uma chave estrangeira
impõe restrições que devem ser garantidas ao executar
diversas operações de alteração do banco de
dados:
-
Quando na inclusão de uma linha
que contenha chave estrangeira, deve ser garantido que o valor da chave
estrangeira esteja na coluna da chave primária referenciada.
-
Quando na alteração de
uma chave estrangeira, deve ser garantido que o valor da nova chave estrangeira
esteja na coluna da chave primária referenciada.
-
Quando na exclusão de uma linha
que contenha uma chave que é estrangeira em outra tabela, deve ser
garantido que a linha não será excluída enquanto alguma
linha que a referencie na outra tabela, ainda exista. No exemplo abaixo,
deve ser garantido que não se exclua um departamento X, se existe
ainda algum empregado que faça parte deste departamento.
-
Quando na alteração de
uma chave, que seja referenciada em outra tabela como estrangeira, deve
ser garantido que a outra tabela não permaneça com o valor
antigo da chave.
-
Pode existir uma chave estrangeira que
referencie uma chave na mesma tabela. Como por exemplo a Chave Estrangeira
CodEmpGer (Código Empregado Gerente), que faz referência a
chave primária da própria tabela de empregados.
Depto
CodigoDepto |
NomeDepto |
D1 |
Compras |
D2 |
Engenharia |
D3 |
Vendas |
Emp
CodigoEmp |
Nome |
CodDepto |
CategFunc |
CIC |
CodEmpGer |
E1 |
Saulo |
D1 |
C1 |
132.121.331-20 |
---- |
E2 |
Roberto |
D2 |
C5 |
891.111.225-11 |
E10 |
E3 |
Patricia |
D2 |
C5 |
951.258.154-88 |
E2 |
E5 |
Cristiano |
D1 |
C2 |
356.188.554-54 |
E14 |
3. Domínios e Valores Vazios
-
Quando uma tabela é definida,
para cada coluna deve ser especificado o conjunto de valores que os campos
podem assumir. Este conjunto de valores é chamado de domínio.
-
Deve ser especificado se os campos da
coluna podem estar vazios ou não. Um campo vazio significa que não
recebeu nenhum valor de seu domínio. Ex: CodEmpGer do Emp de CodEmp
E1.
-
Normalmente, nos SGBDs relacionais exigem
que todas as colunas que compôem a chave primária sejam obrigatórias.
A mesma exigência não ocorre para as demais chaves.
4. Restrições de Integridade
-
Um dos objetivos primordiais de um SGBD
é a integridade de dados.
-
Dizer que um banco de dados está
íntegro, significa dizer que ele reflete corretamente a realidade
representada pelo banco de dados e que é consistente entre si.
-
Restrições de integridade:
-
Integridade de domínio:
especifica que um campo deve obedecer a definição de valores
admitidos para a coluna (domínio).
-
Integridade de vazio: especifica
se os campos de uma coluna podem ou não ser vazios.
-
Integridade de chave: define
que os valores da chave primária deve ser único.
-
Integridade referencial: define
que os valores dos campos que aparecem em uma chave estrangeira devem aparecer
na chave primária da tabela referenciada.
-
Estas restrições devem
ser garantidas automaticamente por um SGBD relacional, não deve
ser exigido que o programador escreva procedimentos para garanti-las.
[voltar]
|