Modelo
relacional
- baseado na observação de que
arquivos que obedecem a certas limitações podem ser
considerados como Relações Matemáticas
- consequêntemente
- pode-se utilizar a teoria
elementar de conjuntos (relações) para lidar
com vários problemas práticos com dados desses
arquivos.
- há várias linguagens para expressar
estas operações baseadas em :
- cálculo relacional
- álgebra relacional
- as quais são muito concisas e formais
e portanto inapropriadas para usuários
Terminologia
- na maior parte da literatura:
- tabela : relações
- linhas : tuplas
- colunas: atributos
- domínio:
- reservatório de
valores a partir do qual são retirados
os que aparecem em uma determinada coluna
- ex: valores da coluna
P# de Peças e Embarque foram retirados
do domínio basico de todos os números
válidos de peças
- Aspecto importante
- a associação entre tuplas é
representada somente por valores de dados em
colunas retiradas de um domínio comum.
Os Banco de Dados comerciais utilizam
linguagens mais dóceis para expressar operações lógicas de
acesso à BD tais como:
SQL
QBE ...
- Normalização
- para cada posição de
linha/coluna haverá precisamente um
único valor, nunca um conjunto de
valores
- chaves: atributo cujos valores
sejam os únicos naquela relação
- usado para identificar
tuplas
- chave primária
- atributo que
identifica unívocamente uma tupla
- chave candidata
- quando mais de um
atributo pode ser usado p/identificar sem
ambiguidade uma relação
- chaves alternativas
- chave candidata que
não foi escolhida como chave primária
Exemplo
- relação fornecedores (suppliers)
- s# sname status city
- s1 smith 20 London
- s2 jones 10 Paris
- s3 blake 30 Paris
- relação peças (parts)
- p# pname color weight city
- p1 nut red 12 London
- p2 bolt green 17 Paris
- p3 screw blue 17 Rome
- p4 screw red 14 London
- relação embarques (SP)
- s# p# qty
- s1 p1 300
- s1 p2 200
- s1 p3 400
- s2 p1 300
- s2 p2 400
- s3 p2 200
Recuperação das
informações
- encontre os números dos fornecedores
que forneçem a peça P2
- do until no more shipments;
- get next shipment where P# =
P2;
- print s#
- end;
- encontre os números das peças
fornecidas pelo fornecedor S2
- do until no more shipments;
- get next shipment where s# =
s2;
- print p#
- end;