Desenvolver uma ferramenta de apoio ao Projeto - Projetos

Propaganda
UNIVERSIDADE FEDERAL DE SANTA CATARINA
CENTRO TECNOLÓGICO E CIENTÍFICO
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA
CURSO DE BACHARELADO EM CIÊNCIAS DA COMPUTAÇÃO
Uma Ferramenta de Apoio ao
Projeto Lógico de Banco de Dados XML
Relatório de Trabalho de Conclusão do Curso
Claudio de Lima
Prof. Ronaldo dos Santos Mello
Orientador
Florianópolis, novembro de 2007
Uma Ferramenta de Apoio ao
Projeto Lógico de Banco de Dados XML
Relatório de Trabalho de Conclusão do Curso
Claudio de Lima
___________________________________________
Prof. Ronaldo dos Santos Mello, Dr.
Orientador
___________________________________________
Rebeca Schroeder.
Coorientadora
Banca Examinadora:
___________________________________________
Prof. Mário Dantas, PhD.
___________________________________________
Prof. Renato Fileto, Dr.
2
SUMÁRIO
LISTA DE FIGURAS
LISTA DE TABELAS
1. INTRODUÇÃO...............................................................................................6
1.1. Objetivos..........................................................................................6
1.1.1 Geral....................................................................................6
1.1.2 Específicos..........................................................................7
1.2. Motivação e Justificativa..................................................................7
1.3. Trabalhos Correlacionados..............................................................8
1.4. Organização do Trabalho.................................................................9
2. MODELOS DE DADOS...............................................................................10
2.1. Modelo EER...................................................................................10
2.1.1 Superclasses, Subclasses e Herança...............................10
2.1.2 Generalização e Especialização.......................................11
2.1.3 Categorias ou Tipo União..................................................11
2.2. Modelo Hierárquico........................................................................12
2.2.1 Relacionamento Pai-Filho e Esquemas Hierárquicos.......12
2.2.2 Relacionamento Pai-Filho Virtual......................................13
2.3. Modelo Lógico XML.......................................................................13
3. ABORDAGEM DE CONVERSÃO EER-LÓGICO XML..............................17
3.1 Regras de Conversão.....................................................................17
3.1.1 Entidades e Atributos........................................................17
3.1.2 Generalização/Especialização e Categorias.....................18
3.1.3 Relacionamentos...............................................................19
3.2 O processo......................................................................................20
4. A FERRAMENTA........................................................................................23
5. CONSIDERAÇÕES FINAIS........................................................................25
5.1.Trabalhos Futuros...........................................................................25
REFERÊNCIAS
3
LISTA DE FIGURAS
2.1 - Esquema Lógico XML..............................................................................14
2.2 - Esquema Conceitual EER.......................................................................15
4.1 - Esquema de classes do projeto...............................................................23
4
LISTA DE TABELAS
3.1 - Tabela de notações e definições do esquema lógico..............................17
3.2 - Tabela de Prioridades para Aplicação das regras de Generalização e
Categorias........................................................................................................19
3.3 - Tabela de Prioridades para Aplicação das regras de Relacionamentos
Associativos.....................................................................................................20
.
5
1. INTRODUÇÃO
Hoje em dia a linguagem XML (Extensible Markup Language) tem emergido e
se consolidado como um formato de representação de dados. O formato de
documentos XML tem sido um importante mecanismo em muitos contextos de
aplicação. Existem muitos esforços para resolver com a modelagem de dados XML
em diferentes níveis de abstração, alguns deles propõem novos formalismos para
formato de dado XML. No entanto não há consenso sobre metodologias para o
formato de banco de dados XML.
Como no formato tradicional de banco de dados, a modelagem em três níveis
é definida para o formato do banco de dados XML: níveis conceitual, lógico e físico.
Um modelo conceitual tradicional pode ser usado no primeiro nível, como o modelo
Entidade-Relacionamento Estendido (Extended Entity-Relationship – EER). O
modelo de dados XML é considerado no nível lógico, sendo que um esquema
conceitual é convertido para um esquema no modelo lógico XML. Um modelo lógico
XML deve considerar construtores e restrições específicos do modelo de dados
XML, e este deve ser capaz de abstrair diferentes modelos físicos XML, como
Document Type Definition (DTD) e XML Schema.
Este trabalho propõe um processo de conversão para gerar esquemas lógico
XML a partir do esquema conceitual EER. A nossa estratégia de conversão é gerar
estruturas hierárquicas para representar cada um dos tipos de associação EER. Esta
estratégia permite a geração de esquemas lógicos XML que são capazes de serem
convertidos para qualquer modelo físico XML.
O modelo EER foi escolhido como modelo conceitual porque é um modelo
simples e poderoso para prover uma abstração de alto nível para a informação do
domínio de aplicação. E também, EER é o modelo mais utilizado para modelagem
conceitual de banco de dados. Consideramos no processo de conversão todos os
construtores do EER bem como o conceito de categoria ou tipo união.
1.1. OBJETIVOS
1.1.1. GERAL
6
Desenvolver uma ferramenta de apoio ao Projeto Lógico de Banco de Dados
XML, na qual prestará suporte ao processo de conversão de um esquema conceitual
Entidade-Relacionamento Estendido (EER) para um esquema lógico XML.
1.1.2. ESPECÍFICOS
Através da sua interface gráfica (GUI), a ferramenta irá proporcionar ao
usuário criar seu próprio projeto (conceitual) de banco de dados, segundo o modelo
EER. Este projeto desenvolvido pelo usuário será traduzido em um documento XML
que conterá os dados da modelagem criada, e então, será interpretado como a
entrada do processo de conversão. Após o a conversão de todo o esquema a
ferramenta irá disponibilizar o esquema lógico XML como saída. Este modelo lógico
gerado deve suportar a representação hierárquica semi-estruturada do XML, sendo
capaz de abstrair diferentes modelos físicos XML.
1.2. MOTIVAÇÃO E JUSTIFICATIVA
XML é uma linguagem de marcação de padrão aberto, criado por um
grupo de empresas chamado World Wide Web Consortium (W3C) e adequada ao
armazenamento de dados estruturados e semi-estruturados [XML07]. Ela permite
que informações de diferentes sistemas sejam transmitidas através de arquivos que
possuem o formato XML (documentos XML), independente da plataforma utilizada
pelo sistema.
Devido ao crescente uso de dados XML por pessoas e aplicações, existe a
necessidade de um gerenciamento destes documentos XML por Sistemas de
Gerência de Banco de Dados (SGBDs). Atualmente, existem SGBDs para o
gerenciamento de dados XML, porém, estes não são considerados robustos devido
a algumas limitações encontradas, como armazenamento eficiente, segurança,
integridade, acessos simultâneos, metodologias de projeto de bancos de dados
XML, etc [RPBOURRET07].
Como mencionado, um dos tópicos de pesquisa em aberto com relação à
gerência de dados XML é a definição de metodologias para projeto de bancos de
dados XML. No que diz respeito a BDs relacionais, o projeto de um BD envolve três
etapas: (i) a criação de um esquema conceitual que é uma descrição do BD
independente da implementação em um SGBD; (ii) a modelagem lógica, que
7
representa a estrutura de um BD de acordo com um modelo de dados (por exemplo,
o modelo de dados relacional) e; (iii) a modelagem física, que descreve a
implementação do esquema lógico em um SGBD específico (por exemplo, um
SGBD relacional).
A tecnologia XML não possui um padrão de projeto consolidado para a
criação de um BD XML, que é uma categoria recente de BD disponível
comercialmente. Em função disto, uma metodologia de projeto de BD XML está
sendo desenvolvida como dissertação de mestrado no âmbito do Grupo de Banco
de Dados (GBD) da UFSC. A idéia deste Trabalho de Conclusão de Curso (TCC) é
contribuir com esta dissertação através da implementação de uma ferramenta que
preste suporte ao projeto lógico do BD XML.
1.3. TRABALHOS CORRELACIONADOS
Vários trabalhos têm sido propostos para modelagem de dados XML em
diferentes níveis de abstração. Algumas propõem uma tradução do modelo
conceitual tradicional para modelo XML. Outros propõem novos modelos e
formalismos para modelagem de dados XML. Podemos classificar eles em três
categorias de acordo com o modelo que é usado em suas conversões: (i) ER para
linguagem de esquema para XML. (ii) ER para um modelo lógico XML; (iii) novo
modelo conceitual para um modelo XML.
Alguns trabalhos estão inseridos na primeira categoria. [Pigozzo e Quintarelli
2005] propôs um algoritmo para gerar um XML Schema a partir de um esquema ER.
[Choi et al 2003] e [Fong et al 2006] apresentam um processo de conversão para
mapear esquemas EER para DTD Schema.
Outra categoria apresenta a conversão do modelo ER para o modelo lógico
XML. [Elmasri et al 2002] e [Lee et al 2001] convertem esquemas ER para
esquemas lógicos do modelo hierárquico. Este modelo lógico depende apenas da
estrutura baseada em árvore, e não representa o construtor e as restrições do
modelo de dados XML. O trabalho relacionado mais parecido com nosso estende o
modelo ER para representar a principal característica provida pelo XML e descreve
um algoritmo para traduzir um esquema EReX (ER estendido para XML) para um
esquema lógico XML definido por uma gramática [Mani 2004].
8
A última categoria compreende trabalhos que propõem um novo modelo de
formato de dados. Um novo modelo conceitual para XML é proposto por [Embley et
al 2004], chamado C-XML (XML conceitual). C-XML é um modelo equivalente ao
XML Schema e o mapeamento é proposto para esta específica linguagem de
esquema para XML. [Chang et al 2002] propôs uma modelagem XML baseada em
redes semânticas, e [Dobbie et al 2001] apresenta um novo modelo hierárquico para
representação de dados semi-estruturados.
1.4. ORGANIZAÇÃO DO TRABALHO
Este trabalho está dividido em mais quatro capítulos. No capítulo 2 são
apresentados os modelos de dados mais relevantes ao projeto, e que dará suporte
ao entendimento do processo de conversão proposto neste trabalho. O capítulo 3
apresenta uma abordagem de conversão do construtor EER para o modelo lógico
XML, detalhando as regras de conversão, e definindo o processo em que estas
regras serão utilizadas. O capítulo 4 abrange basicamente o projeto da ferramenta e
sua atual versão. No capítulo 5 apresenta quais as atividades a serem realizadas no
restante do desenvolvimento do presente trabalho.
9
2. MODELOS DE DADOS
2.1 MODELO EER
Os conceitos de modelagem ER são suficientes para a representação de
muitos esquemas para as aplicações de bancos de dados “tradicionais”, que
incluem, principalmente, as aplicações de processamento de dados na indústria e no
comércio. Desde o final dos anos 70, entretanto, os projetistas de banco de dados
têm tentado projetar esquemas de banco de dados mais exatos, que reflitam as
propriedades e as restrições dos dados mais precisamente Isso foi particularmente
importante nas, relativamente, recentes aplicações da tecnologia de banco de
dados, como os banco de dados para o projeto de engenharia e manufatura
(CAD/CAM), telecomunicações, sistemas de software complexos e Sistemas de
Informações Geográfica (GIS), entre outras. Muitos desses conceitos também foram
desenvolvidos independentemente, em áreas relacionadas da ciência da
computação, como nas áreas de modelagem de objeto da engenharia de software e
de representação de conhecimento da inteligência artificial.
O modelo EER engloba todos os conceitos de modelagem do modelo ER,
além disso, inclui os conceitos de superclasse e subclasse e os conceitos
relacionados de especialização e generalização, e ainda inclui o conceito de uma
categoria ou tipo união. Associado a esses conceitos está o importante mecanismo
de herança de atributo e relacionamento.
2.1.1. SUPERCLASSES, SUBCLASSES E HERANÇA
Em muitos casos, um tipo entidade tem numerosos subgrupos dessas
entidades, que são significativos e que necessitam ser representados explicitamente,
em virtude de sua importância para a aplicação de banco de dados. Por exemplo, as
entidades que são membros do tipo entidade Empregado podem ser posteriormente
agrupadas em Técnico, Engenheiro, Advogado, Empregado_Assalariado,
Empregado_Horista, e assim por diante. O conjunto de entidades de cada desses
grupos é um subconjunto das entidades que pertencem ao conjunto de entidades
Empregado, significando que toda entidade, é um membro de um desses subgrupos,
é também um empregado. Chamamos cada um desses subgrupos uma subclasse
do tipo Empregado, e do tipo entidade Empregado é conhecido como superclasse
para cada uma dessas subclasses.
Chamamos o relacionamento entre uma superclasse e qualquer uma de suas
subclasses relacionamento superclasse/subclasse (ou classe/subclasse). No
exemplo anterior, Empregado/Advogado é um relacionamento classe/subclasse.
Uma entidade pode ser incluída opcionalmente com membro de várias
subclasses. Por exemplo, um empregado assalariado que também é um advogado,
pertence às duas subclasses, Advogado e Empregado_Assalariado do tipo entidade
Empregado. Entretanto, não é necessário que toda entidade de uma superclasse
seja também membro de alguma subclasse.
Um importante conceito associado a subclasses é o de tipo de herança.
Dizemos que uma entidade, que é um membro de uma subclasse, herda todos os
atributos da entidade como membro da superclasse. A entidade também herda todos
os relacionamentos do qual a superclasse participa.
10
2.1.2. GENERALIZAÇÃO E ESPECIALIZAÇÃO
A especialização é o processo de definir um conjunto de subclasses de um
tipo entidade; este tipo entidade é chamado superclasse da especialização. O
conjunto de subclasses que forma uma especialização é definido como base em
algumas características de distinção das entidades da superclasse. Podemos ter
diversas especializações para o mesmo tipo entidade, baseadas nas diferentes
características que as distinguem. Por exemplo, uma especialização do tipo entidade
Empregado pode produzir os conjuntos de subclasses {Empregado_Assalariado,
Empregado_Horista} e {Técnico, Engenheiro, Advogado}; a primeira especialização
distingue os empregados com base na forma de pagamento, e a segunda com base
no tipo de trabalho.
Há duas razões para incluir relacionamentos classe/subclasse e
especializações em um modelo de dados. A primeira é que certos atributos podem
ser usados em algumas, mas não em todas as entidades da superclasse. Uma
subclasse é definida de forma a agrupar as entidades para as quais esses atributos
se aplicam. Os membros da subclasse podem, ainda, compartilhar a maioria de seus
atributos com os membros da superclasse. A segunda razão para usar as
subclasses é que apenas as entidades que sejam membros de alguma subclasse
possam participar de algum tipo relacionamento.
Em resumo, o processo de especialização nos permite fazer o seguinte: *
definir um conjunto de subclasses de um tipo entidade; * estabelecer atributos
específicos adicionais para cada subclasse; * estabelecer tipos relacionamento
adicionais específicos entre cada subclasse e outros tipos entidade, ou outras
subclasses.
Podemos pensar em um processo contrário de abstração, no qual suprimos
as diferenças entre os diversos tipos entidade, identificamos suas características
comuns e os generalizamos em uma única superclasse, da qual os tipos entidade
originais são subclasses especiais.
Duas restrições importantes podem ser aplicadas a uma especialização (e
generalização). A primeira é chamada restrição de integralidade, que pode ser total
ou parcial. Uma restrição de especialização total especifica que toda entidade na
superclasse deve ser um membro de pelo menos uma das subclasses na
especialização. Já uma restrição de especialização parcial admite-se que uma
entidade não pertença a nenhuma das subclasses. A segunda é a restrição de
disjunção, especificando que as subclasses da especialização devem ser
mutuamente exclusivas. Isto significa que uma entidade pode ser membro de no
máximo uma das subclasses da especialização.
2.1.3. CATEGORIAS OU TIPO UNIÃO
A possibilidade de surgir uma necessidade de modelar um único
relacionamento superclasse/subclasse com mais de uma superclasse, na qual a
superclasse represente os diferentes tipos entidade. Nesse caso a superclasse
representará uma coleção de objetos que é um subconjunto da União de diferentes
tipos entidade; chamamos essa subclasse tipo união ou categoria.
Por exemplo, suponha que tenhamos três tipos de entidade: Pessoa,
Empresa e Banco. Em um banco de dados para o registro de veículos, um
proprietário de um veículo pode ser uma pessoa, um banco (que possui o direito de
alienação de um veículo) ou uma empresa. Necessitamos criar uma classe (coleção
11
de entidades) que inclua entidades de todos os três tipos, para desempenharem o
papel de proprietário do veículo. Uma categoria Proprietário, que é a União dos três
conjuntos de entidade de Banco, Pessoa e Empresa, é criada com este propósito.
O atributo de herança trabalha mais seletivamente quando aplicado às
categorias. Cada entidade Proprietário (exemplo anterior) herda os atributos da
Empresa, do Banco, ou da Pessoa, dependendo da superclasse à qual a entidade
pertence.
Uma categoria pode ser total ou parcial. Uma categoria total controla a união
de todas as entidades em suas superclasses, ao passo que uma categoria parcial
pode controlar um subconjunto da união.
2.2 MODELO HIERÁRQUICO
O modelo de dados hierárquico foi desenvolvido, para modelar vários tipos de
organizações hierárquicas que existem no mundo real. Humanos têm usado
organizações hierárquicas de informação pra ajudar a melhor entender o mundo.
Existem muitos exemplos, como esquemas de classificação para espécies no mundo
das plantas e dos animais e esquemas de classificação de linguagens humana. O
modelo de dados hierárquicos representa organizações hierárquicas de uma forma
direta e natural e pode ser a melhor escolha em algumas situações, mas tem
problemas quando representa situações com relacionamentos não-hierárquicos.
2.2.1. RELACIONAMENTO PAI-FILHO E ESQUEMAS HIERÁRQUICOS
O modelo hierárquico emprega dois conceitos de estruturas de dados
principais: registros e relacionamentos pai-filho. Um registro é uma coleção de
valores de campo que provê informação sobre uma entidade ou uma instância de
relacionamento. Registros do mesmo tipo são agrupados em tipos registro. Ao tipo
registro é dado um nome e sua estrutura é definida por uma coleção de campos
nomeados ou itens de dado. Cada campo tem um certo tipo, com integer ou string.
O tipo relacionamento pai-filho (tipo RPF) é um relacionamento 1:N entre dois
tipos registro. O tipo registro no lado 1 é chamando registro tipo pai, e o lado N é
chamado registro tipo filho do tipo RPF. Uma instancia do tipo RPF consiste em um
registro de um registro tipo pai e um número de registros (zero ou mais) de registros
tipo filhos.
Um esquema de banco de dados hierárquicos consiste em um número de
esquemas hierárquicos. Cada esquema hierárquico (ou hierarquia) consiste em um
número de tipos registro e tipos RPF.
O esquema hierárquico é indicado como um diagrama hierárquico, onde cada
nome dos tipos registro é indicado em caixas retangulares e tipos RPF são indicados
com uma linha conectando o tipo registro pai ao tipo registro filho. Geralmente nos
referimos ao tipo RPF no esquema hierárquico listando o par (tipo registro pai, tipo
registro filho) entre parênteses.
O esquema hierárquico dos tipos registro e RPF devem seguir as seguintes
propriedades:
 Um tipo registro, chamado de raiz (root) do esquema hierárquico, não
participa como tipo registro filho em nenhum tipo RPF.
 Todo tipo registro exceto o raiz participa como tipos registro filho em
exatamente um tipo RPF.
12



O tipo registro pode participar como tipo registro pai muitas vezes (zero ou
mais) em tipos RPF.
O tipo registro que não participa como tipo registro pai em nenhum tipo RPF
é chamado de folha do esquema hierárquico.
Se um tipo registro participa como pai em mais que um tipo RPF, então seus
tipos registros filho são ordenados. A ordem é indicada por convenção da
esquerda para a direita em diagramas hierárquicos.
2.2.2 RELACIONAMENTO PAI-FILHO VIRTUAL
O modelo hierárquico tem problemas quando modela certos tipos de
relacionamentos. Estes incluem os seguintes relacionamentos e situações:
1 - Relacionamentos M:N.
2 - O caso onde o tipo registro participa como filho em mais de um tipo RPF.
3 - Relacionamentos N-ários com mais do que dois participantes tipo registro.
O caso 1 pode ser representado como um tipo RPF com o custo de
duplicação de instâncias de registros do tipo registro filho. O caso 2 também pode
ser representado de forma similar, com mais duplicação de registros. Já o Caso 3
apresenta problema porque o RPF é um relacionamento binário.
Duplicação de registros, além do desperdício de armazenamento, causa
problemas para manter a consistência de cópias duplicadas do mesmo registro. A
idéia é incluir mais do que um esquema hierárquico no esquema de banco de dados
hierárquicos e usar ponteiros dos nodos de um esquema hierárquico para outro para
representar relacionamentos.
O tipo registro virtual (ou ponteiro) é o tipo registro com a propriedade que
cada registro contém um ponteiro para o registro de outro tipo registro virtual. O tipo
registro virtual utiliza filho virtual e pai virtual em RPF virtuais. Cada instância de
registro c de tipo registro virtual aponta para exatamente uma instância registro p do
pai virtual. Ao invés de duplicar o registro do pai virtual em uma árvore de instâncias,
nós incluímos o registro virtual c que contém o ponteiro para p. Diversos registros
virtuais podem apontar para p, mas apenas uma simples copia de p é armazenada
no banco de dados.
O modelo hierárquico oferece muitas opções para representar esquemas ER.
A eficiência no acesso a dados e o limite de redundância versus facilidade de
recuperação são importantes na escolha de uma representação em particular. O
modelo hierárquico é geralmente considerado inferior na capacidade de modelagem
do que no modelo relacional, pelas seguintes razões:
 Relacionamentos M:N pode ser representado apenas adicionando registros
redundantes ou usando relacionamentos pai e filho virtuais e ponteiros de
registro.
 Todo relacionamento na hierarquia deve ser mantido na mesma direção.
 Um registro na hierarquia pode ter dois pais - o real e o virtual.
2.3 MODELO LÓGICO XML
O modelo lógico é definido para representar o modelo de dados XML. Este
modelo não é um novo formalismo de modelagem lógica XML, mas uma adaptação
de modelos hierárquicos para modelagem de dados semi-estruturados.
13
A Figura 2.1 apresenta o esquema correspondente em modelo lógico para o
esquema EER apresentado na Figura 2.2. Introduzimos a notação para elemento
simples (simple element), representado de forma tracejada (como contact).
Um atributo (attribute), representado por um círculo, modela uma propriedade
do elemento que é definido por um valor único. Um atributo tipo normal é uma
propriedade de elemento genérica, como emission. Um atributo tipo identificador é
um atributo que age como um elemento identificador, como code. Um atributo tipo
referência é um atributo que referencia para um ou mais valores de atributos
identificadores e outros elementos, como CICode.
Um elemento complexo (complex element), representado de forma sólida,
modela uma informação que é composta por elementos e/ou atributos. O tipo
suportado do elemento complexo pode ser vazio (empty), livre (free), ou composto
(composite).
Um elemento vazio não possui modelo suportável, como Product e Service.
Um elemento vazio permite qualquer tipo de elementos no seu modelo suportável. E
o elemento composto contém atributos, elementos ou uma mistura de elementos e
valores textuais.
Um elemento composto pode ser misto ou não. Um elemento misto tem um
modelo que suportável que é uma mistura de elementos componentes e valores
textuais, como Customer.
Figura 2.1 : Esquema Lógico XML (Saída).
Um elemento componente (component element) de um elemento composto
são organizados por um de dois construtores de ordem: ordem (order) ou exclusivo
(exclusive). Um construtor de ordem define ‘n’ elementos componentes ordenados,
com ‘n’ >= 1. Um constructor exclusive define ‘n’ alternativas para elementos
componentes, com ‘n’ > 1. Os elementos Customer e ProductService são exemplos
de elementos compostos com construtores de ordem e exclusivo, respectivamente.
Os
relacionamentos
hierárquicos
(hierarchical
relationships)
são
representados por linhas entre o conceito fonte e o conceito alvo. Um
relacionamento define as ocorrências mínima e máxima do conceito alvo no conceito
fonte. O relacionamento entre Order e o componente orderItem é um exemplo: Order
14
pode ter zero ou mais orderItems, e um orderItem deve ser componente do elemento
Order. O default de ocorrências mínima e máxima para conceitos alvo é 1.
Figura 2.2: Esquema Conceitual EER (Entrada).
Para definir as regras de conversão do esquema EER para o esquema lógico
XML, uma notação baseada em tupla foi introduzida no modelo lógico.
O esquema lógico é denotado pela 4-upla s = <SE, A, CE, R>, onde SE é um
conjunto de elementos simples, A é um conjunto de atributos, CE é um conjunto de
elementos complexos e R é um conjunto de relacionamentos binários entre
conceitos. Um elemento simples ‘se’ Є SE é uma 2-upla ‘se’ = <n, dt>, onde ‘n’ é o
label de ‘se’ e ‘dt’ é um tipo de dado ‘se’, com ‘dt’ Є {string, integer, decimal, boolean,
date, time}. Um atributo ‘a’ Є A é a 3-upla ‘a’ = <n, dt, t>, onde ‘n’ é o label de ‘a’, ‘dt’
é o tipo de dado de ‘a’, com ‘dt’ Є {string, integer, decimal, boolean, date, time}, e ‘t’
é o tipo de ‘a, com ‘t’ Є {“normal”, “id”, “reference”}. Um atributo normal é um atributo
‘na’ com ‘na.t’ = “normal”. Um atributo normal denota uma propriedade de elemento
genérico e isso é o valor default para propriedade ‘t’. Um atributo id é um atributo ‘ia’
com ‘ia.t’ = “id”. Um atributo id age como um elemento identificador. Um atributo
reference é um atributo ‘ra’ com ‘ra.t’ = “reference”. Um atributo reference faz
referência para um ou mais valores de atributos id de elementos.
Um elemento complexo ‘ce’ Є CE é uma 3-upla ‘ce’ = <n, t, ct>, onde ‘n’ é um
label do ‘ce’, ‘t’ é o tipo de ‘ce’, com ‘t’ Є {“complex, “root”, “container”}, e ‘ct’ é o tipo
suportado do ‘ce’, com ‘ct’ Є {“empty”, “free”, “composite”}. O valor default para a
propriedade ‘t’ é “complex”. Um elemento root é um elemento complexo ‘rt’ com ‘rt.t’
= “root”. Um elemento container ée um elmento complexo ‘cte’ com ‘cte.t’ =
“container”. Um elemento container encapsula componentes de um elemento
complexo. Um elemento empty é um elemento complexo ‘ece’ com ‘ece.ct’ = “empty”
e sem modelo suportável. Um elemento free é um elemento complexo ‘fce’ com
‘fce.ct’ = “free” e qualquer tipo de elemento do esquema seu modelo suporta. Um
15
elemento composto é um elemento complexo ‘cce’ com ‘cce.ct’ = “composite” e duas
propriedades adicionais ‘m’ e ‘oc’, onde ‘m’, com ‘m’ Є {“true”, “false”}, especifica se
o modelo suportável é misto (mixed) o não, e ‘oc’ denota a construção ordenada
XML para elementos componentes, com ‘oc’ Є {“order, “exclusive”}. O valor default
para propriedade ‘m’ é “false”. Um elemento ordenado ‘or’ é um elemento composto
com ‘or.oc’ = “order”. Um elemento exclusivo ‘ex’ é um elmento composto com
‘ex.oc’ = “exclusive”. O valor default para propriedade ‘oc’ do elemento composto é
“order”.
Um relacionamento binário ‘r’ Є R é uma 4-upla ‘r’ = <s, tg, min, Max>, onde
‘s’ é o elemento fonte, ‘tg’ é o elemento ou atributo alvo, e min e max são
respectivamente, a mínima e máxima ocorrência de ‘tg’ em ‘s’. O relacionamento ‘r’
denota um relacionamento hierárquico, onde ‘r.s’ Є {CE}, ‘r.tg’ Є {SE, A, CE}, ‘r.min’
Є {0,1} e ‘r.max’ Є {1,N}. ‘S’ e ‘TG’ são, respectivamente, o conjunto de elementos
fonte e alvo.
16
3. ABORDAGEM DE CONVERSÃO EER – LÓGICO XML
Este capítulo apresenta uma descrição sucinta das regras de conversão, e o
processo de conversão num todo. A tabela a seguir esquematiza algumas notações
e definições do modelo lógico trabalhados no projeto.
Conceito
Atributo
Propriedades
nome (n), tipo de dado (td)
Notação Gráfica
○ nome
nome (n), tipo de dado (td)

nome
nome (n), tipo de dado (td)
#
○ nome
Atributo
Identificador
Atributo de
referência
Elemento
Simples
Elemento
Complexo
Elemento Vazio
nome (n), tipo de dado (td)
nome
nome (n), tipo de dado (td),
construtor de ordem (co)
nome (n), tipo de dado (td)
nome
nome 
Elemento Livre
nome (n), tipo de dado (td)
nome *
Elemento Misto
nome (n), tipo de dado (td),
construtor de ordem (co)
Origem (o), destino (d),
cardinalidade mínima (min) e
cardinalidade máxima (max)
default: min=1 e max=1 [1..1]
o  {EC, EV, EL, EM}
Relacionamento
Restrição de
Identificação
Restrição de
Referência
Nome do elemento a ser
identificado, lista de atributos
identificadores
Nome do elemento que faz a
referência, lista de atributos
referência, nome da restrição de
identificação a que se refere
nome
nome
nome1 ○nome2
○nome3
[0..1]
key(Elemento) =
{atributoIdentificador1,
atributoIdentificador_N}
Elemento
(atributoReferencia1,
atributoReferencia_N)
refer key(Elemento)
Tabela 3.1 – Notações e definições do esquema lógico.
3.1 REGRAS DE CONVERSÃO
As regras de conversão são propostas para conversão do construtor do
esquema EER para a representativa composição lógica XML. Estas regras são
propostas em três partes: (1) Regras para Entidade e Atributos; (2) Regras para
Generalização/Especialização e Categorias; (3) Regras para Relacionamento. A
seguir será descrito sucintamente cada uma das três partes.
3.1.1. ENTIDADES E ATRIBUTOS
As regras de conversão de entidades e atributos são relativamente simples:
para uma entidade criar um elemento; para atributo mono-valorado obrigatório,
17
incluí-lo como atributo do seu respectivo elemento, se for opcional atribuir a
cardinalidade [0..1]; para atributo multi-valorado criar sub-elemento (simples) para
esse atributo, e no construtor de ordem do seu respectivo elemento (entidade
convertida) torná-lo “ordered” e atribuir a cardinalidade [0..n]; para atributo composto
mono-valorado, incluir “cada atributo” como atributo do seu respectivo elemento, se
for multi-valorado criar um sub-elemento e incluir neste, “cada atributo”; para atributo
identificador, adicioná-lo como atributo identificador do seu respectivo elemento e
criar uma restrição de identificação (para uso posterior).
3.1.2. GENERALIZAÇÃO/ESPECIALIZAÇÃO E CATEGORIAS
A seguir são apresentadas, sucintamente, as regras para conversão aplicadas
à generalização/especialização e categorias, e em seguida a tabela de prioridades
para aplicação de tais regras.
Regra 1:
Criar elementos para superclasse e subclasse (se já não foram criados). Se
for disjunta tornar o construtor de ordem do elemento da superclasse “exclusive”,
senão “ordered”. Se for parcial a cardinalidade dos elementos das subclasses deve
ser [0..1], senão [1..1].
Se superclasse já havia sido convertida e o elemento que a representa é
exclusivo, criar um sub-elemento agrupador (com construtor de ordem “exclusive”)
para a superclasse e coloque como sub-elementos do agrupador todos os subelementos que já existiam. Então proceda a conversão da generalização em
questão: se a generalização em questão é exclusiva, então crie um outro subelemento agrupador (com construtor de ordem “exclusive”) para a superclasse e
coloque todos os elementos para representar as subclasses como filhos desse
agrupador.
Pré-condições: Pelo menos uma subclasse não foi processada por outra
generalização/categoria como filha de outro elemento; Obs.: Para as demais que já
foram processadas como filha de outro elemento, deve-se criar atributos de
referência para estes elementos.
Observação: Ao se tratar da conversão de uma categoria, lembrar que os
papéis das superclasses e subclasse devem ser invertidos para esta regra. Isto é, o
elemento que representa a subclasse deve ser o elemento pai dos elementos que
representam as superclasses.
Regra 2:
Criar elementos somente para as subclasses. Em cada elemento da
subclasse adicionar os atributos da superclasse.
Pré-condições: As subclasses não foram processadas por outra
generalização/categoria como filhas de outros elementos; O número de atributos da
superclasse ser menor ou igual ao número máximo de atributos que uma
superclasse/conjunto de subclasses pode ter; O número de relacionamentos
associativos com a superclasse deve ser menor ou igual ao número máximo de
relacionamentos associativos que uma superclasse pode ter.
Pós-condições: Um mesmo valor para o atributo identificador da superclasse
não deve ser assumido por ambas as subclasses (somente se ocorre disjunção,
para generalização); Outros relacionamentos com a superclasse devem ser
mapeados para cada uma das subclasses; Se houver disjunção na generalização,
18
os atributos que eram identificadores nas subclasses (se existirem) tornam-se
atributos simples, e os atributos que eram identificadores na superclasse, tornam-se
os atributos identificadores dos elementos das subclasses, senão, se existiam
atributos identificadores para as subclasses eles se tornam os identificadores dos
elementos criados, e os identificadores da superclasse tornam-se atributos simples
(ocorre em categorias). Caso contrário ocorre o mesmo processo com disjunção.
Observação: Ao se tratar da conversão de uma categoria, lembrar que os
papéis das superclasses e subclasse devem ser invertidos para esta regra. Isto é,
deve-se apenas representar as superclasses através de elementos.
Regra 3:
Criar um elemento apenas para a superclasse. Adicionar neste elemento os
atributos das subclasses como opcional. Adicionar um elemento simples TYPE com
uma cardinalidade que represente as restrições ([0..1] se for parcial e disjunta; [0..n]
se for parcial e compartilhada; [1..1] se for total e disjunta; [1..n] se for total e
compartilhada.)
Pré-condições: As subclasses não foram processadas por outras
generalizações/categorias como filhas de outros elementos; Subclasses não podem
ter outros relacionamentos (associativos, generalização ou categorias); A somatória
de atributos de subclasse deve ser menor ou igual ao número máximo de atributos
que uma superclasse/conjunto de subclasses pode ter.
Pós-condições: A aplicação deverá tratar e garantir a disjunção (se existir)
entre atributos das subclasses (com base no atributo TYPE); Os atributos que eram
identificadores nas subclasses (se existirem), tornam-se atributos simples.
Observação: Ao se tratar da conversão de uma categoria, lembrar que os
papéis das superclasses e subclasse devem ser invertido para esta regra. Isto é,
deve-se apenas representar a subclasse através de elemento.
Regra 4:
Criar elementos para superclasse e subclasses. No elemento da superclasse
criar atributos de referência para as subclasses. Nos elementos das subclasses criar
atributo de referência para a superclasse.
Tipo Generalização
Total e Compartilhada
Total e Disjunta
Parcial e Compartilhada
Parcial e Disjunta
Tipo Categoria
Total
Parcial
Regra 1
3º
2º
2º
Regra2
2º
-
Regra 3
1º
1º
1º
1º
Regra 4
2º
4º
3º
3º
3º
-
2º
1º
1º
-
4º
2º
Tabela 3.2 - Prioridades para Aplicação das Regras de Generalização e Categorias.
3.1.3. RELACIONAMENTOS
A seguir são apresentadas, sucintamente, as regras para conversão aplicadas
à relacionamentos associativos, e em seguida a tabela de prioridades para aplicação
de tais regras.
Regra 1:
19
É criado um elemento único para representar E1 (entidade 1) e E2 (entidade
2).
Pré-condições: Ser relacionamento binário; E2 não foi processada por outros
relacionamentos associativos como um sub-elemento de outro elemento, ou por
fusão com outro elemento.
Regra 2:
São criados elementos para representar cada entidade envolvida no
relacionamento. E1 torna-se o elemento pai de E2. A cardinalidade de E2 em E1
deve ser definida conforme a sua cardinalidade definida para esse relacionamento
no esquema conceitual. Os tributos do relacionamento ficam em E2.
Se o elemento que representa E1 já havia sido criado como exclusivo, criar
um sub-elemento agrupador (com construtor de ordem “exclusive”) para E1 e
coloque todos os sub-elementos que existiam como filhos do agrupador.
Pré-condições: E2 não foi processada por outros relacionamentos
associativos como um sub-elemento de outro elemento, ou por fusão com outro
elemento.
Regra 3:
É criado um elemento para representar E1 e outro elemento para representar
o relacionamento juntamente com seus atributos. O elemento do relacionamento se
torna filho de E1. São criados elementos à parte para as demais entidades
participantes do relacionamento. A associação com esses elementos (demais
entidades participante) é estabelecida por meio de atributos de referência no
elemento que representa o relacionamento.
Se o elemento que representa E1 já havia sido criado como exclusivo, criar
um sub-elemento agrupador (com construtor de ordem “exclusive”) para E1 e
coloque todos os sub-elementos que existiam como filhos do agrupador.
Tipo
Relacionamento
(0,1) – (0,1)
(0,1) – (1,1)
(1,1) – (1-1)
Regra 1
1º
1º
Alternativas de Mapeamento
Regra 2
2º
2º
Regra 3
1º
3º
3º
(0,1) – (0,N)
(0,1) – (1,N)
(1,1) – (0,N)
(1,1) – (1,N)
-
1º
1º
1º
1º
2º
2º
N–N
N-ários (n>2)
-
-
1º
1º
Tabela 3.3 - Prioridades para Aplicação das Regras de Relacionamentos Associativos.
3.2 O PROCESSO
O processo de conversão é baseado em um algoritmo que promove uma
seqüência de procedimentos de conversão. Este algoritmo está estruturado,
atualmente, da seguinte forma:
20
ALGORITMOEER2XML
ENTRADA:
- Um esquema conceitual EER (EC);
- Uma entidade de partida (ENTIDADE_PARTIDA);
- Número máximo de atributos que uma superclasse/conjunto de subclasses pode ter (MAX_ATT);
- Número máximo de relacionamentos associativos que uma superclasse pode ter (MAS_REL);
SAÍDA: Um esquema lógico XML (EL);
INICIO
GENERAL_CAT := conjunto de generalizações do EC {G1,G2,…,Gn} + conjunto de categorias do
EC {C1,C2,…,Cn};
/*Cada objeto de GENERAL_CAT já se encontra ordenado, no caso de existir uma hierarquia de
multi-nível*/
converterGeneralizacoesCategorias(GENERAL_CAT);
RELACIONAMENTOS := conjunto de relacionamentos do EC {R1,R2,…,Rn};
converterRelacionamentos(RELACIONAMENTOS);
definirElementoRoot(EL);
END;
PROCEDIMENTO converterGeneralizacoesCategorias(GENERAL_CAT)
INICIO
ENQUANTO existir Gi em GENERAL_CAT não processada FAÇA
INÍCIO
/* Escolher a melhor regra a ser aplicada, considere:
a) O tipo de generalização/categoria;
b) a tabela de prioridades das regras para cada tipo;
c) precondições das regras. */
Marque Gi como processada;
FIM
FIM
PROCEDIMENTO converterRelacionamentos(RELACIONAMENTOS, ENTIDADE_PARTIDA)
INICIO
ENQUANTO existir Ri em RELACIONAMENTOS não processado FACA
INICIO
SE ENTIDADE_PARTIDA não está marcada como processada ENTAO
INICIO
Marque ENTIDADE_PARTIDA como entidade de continuação;
Marque ENTIDADE_PARTIDA como entidade de primeiro nível do EL;
FIM
SENÃO
INICIO
SE existe alguma entidade não processada ENTAO
INICIO
Marque tal entidade como entidade de continuação;
Marque tal entidade como entidade de primeiro nível do EL;
FIM
SENAO
INICIO
Obtenha um Ri não processado e marque uma de suas entidades
participantes como entidade de continuação;
Marque tal entidade como entidade de primeiro nível do EL;
FIM
FIM
ENQUANTO existir Ri não processado envolvendo uma entidade marcada
como entidade de continuação FAÇA
INÍCIO
21
E1 := entidade de continuação
SE (Ri é binário) E ((E1 tem maxCard=N) OU (E1 e E2 tem maxCar=1)) E
(E2 não é uma entidade associativa não-processada)
ENTAO
INICIO
/* Para escolher a melhor regra a ser aplicada para o
Ri, considere:
a) o tipo de relacionamento
b) a tabela de prioridades das regras para cada tipo;
c) precondições das regras. */
SE E2 tem minCard=1 e maxCard=1 ENTAO
INICIO
Marque E2 como uma entidade de continuação;
FIM
FIM
SENAO
INICIO
Aplique regra RR3;
FIM
Marque Ri e todas as entidades envolvidas nele como processados;
FIM
FIM
FIM
PROCEDIMENTO definirElementoRoot(EL)
INÍCIO
SE somatório de elementos de primeiro nível de EL for maior que 1
ENTAO
INICIO
Crie um novo elemento para representar o root, e defina todos os
elementos de primeiro nível do esquema como filhos do elemento
root;
FIM
SENAO
INICIO
Defina o único elemento de primeiro nível como elemento root do
EL;
FIM
FIM
22
4. A FERRAMENTA
A ferramenta tem como objetivo contribuir com a dissertação de mestrado (em
desenvolvimento na UFSC) e visa dar suporte ao processo de conversão de um
esquema conceitual Entidade-Relacionamento Estendido (EER) para um esquema
lógico XML.
A ferramenta está sendo desenvolvida na linguagem de programação Java,
com o uso da IDE Netbeans. A formato de dados XML é gerado como entrada do
processo de conversão a partir do projeto conceitual criado, e também
posteriormente como saída para disponibilizar o modelo lógico XML gerado.
As atividades de implementação serão desenvolvidas em 3 etapas, a partir do
processo de conversão apresentado em capítulos anteriores. A primeira tratou da
implementação de módulos dos (construtores) modelos EER e lógico XML, das
regras de conversão do modelo EER para o modelo lógico XML, e por fim foram
realizados alguns testes. A segunda etapa, que atualmente está em
desenvolvimento, trata da implementação do Processo em si, ou seja, ocorre a
manipulação dos módulos da primeira etapa para criar o Processo de Conversão
num todo. Na etapa três será desenvolvida a interface gráfica (GUI) da ferramenta.
A seguir é apresentado o diagrama de classes do projeto, de forma
esquemática e simplificada e da atual versão da ferramenta:
Figura 4.1: Esquema de classes do projeto.
O pacote “EERmodel” contém as classes que tratam do construtor do EER, já
o pacote “XMLmodel” possui os elementos que serão gerados a partir do primeiro. E
o pacote “ConversionRules” é quem faz a tradução do primeiro para o segundo, ou
seja, ele trata das regras de conversão. É importante ressaltar que as classes de
Category
e
GeneralizationSpecialization
implementam
a
interface
MultiLevalHierarchy,
que
é
responsável
por
ordenar
categorias
e
generalizações/especializações em níveis.
23
Como entrada, temos um documento XML que contém o projeto conceitual
(EER) que será traduzido para os respectivos elementos contidos no pacote
“EERmodel”, e que por fim será tratado pelo processo (ConversionProcess).
O processo interage basicamente com as regras de conversão (pacote
“ConversionRules”) e ao fim do processo de conversão, deverá gerar um documento
XML como saída, de acordo com o modelo lógico XML proposto neste trabalho.
24
5. CONSIDERAÇÕES FINAIS
5.1 TRABALHOS FUTUROS
Como atividades previstas para Projetos II, estão a finalização da
implementação do processo de conversão, seguido de muitos testes, e
posteriormente, a inclusão da interface gráfica (GUI). O detalhamento do
desenvolvimento da ferramenta será incluído no capítulo 4 e, finalmente, a inclusão
das conclusões obtidas com o desenvolvimento do trabalho para finalizar a
monografia.
25
REFERÊNCIAS
SCHROEDER, Rebeca. MELO, Ronaldo dos Santos. A Conversion Process
of EER Conceptual Schemas to XML Logical Schemas. Florianópolis,
2007. GBD – UFSC.
SCHROEDER, Rebeca. Abordagem de Conversão de Esquemas
Conceituais EER para Esquemas Lógicos XML. Florianópolis, maio 2007.
GBD – UFSC.
BARCAROLI, Velcir. MELO, Ronaldo dos Santos. Análise Comparativa de
Linguagens de Consulta para Banco de Dados XML Nativos.
Florianópolis, mar. 2005. GBD – UFSC.
ELMASRI, Ramez. NAVATHE, Shamkant. Sistemas de Banco de Dados. 4ª
edição. São Paulo, 2005. Pearson / Prentice Hall.
[RPBOURRET, 2007] XML and Databases. Disponível em: <http://www.
rpbourret.com/xml/XMLAndDatabases.htm>. Acesso em: 22 abr. 2007.
[XML, 2007] Extensible Markup Language (XML). Disponível em: <http://
www.w3.org/XML>. Acesso em: 22 Abr. 2007.
W3C Schools. XML Tutorials. Disponível em: <http://www.w3schools.com/
xml>. Acesso em: 15 jun. 2007 .
Pigozzo, P. and Quintarelli, E. (2005). An algorithm for generating XML
26
Schema
from ER Schemas. In Italian Symposium on Advanced
Database
Systems, pages
192-199, Brixen-Bressanone, Italy.
Fong, J., Fong, A., Wong, H. and Yu, P. (2006). Translating Relational
Schema
with Constraints into XML schema. In International Journal of
Software
Engineering and Knowledge Engineering, pages 201-244.
Choi, M., Lim, J. and Joo, K. (2003). Developing a Unified Design
Methodology
Based on Extended Entity-Relationship Model for
XML. In International
Conference on Computational Science, pages 920-
929, Melbourne, Australia and
St. Petersburg, Russia. Springer.
Elmasri, R., Wu, Y., Hojabri, B., Li, C. and Fu, J. (2002). Conceptual
Modeling for Customized XML Schemas. In International Conference on
Conceptual Modeling (ER2002), pages 429-443, Tampere, Finland. SpringerVerlag.
Lee, M., Lee, S., Ling, T., Dobbie, G. and Kalinichenko, L. (2001). Designing
Semistructured Databases: A Conceptual Approach. In International
Conference on Database Expert Systems Applications (DEXA2001), pages
12-21, Munich, Germany. Springer-Verlag.
Mani, M. (2004). EReX: A Conceptual Model for XML. In International XML
Database Symposium, pages 128-142, Toronto, Canada. Springer-Verlag.
Chang, E., Dillon, T. and Feng, L. (2002). A Semantic Network-Based
Design Methodology for XML Documents. In ACM Transactions on
Information Systems, pages 390-421. ACM.
Embley, D., Liddle, S. and Kamha, S. (2004). Enterprise Modeling with
Conceptual XML. In International Conference on Conceptual Modeling
(ER2004),
pages 150-165, Shanghai, China. Springer-Verlag.
Dobbie, G., Xiaoying, W., Ling, T. and Lee, M. (2001). ORA-SS: An ObjectRelationship-Attribute Model for Semi-Structured Data. Technical Report
TR21/00 – National University of Singapore.
27
Download