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