• Nenhum resultado encontrado

Algoritmo 18: ATEER2Rel Transformação de Esquema EER em Esquema

4.3 Algoritmo para execução do Catálogo

O Algoritmo para especificar a Transformação de Esquema EER em Esquema Relacional (ATEER2Rel) (cf. Algoritmo 18) define a lógica que permite executar as regras de transformações em uma ordem correta. Para isto, com base nas dependências estruturais discutidas na Seção 4.1, este Algoritmo inicia transformando as Entidades Regulares, pois estas não têm nenhuma dependência estrutural. Na sequência, o Algoritmo transforma as construções EER que podem ter dependência de identificação encadeada. Por fim, indistintamente, as construções com dependência de identificação final ou dependência de associação são executadas. A classificação dos algoritmos quanto à dependência estrutural é ilustrada no Diagrama de Classes na Figura 30 e ordem de execução destes algoritmos pelo Algoritmo ATEER2Rel é apresentada no Diagrama de Atividade na Figura 31. Vale ressaltar que os algoritmos que transformam construções encadeadas (i.e, Algoritmos ATH, ATHD, ATC, ATRI, ATEARB e ATEARN) podem ser executados várias vezes até que todas as construções encadeadas sejam transformadas. Isto é, estes algoritmos são executados enquanto existir construção com dependência de identificação encadeada sem ser transformada.

Figura 30 - Dependência Estrutural.

Figura 31 – Algoritmo 18: Ordem de Execução.

Fonte: Autor (2015).

Para simplificar a especificação e explicação do Algoritmo 18 é utilizada

a função

hasChainedDependencies(e:EERMM::Schema,r:IMM::Eschema):boolean (cf. linha 2), que retorna um valor lógico e tem como entrada dois parâmetros: 1) o esquema EER a ser transformado e 2) a atual versão do esquema Relacional que está sendo transformado. Esta função é utilizada para verificar se existem construções EER com dependências estruturais de identificação encadeada que ainda não foram transformadas, retornando verdadeiro caso encontre alguma construção que ainda não foi transformada ou falso caso não existam mais estruturas a serem transformadas por estes algoritmos.

Algoritmo 18: ATEER2Rel –Transformacão de Esquema EER em Esquema Relacional

Input: eerSchema : EERMM::Schema; Output: rdbSchema: IMM::Schema;

1. rdbSchema ← ATER(eerSchema); /* Entidade Regular*/ 2. while (hasChainedDependencies (eerSchema, rdbSchema) = true) do

3. rdbSchema ← ATRI(eerSchema, rdbSchema); /* Relacionamento Identificador*/ 4. rdbSchema ← ATH(eerSchema, rdbSchema); /* Herança Disjunta ou Sobreposta*/ 5. rdbSchema ← ATHD(eerSchema, rdbSchema); /* Herança Direta*/

6. rdbSchema ← ATC(eerSchema, rdbSchema); /* Categoria*/

7. rdbSchema ← ATEARB(eerSchema, rdbSchema); /* Entidade associativa Binário*/ 8. rdbSchema ← ATEARN(eerSchema, rdbSchema); / * Entidade associativa N-ário*/ 9. end while

10. rdbSchema ← ATRB11(eerSchema, rdbSchema); /* relacionamento Binário 1:1*/ 11. rdbSchema ← ATRB1N(eerSchema, rdbSchema); /* Relacionamento Binário 1:N*/ 12. rdbSchema ← ATRBNN(eerSchema, rdbSchema); /* Relacionamento Binário N:N*/ 13. rdbSchema ← ATRN(eerSchema, rdbSchema); /* Relacionamento N-ário */ 14. rdbSchema ← ATRU11(eerSchema, rdbSchema); /* Relacionamento Unário 1:1*/ 15. rdbSchema ← ATRU1N(eerSchema, rdbSchema); /* Relacionamento Unário 1:N*/ 16. rdbSchema ← ATRUNN(eerSchema, rdbSchema); /* Relacionamento Unário N:N*/ 17. return rdbSchema;

No Algoritmo 18, tem-se como entrada um esquema EER a ser transformado e como saída o esquema Relacional correspondente ao esquema EER transformado. O corpo do algoritmo inicia com a execução do algoritmo para transformar Entidades Regulares (ATER - cf. linha 1). Na sequência, em uma estrutura de laço, a função hasChainedDependencies é usada para verificar se existem dependências estruturais de identificação encadeada no esquema EER que ainda não foram transformadas para o atual esquema Relacional. Caso o resultado da análise for verdadeiro, os algoritmos classificados como com dependência estrutural encadeadas são executados e, ao final destas execuções, a função hasChainedDependencies é novamente testada. Caso o resultado da análise de hasChainedDependencies for falso, significa que não existem mais estruturas de identificação encadeada a serem transformadas e, consequentemente, a estrutura de laço chega ao fim. Em seguida, os algoritmos classificados como com dependência de identificação final (i.e, ATRBNN, ATRN e ATRUNN) e associação (i.e, ATRB11, ATRB1N, ATRU11 e ATRU1N) são executados. Por fim, o esquema Relacional é retornado.

4.4 Considerações Finais

Neste Capítulo foram apresentadas as dependências entre os construtores do Modelo EER, a taxonomia da dependência estrutural entre estes construtores, o Catálogo de regras para transformação de esquema EER em esquema Relacional, a classificação destas regras de acordo com a dependência estrutural e o algoritmo para automatizar a execução destas regras. As regras do Catálogo são definidas com foco nas restrições de Participação de Relacionamento, na restrição de Disjunção em Herança e na restrição de Completude em Categoria e Herança. Vale ressaltar que para

garantir estas restrições é necessário o uso de Assertivas ou Gatilhos no esquema Relacional.

No Quadro 11, têm-se as nove características de avaliação definidas no Capítulo 3 para comparar o Catálogo com os trabalhos apresentados ao longo daquele capítulo. Em relação a esses trabalhos, o Catálogo caracteriza-se como uma proposta nova, que visa contribuir como uma solução MDD para preservação das restrições de Participação, Disjunção e Completude na transformação de esquemas EER em esquemas Relacionais. No próximo capítulo são apresentados detalhes técnicos relacionados a especificação do Catálogo em uma ferramenta.

Quadro 11 - Análise Comparativa entre os trabalhos avaliados.

Em b le y e Mo k Ha in au t C u ad ra et a l. Ed so n S ilv a

Relacionamento Binário (Participação) Parcial Parcial Sim Sim

Relacionamento N-ário (Participação) Parcial Parcial Sim Sim

Relacionamento Unário (Participação) Parcial Parcial Sim Sim

Relacionamento Identificador

(Participação) Parcial Não Não Sim

Entidade Associativa (Participação) Não Não Não Sim

Herança (Restrição de Disjunção) Não Não Não Sim

Herança (Restrição de Completude) Não Não Não Sim

Categoria (Restrição de Completude) Não Não Não Sim

Baseado em MDD Não Sim Não Sim

% Sim 0% 11,1% 33,3 100% % Não 55,5% 55,5% 66,6 0% % Parcial 44,4% 33,3% 0% 0% Fonte: Autor (2015). Características de Avaliação Trabalhos

5 Avaliação

Este capítulo avalia o Catálogo de regras para transformação do Modelo EER para o Modelo Relacional. O objetivo da avaliação é mostrar, com exemplos, que: 1) As regras são computáveis através de uma ferramenta; e 2) considerando as dependências estruturais e restrições de Participação, Disjunção e Completude, a execução dessas regras produz código SQL- Relacional correspondente ao esquema EER modelado. Para isso, nove cenários de avaliação (i.e., esquemas EER) foram transformados em códigos SQL-Relacional, os quais têm sua sintaxe e semântica conferidas por especialistas. Para alcançar este fim, este capítulo é organizado da seguinte forma: a Seção 5.1 apresenta uma visão arquitetural de como o Catálogo foi implementado na ferramenta EERCASE; na Seção 5.2 são apresentados os cenários de avaliação e na Seção 5.3 são apresentadas as considerações finais do capítulo.