Modelo relacional
noções básicas
 tradução do modelo entidade-associação
 álgebra relacional

Gabriel David
FEUP - Rua dos Bragas, 4050-123 Porto - PORTUGAL
Tel. 351-222041842 - Fax: 351-222000808
Email: [email protected]
URL: http://www.fe.up.pt
1
Objectivos

Ted Codd, 1970






Fornecer um elevado grau de independência dos dados.
Proporcionar uma definição comum dosdados de simplicidade
espartana, de forma que uma vasta gama de utilizadores numa
empresa possa com ela lidar.
Simplificar o potencialmente gigantesco trabalho do
administrador da BD.
Introduzir uma fundamentação teórica na gestão de BD.
Fundir os campos de pesquisa de factos e gestão de ficheiros,
preparando a posterior adição de serviços de inferência no
mundo comercial.
Elevar a programação de aplicações de BD para um novo nível,
em que conjuntos sejam tratados como operandos, em vez de
serem tratados elemento a elemento.
Modelo relacional - 2
Sistemas


Norma ANSI/SPARC
Alguns sistemas relacionais






Rendez-vous
Oracle
QBE
Ingres
Informix




Sybase
Paradox
Access
SQL ...
Há sistemas que têm estrutura tabular, mas não
possuem todos os operadores relacionais básicos
ou apresentam limitações práticas importantes
(semi-relacionais).
Modelo relacional - 3
Produto cartesiano

domínios



D1 = { rosa, cravo, tulipa }
D2 = { branco, amarelo, vermelho, negro }
produto cartesiano


D1  D2 = { (r,b), (r,a), (r,v), (r,n), (c,b), (c,a),
(c,v), (c,n), (t,b), (t,a), (t,v), (t,n), (r,b) }
= { (x, y) | x  D1, y  D2 }
D2

branco amarelo vermelho negro
D1
rosa
(r,b)
(r,a)
(r,v)
(r,n)
cravo
(c,b)
(c,a)
(c,v)
(c,n)
tulipa
(t,b)
(t,a)
(t,v)
(t,n)
Modelo relacional - 4
Tuplo

Generalização do produto cartesiano


D1  D2  D1 = { (x, y, z) | x  D1, y  D2, z  D1}
tuplo (n-uplo)



sequência ordenada, eventuais repetições;
 conjunto, sem ordem nem repetições
tantos elementos quantos os domínios do produto cartesiano
• (2 - par; 3 - terno; ...)
Modelo relacional - 5
Relação

relação subconjunto de produto cartesiano




R  D1  D2
extensão
R = { (r,b), (c,v), (t,n) }
compreensão R= { (f, c) | existe no meu jardim a flor f com a côr c }
relação é conjunto



os tuplos são todos diferentes (existe chave)
a ordem dos tuplos na relação é irrelevante
a ordem dos componentes nos tuplos é importante (referência
por posição)
• se se atribuir um nome a cada elemento do tuplo (atributo), onde
aquele for indicado, a ordem não interessa - vê-se o tuplo como
um mapeamento dos atributos para os respectivos valores
– se t=(r, b) então flor(t) = r, côr(t) = b, e também t = (r, b) =
(côr: b, flor: r)
Modelo relacional - 6
Relação normalizada

relação não normalizada: contém tuplos cujos
valores são conjuntos, i.e., não atómicos


não normalizada
R = { (r, {b,a}), (c, {b,v}), (t,n)}
normalizada correspondente
R= {(r,b), (r,a), (c,b), (c,v), (t,n)}
Modelo relacional - 7
Tabela
R = { (r,b), (c,v), (t,n) }
R
Flor Côr
tuplo
linha
r
b
componente
coluna
c
v
t
n




esquema de R
[plano]
instância de R
[conteúdo]
atributo : nome de uma coluna
esquema : conjunto dos atributos
esquema da BD : contém o conjunto dos
esquemas das relações
BD : conjunto das instâncias das relações
Modelo relacional - 8
Chaves de relações
Um conjunto S de atributos de uma relação R é uma chave se
1
nenhuma instância de R, representando um estado
possível do mundo, pode ter dois tuplos que
coincidam em todos os atributos de S e não sejam o
mesmo tuplo;
2
nenhum subconjunto próprio de S satisfaz (1).

Ex: chave(R) = {flor}

Ex: chave(Inscrito) = {coddis, bia}
• (f,c1), (f, c2)  c1 = c2
• significa que só pode haver uma linha para uma dada flor
• (d, a, r1), (d, a, r2)  r1 = r2
• só coddis ou só bia não garantem a condição (1)
• {coddis, bia, resultado} não é chave porque contém uma chave.


conceito de chave depende do esquema, não da instância
várias chaves numa relação — chaves candidatas; escolhe-se
uma delas como chave primária
Modelo relacional - 9
EA versus relacional
bi
número
nome
saldo
data_nasc
Pessoa
Pessoa
titular
Conta
Titular
Conta
data_nasc
bi
número saldo
1111 João
53-03-24
1111
1327
1327
23 000
2222 Maria
54-09-11
1111
6498
6498
78 000
3333 Miguel 80-03-01
1111
9185
9185
127 000
4444 Pedro
2222 9185
5623
41 000
2222 5623
8998
5 000
bi
nome
83-05-29
entidade
número
3333 8998
associação n  m
entidade
Modelo relacional - 10
Tradução

conjunto de entidades E





entidade
ex: conj. entidades Pessoa
se E tiver chave emprestada,
incluir esses atributos na relação
ex: Turma
associação A = (E1, ..., Ek)



ligação
ex: associação titular
entidades
relação, esquema = atributos de E

tuplo
Pessoa( bi, nome, data_nasc )

Turma( curso, ano, letra )


relação, esquema = atributos nas
chaves de E1, ..., Ek, renomeando iguais
 tuplo
 Titular( bi, numero )
relações
associações
só um conceito, maior uniformidade, menos operadores
Modelo relacional - 11
Exemplo dos cursos
codcurso
designacur
Curso
segue
Turma
letra
ano
plano
lecciona
atribuído
coddis
Disciplina
sigla
designadis
BI
nome
BI
morada
nome
telefone
resultado
inscrito
Professor
Aluno
morada
habilitação
telefone
grupo
data_nasc
Modelo relacional - 12
Tradução do exemplo
[Entidades]
[Associações]
1 Curso(codcurso, designacur)
2 Disciplina(coddis, sigla, designadis)
3 Turma(codcurso, ano, letra)
4 Professor(bip, nome, morada,
telefone, habilitação, grupo)
5 Aluno(bia, nome, morada, telefone,
data_nasc)
6 Plano(codcurso, coddis)
7 Inscrito(coddis, bia, resultado)
8 Atribuido(bia, codcurso, ano, letra)
9 Lecciona(bip, coddis, codcurso, ano,
letra)
10 Segue(codcurso, ano, letra)
 na associação Segue elimina-se o atributo repetido; o resultado é
igual a Turma
Modelo relacional - 13
Conteúdo das chaves
[Entidades]
[Associações]
1 Curso(codcurso, designacur)
6 Plano(codcurso, coddis)
2 Disciplina(coddis, sigla, designadis)
7 Inscrito(coddis, bia, resultado)
3 Turma(codcurso, ano, letra)
8 Atribuido(bia, codcurso, ano, letra)
4 Professor(bip, nome, morada,
9 Lecciona(bip, coddis, codcurso, ano,
telefone, habilitação, grupo)
letra)
5 Aluno(bia, nome, morada, telefone,
data_nasc)
10 Segue(codcurso, ano, letra)
chave primária
chave candidata

Quando os esquemas das relações são uma tradução do modelo EA:





relação vinda de um conjunto de entidades: a chave da entidade é a
chave da relação
relação vinda de uma associação muitos-para-muitos: chave inclui,
frequentemente, todos os atributos
relação vinda de entidade fraca: chave inclui a chave da entidade forte
associação um-para-um entre E e F: tanto a chave de E como a de F
podem ser chave para a relação
associação muitos-para-um de E1, ..., Ek-1 em Ek: frequentemente, os
atributos E1, ..., Ek-1 formam uma chave
Modelo relacional - 14
Tradução (cont.)

Simplificação - Duas relações com uma chave candidata em comum podem
ser combinadas numa só relação cujo esquema é a reunião dos outros dois.
• poupa espaço
• perguntas envolvendo atributos das duas relações têm resposta mais rápida
Aluno
Atribuido
bia nome
...
243 João
12
321 Rui
31
427 Tiago
5
575 Luis
40
tuplo pendente
bia curso ano letra
Aluno (novo)
243 CG
10
A
321 CG
11
B
427 CG
10
A
bia nome … curso ano turma
243 João
… CG
10
A
321 Rui
... CG
11
B
427 Tiago … CG
10
A


575 Luis
...

 - valor nulo
Modelo relacional - 15
Regras práticas

entidade  relação


associação m  1 (binária)  atributo do lado m


ex: Disciplina, Aluno
ex: atribuído  Aluno
associação m  n (ou m  1 > binária) 
relação

ex: plano, lecciona
Modelo relacional - 16
Esquema relacional de Cursos
Relações recombinadas
1 Curso(codcurso, designacur)
2 Disciplina(coddis, sigla, designadis)
3 Turma(codcurso, ano, letra)
4 Professor(bip, nome, morada, telefone,
habilitação, grupo)
5 Aluno(bia, nome, morada, telefone, data_nasc,
codcurso, ano, letra)
5+8
6 Plano(codcurso, coddis)
7 Inscrito(coddis, bia, resultado)
9 Lecciona(bip, coddis, codcurso, ano, letra)
 Associação Segue: está contida em Turma e portanto desaparece
Modelo relacional - 17
Tradução alternativa de hierarquias


título
nr
ano
isa
isa
Livro
Revista
volume


Publicação
editor
todas as especializações numa tabela

número
reunir numa única tabela os atributos da generalização
e das especializações, renomeando se necessário
acrescentar um atributo obrigatório Tipo com tantos
valores quantas as especializações
os atributos das especializações são optativos; em cada
entidade só se especificam os valores dos atributos da
especialização correspondente
vistas para manipular especializações
• vista LIVRO = PUBLICAÇÃO(nr, titulo, ano, editor)
condição tipo='L'
• vista REVISTA = PUBLICAÇÃO(nr, titulo, ano, vol, no)
condição tipo='R'
Publicação
nr
titulo
327 'Os Maias'
581 'Software'
ano
tipo editor
1983 'L'
1994 'R'
Bertrand

vol
no




Modelo relacional - 18
Hierarquias (cont.)

especializações em tabelas separadas

Livro
nr
titulo
ano
327 'Os Maias'
editor

1983 'Bertrand'
Revista
nr
titulo
ano
581 'Software'
vol no
1994 41
2

uma tabela por especialização, incluindo os atributos
próprios mais os herdados
generalização acessível por uma vista contendo a
reunião das especializações (só para consulta)
• vista PUBLICAÇÃO =
LIVRO (nr, titulo, ano)
 REVISTA (nr, titulo, ano)
alterações são feitas directamente nas especializações
uma tabela
• tudo junto
• acesso simples
• muitos nulos
• integridade via programação
várias tabelas
• integridade mais explícita
• subconjuntos menores
• muitas tabelas
• problemas com a vista reunião
Modelo relacional - 19
Associação característica

A classe D tem chave emprestada se, para definir
a sua chave de utilizador, for necessário recorrer à
chave de outra classe C que seja o lado um de uma
associação de que D é o lado muitos



caso da turma num curso: turma 2B da LEIC e 2B da LGEI
a existência de objectos em D depende da
existência de objectos em C, enquanto que os
objectos em C existem independentemente de D
diz-se que D corresponde a uma entidade fraca e
que entre D e C existe uma associação
característica

exemplo: entidade Facturas e entidade Linhas (das facturas)
Modelo relacional - 20
Elementos activos na BD

Esquema da BD = esquemas das tabelas +
restrições de integridade


Restrição



elementos activos complementam os estruturais
função booleana cujo valor têm que ser verdadeiro
uma alteração que conduza a um estado que viole uma restrição
é rejeitada
Trigger



código que espera por um evento (inserção, apagamento, …)
executa uma sequência de acções disparadas pelo evento
usado para verificar regras de integridade suplementares
Modelo relacional - 21
Restrições de integridade






chave - identifica uma entidade; não pode haver duas
entidades com a mesma chave; não pode ser nula
valor único - impede a repetição da mesma
combinação de valores nos atributos envolvidos
valor não nulo - preenchimento obrigatório
integridade referencial - exige que um valor
referido por uma entidade de facto exista na BD
(chave externa)
domínio - exige que o valor pertença a um
determinado conjunto ou gama
genérica - asserção que tem que ser verdadeira
Modelo relacional - 22
Tuplos pendentes


tuplo pendente - tuplo numa tabela que não tem
par na outra, ao combinar duas relações
formas de reduzir o problema
1) impondo restrições de integridade referencial
• [se o valor V aparece em A de R1, também tem que existir em B de
R2 ]
• chave externa - restringir os valores num, ou vários atributos de
uma tabela ao conjunto de valores nos atributos chave de uma
outra relação [atributo bia em Inscrito só deve admitir valores que
existam na chave de Aluno]
2) colocando um símbolo especial nos atributos desconhecidos
(), o valor nulo.
• valores nulos não podem aparecer na chave primária
• dois valores nulos são sempre diferentes
Modelo relacional - 23
Download

Transparências: modelo relacional