1 Gabriel David FEUP - Rua dos Bragas, 4050-123 Porto - PORTUGAL Tel. 351-222041842 - Fax:...
-
Upload
marta-camilo-rios -
Category
Documents
-
view
218 -
download
0
Transcript of 1 Gabriel David FEUP - Rua dos Bragas, 4050-123 Porto - PORTUGAL Tel. 351-222041842 - Fax:...
1
Gabriel DavidFEUP - Rua dos Bragas, 4050-123 Porto - PORTUGALTel. 351-222041842 - Fax: 351-222000808
Email: [email protected]: http://www.fe.up.pt
Modelo relacional noções básicas tradução do modelo entidade-associação álgebra relacional
Modelo relacional - 2
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 - 3
Sistemas
Norma ANSI/SPARC Alguns sistemas relacionais
Rendez-vous Oracle QBE Ingres Informix
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).
Sybase Paradox Access SQL ...
Modelo relacional - 4
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 }
branco amarelo vermelho negro
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)
D1
D2
Modelo relacional - 5
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 - 6
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 - 7
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 - 8
Tabela
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
tuplo linha
componente coluna
RFlor Côrr bc vt n
esquema de R [plano]instância de R [conteúdo]
R = { (r,b), (c,v), (t,n) }
Modelo relacional - 9
Um conjunto S de atributos de uma relação R é uma chave se1 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).
Chaves de relações
Ex: chave(R) = {flor}• (f,c1), (f, c2) c1 = c2• significa que só pode haver uma linha para uma dada flor
Ex: chave(Inscrito) = {coddis, bia}• (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 - 10
EA versus relacional
Titularbi número1111 13271111 64981111 91852222 91852222 56233333 8998
Pessoabi nome data_nasc1111 João 53-03-242222 Maria 54-09-113333 Miguel 80-03-014444 Pedro 83-05-29
Contanúmero saldo1327 23 0006498 78 0009185 127 0005623 41 0008998 5 000
entidade
associação n mentidade
Pessoa
nomebi
data_nasc
titular Conta
saldo
número
Modelo relacional - 11
entidades
associaçõesrelações
só um conceito, maior uniformidade, menos operadores
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
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 )
Modelo relacional - 12
Exemplo dos cursos
Curso
Disciplina
Professor Aluno
Turma
plano
segue
inscrito
atribuídolecciona
codcurso
designacur
sigla
coddis
designadis BInome
moradatelefone
habilitaçãogrupo
BInome
moradatelefone
data_nasc
ano
letra
resultado
Modelo relacional - 13
Tradução do exemplo
[Entidades]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)
[Associações]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 - 14
Conteúdo das chaves
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
[Entidades]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)chave primária chave candidata
[Associações]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)
Modelo relacional - 15
Atribuidobia curso ano
letra243 CG 10
A
321 CG 11B
427 CG 10A
Aluno (novo)bia nome … curso ano
turma243 João … CG 10 A
321 Rui ... CG 11 B
427 Tiago … CG 10 A
575 Luis ...
Alunobia nome ...243 João 12
321 Rui 31
427 Tiago 5
575 Luis 40
- valor nulo
tuplo pendente
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
Modelo relacional - 16
Regras práticas
entidade relação ex: Disciplina, Aluno
associação m 1 (binária) atributo do lado m ex: atribuído Aluno
associação m n (ou m 1 > binária) relação ex: plano, lecciona
Modelo relacional - 17
Associação Segue: está contida em Turma e portanto desaparece
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 + 86 Plano(codcurso, coddis)7 Inscrito(coddis, bia, resultado)9 Lecciona(bip, coddis, codcurso, ano, letra)
Modelo relacional - 18
Publicação
RevistaLivro
nr
número
ano
título
volumeeditorPublicaçãonr titulo ano tipo editor vol
no327 'Os Maias' 1983 'L' Bertrand 581 'Software' 1994 'R'
Tradução alternativa de hierarquias todas as especializações numa tabela
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'
isa isa
Modelo relacional - 19
Livronr titulo ano
editor327 'Os Maias' 1983
'Bertrand'Revistanr titulo ano vol
no581 'Software' 1994 41
2
• tudo junto• acesso simples• muitos nulos• integridade via programação
• integridade mais explícita• subconjuntos menores• muitas tabelas• problemas com a vista reunião
uma tabela várias tabelas
Hierarquias (cont.)
especializações em tabelas separadas 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
Modelo relacional - 20
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 - 21
Elementos activos na BD
Esquema da BD = esquemas das tabelas + restrições de integridade
elementos activos complementam os estruturais Restrição
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 - 22
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 - 23
Tuplos pendentes
tuplo pendente - tuplo numa tabela que não tem par na outra, ao combinar duas relações
formas de reduzir o problema1) 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