Transformação ODMG 
Relacional
Implementação Relacional
de BDs OO
• Transformação Esquema Objeto  Esquema
Relacional
Transformação Esquema Objeto 
Esquema Relacional
• Classe de Objetos  Tabela Relacional
– OID  Chave Primária, “Surrogate Key”
– Os métodos são implementados como “stored
procedures”, ou “SQL-functions” ou “SQLtriggers”
• A rica semântica de método de instância é perdida
• Herança (só exclusão mútua)
–
–
–
–
Alternativa 1: uma tabela para cada (sub)classe
Alternativa 2: uma única tabela para todas as classes
Alternativa 3: uma variação da alternativa 1
Em todas as alternativas: regras de integridade
Transformação Esquema Objeto 
Esquema Relacional
• Herança
Empregado
Gerente
Trabalhador
– Alternativa 1: Um novo atributo `Subtipo´,
podendo ser NULL, é acrescentado na tabelasuperclasse; este atributo deve garantir que
todo registro em uma tabela-subclasse é
disjunto
Transformação Esquema Objeto 
Esquema Relacional
• Herança
• Usando o exemplo Empregado-Gerente-Trabalhador
– Empregado(ID, Subtipo, Nome, Endereço, Salário)
– Gerente(ID, Gratificação)
– Trabalhador(ID, HorasExtras)
» Regras de Integridade
Subtipo {t | t = `Gerente´  t = `Trabalhador´ 
t IS NULL}
 ID em Empregado com t = `Gerente´ então  ID
em Gerente e  ID em Trabalhador
 ID em Empregado com t = `Trabalhador´ então
 ID em Trabalhador e  ID em Gerente
 ID em Empregado com t IS NULL então  ID
em Gerente e  ID em Trabalhador
Transformação Esquema Objeto 
Esquema Relacional
• Herança
– Alternativa 2: tudo em uma tabela; um
atributo `Tipo´, podendo ser NULL, é
incluído, para indicar o tipo do
objeto/registro; os demais atributos,
salvo ID, podem ser nulos
Transformação Esquema Objeto 
Esquema Relacional
• Herança
• Usando o exemplo Empregado-Gerente-
Trabalhador
– Empregado(ID, Tipo, Nome, Endereço, Salário,
Gratificação, HorasExtras)
» Regras de Integridade
Tipo {t | t = `Gerente´  t = `Trabalhador´ 
t IS NULL}
Se t = `Gerente´ então HorasExtras NULL
Se t = `Trabalhador´ então Gratificação
NULL
Se t IS NULL então HorasExtras NULL,
Gratificação NULL
Transformação Esquema
Objeto  Esquema Relacional
• Herança
– Alternativa 3: sem o atributo Subtipo na
superclasse;
• Usando o exemplo Empregado-Gerente-
Trabalhador
– Empregado(ID, Nome, Endereço, Salário)
– Gerente(ID, Gratificação)
– Trabalhador(ID, HorasExtras)
Transformação Esquema
Objeto  Esquema Relacional
• Herança
» Regras de Integridade
Se ID = v em Empregado então
((ID = v em Gerente)   (ID = v em
Trabalhador)) 
((ID = v em Trabalhador)   (ID =
v em Gerente)) 
( (ID = v em Gerente)   (ID = v
em Trabalhador))
Transformação Esquema
Objeto  Esquema Relacional
• Qual é a Melhor Implementação Relacional de Herança?
– Prova-se que, para consultas em superclasse e em subclasse, a
Alternativa 1 é pelo menos tão boa quanto as outras, em todos
os casos
– A prova é baseada em um Modelo de Custos e em Categorias de
Consulta
• O Modelo de Custos leva em conta o tamanho dos registros
de uma tabela e o seu número de registros
• Consultas sobre estruturas de herança podem ser assim
categorizadas
– Consultas em Superclasse: acessam atributos em
superclasse
– Consultas em Subclasse: acessam atributos em
subclasse
– Consultas Mistas: acessam atributos ao longo de
estruturas de herança
Transformação Esquema
Objeto  Esquema Relacional
Super
classe
Subtipo
Única
Tabela
Sem
subtipo
Sub
classe
Mista
Transformação Esquema
Objeto  Esquema Relacional
• Associação
– 1:1
Classe A
Chave primária
1
1
Classe B
Chave estrangeira
– Tabela_B(ID, IDA, ...) Tabela_A(ID, ...)
– Tabela_A(ID, IDB, ...) Tabela_B(ID, ...)
– Tabela_AB(ID, ...)
Qual é a melhor transformação?
Transformação Esquema
Objeto  Esquema Relacional
• Associação
– 1:N
Classe A
1
N
Classe B
• Tabela_B(ID, IDA, ...) Tabela_A(ID, ...)
Transformação Esquema Objeto 
Esquema Relacional
• Associação
– M:N
Classe
Associação
Classe A
M
Tabela_A(ID, ...)
Tabela_B(ID, ...)
Tabela_AB(IDA, IDB, ...)
N
Classe B
Transformação Esquema
Objeto  Esquema Relacional
• Agregação
– Usando o exemplo Catálogo-Brinquedo
• Catálogo(ID, ...)
Brinquedo(ID, ...)
Composto_de(IDC, IDB, ...)
chave
estrangeira
chave
estrangeira
Transformação Esquema
Objeto  Esquema Relacional
• Composição
– Usando o exemplo Universidade-
Departamento
• Universidade(ID, ...)
Departamento(ID, IDU, ...)
–
Regras de Integridade
» Se Universidade.ID = v for removida então
Departamento.IDU = v removido
(“DELETE CASCADE”)
Download

Transformação Esquema Objeto Esquema Relacional