Projecto de bases de dados relacionais: Tradução de diagramas entidade-associação para esquemas relacionais Gabriel David (gtd@fe.up.pt) / João Pascoal Faria (jpf@fe.up.pt) FEUP (http://www.fe.up.pt ) , 2001
EA versus relacional Pessoa Conta titular entidade entidade bi número nome saldo data_nasc titular Pessoa Conta Pessoa bi nome data_nasc 1111 João 53-03-24 2222 Maria 54-09-11 3333 Miguel 80-03-01 4444 Pedro 83-05-29 Titular bi número 1111 1327 1111 6498 1111 9185 2222 9185 2222 5623 3333 8998 Conta número saldo 1327 23 000 6498 78 000 9185 127 000 5623 41 000 8998 5 000 entidade entidade associação n m
Tradução conjunto de entidades E associação A = (E1, ..., Ek) 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 Titular( bi, numero ) entidades relações associações só um conceito, maior uniformidade, menos operadores
Exemplo dos cursos Curso Turma Disciplina Professor Aluno segue plano codcurso segue letra Curso Turma designacur ano plano lecciona atribuído coddis Disciplina sigla designadis BI nome BI morada nome Professor Aluno telefone morada habilitação telefone inscrito resultado grupo data_nasc
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) [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
Conteúdo das chaves [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) [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) 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
Tradução (cont.) Aluno Atribuido Aluno (novo) tuplo pendente 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 bia nome ... 243 João 12 321 Rui 31 427 Tiago 5 575 Luis 40 Atribuido bia curso ano letra 243 CG 10 A 321 CG 11 B 427 CG 10 A Aluno (novo) bia nome … curso ano turma 243 João … CG 10 A 321 Rui ... CG 11 B 427 Tiago … CG 10 A 575 Luis ... tuplo pendente - valor nulo
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
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
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' título nr ano Publicação isa isa Livro Revista editor volume número Publicação nr titulo ano tipo editor vol no 327 'Os Maias' 1983 'L' Bertrand 581 'Software' 1994 'R'
Hierarquias (cont.) especializações em tabelas separadas Livro Revista 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 Livro nr titulo ano editor 327 'Os Maias' 1983 'Bertrand' Revista nr titulo ano vol no 581 'Software' 1994 41 2 uma tabela várias tabelas • tudo junto • acesso simples • muitos nulos • integridade via programação • integridade mais explícita • subconjuntos menores • muitas tabelas • problemas com a vista reunião
Associação característica FEUP/MEAM Sistemas de Informação 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) Gabriel David