universidade federal de santa catarina

Propaganda
UNIVERSIDADE FEDERAL DE SANTA CATARINA
CENTRO TECNOLÓGICO
DEPARTAMENTO DE INFORMÁTICA E ESTATÍSTICA
CURSO DE SISTEMAS DE INFORMAÇÃO
Uma Ferramenta de Apoio à Normalização de Tabelas Baseada na Análise dos
Dados
Aluno: Michel Leite de Ávila
Orientador: Ronaldo Santos Mello
Florianópolis, SC
Junho de 2007
SUMÁRIO
LISTA DE TABELAS ........................................................................................................................................... 4
LISTA DE FIGURAS ........................................................................................................................................... 5
LISTA DE REDUÇÕES ....................................................................................................................................... 6
1
2
INTRODUÇÃO ............................................................................................................................................ 7
1.1
VISÃO GERAL ....................................................................................................................................... 7
1.2
OBJETIVOS ............................................................................................................................................ 9
1.2.1
Geral ................................................................................................................................................ 9
1.2.2
Específicos ....................................................................................................................................... 9
1.3
JUSTIFICATIVA .................................................................................................................................... 10
1.4
METODOLOGIA.................................................................................................................................... 10
1.5
ESTRUTURA DO TRABALHO ................................................................................................................ 11
FUNDAMENTAÇÃO TEÓRICA ............................................................................................................ 13
2.1
2.1.1
Visão Geral .................................................................................................................................... 13
2.1.2
Engenharia Reversa de Arquivos .................................................................................................. 13
2.2
DEPENDÊNCIA FUNCIONAL ................................................................................................................. 15
2.2.1
Visão Geral .................................................................................................................................... 15
2.2.2
Dependência Funcional Total ....................................................................................................... 16
2.2.3
Dependência Funcional Parcial .................................................................................................... 16
2.2.4
Dependência Funcional Transitiva ou Indireta ............................................................................. 17
2.2.5
Dependência Funcional Multivalorada ......................................................................................... 18
2.2.6
Dependência Funcional de Sub-Domínio ...................................................................................... 18
2.2.7
Anomalias de Alteração ................................................................................................................. 19
2.3
3
ENGENHARIA REVERSA....................................................................................................................... 13
O PROCESSO DE NORMALIZAÇÃO ....................................................................................................... 20
TRABALHOS RELACIONADOS ........................................................................................................... 26
3.1
A INDEPENDÊNCIA FUNCIONAL NA NORMALIZAÇÃO DE BANCOS DE DADOS RELACIONAIS. .............. 26
3.2
ENGENHARIA REVERSA DE BANCOS DE DADOS RELACIONAIS: ALGORITMOS PARA EXTRAIR
RESTRIÇÕES DE CARDINALIDADE. ..................................................................................................................... 28
4
5
3.3
EXTRAINDO O DIAGRAMA ER DE BANCOS DE DADOS LEGADOS. ....................................................... 29
3.4
CONSIDERAÇÕES FINAIS ..................................................................................................................... 31
A FERRAMENTA ..................................................................................................................................... 32
4.1
FUNCIONAMENTO GERAL.................................................................................................................... 32
4.2
TECNOLOGIAS UTILIZADAS ................................................................................................................. 33
4.3
MÓDULOS ........................................................................................................................................... 34
4.3.1
Módulo de Importação .................................................................................................................. 34
4.3.2
Módulo de Análise Preliminar....................................................................................................... 35
4.3.3
Módulo de Ajuste ........................................................................................................................... 36
4.3.4
Módulo de Eleição de Chave Primária ......................................................................................... 36
4.3.5
Módulo de Normalização .............................................................................................................. 37
ATIVIDADES FUTURAS......................................................................................................................... 41
LISTA DE TABELAS
TABELA 1: EXEMPLO DE DEPENDÊNCIA FUNCIONAL. ............................................................................................ 15
TABELA 2: EXEMPLO DE DEPENDÊNCIA FUNCIONAL TOTAL. ................................................................................. 16
TABELA 3: EXEMPLO DE DEPENDÊNCIA FUNCIONAL PARCIAL............................................................................... 17
TABELA 4: EXEMPLO DE DEPENDÊNCIA FUNCIONAL TRANSITIVA OU INDIRETA. ................................................... 17
TABELA 5: EXEMPLO DE DEPENDÊNCIA FUNCIONAL MULTIVALORADA. ............................................................... 18
TABELA 6: EXEMPLO DE DEPENDÊNCIA FUNCIONAL DE SUB-DOMÍNIO. ................................................................ 19
TABELA 7: EXEMPLO DE ATRIBUTO MULTIVALORADO. .......................................................................................... 22
TABELA 8: ISOLAMENTO DOS DADOS DA UF. ......................................................................................................... 22
TABELA 9: EXEMPLO DE ELIMINAÇÃO DE ATRIBUTOS MULTIVALORADOS. ............................................................. 23
TABELA 10: EXEMPLO DE DEPENDÊNCIA FUNCIONAL PARCIAL. ............................................................................ 23
TABELA 11: RESULTADO DA APLICAÇÃO DA 2FN. ................................................................................................. 23
TABELA 12: RESULTADO DA APLICAÇÃO DA 2FN. ................................................................................................. 24
TABELA 13: EXEMPLO DE DEPENDÊNCIA FUNCIONAL TRANSITIVA OU INDIRETA. ................................................. 24
TABELA 14: RESULTADO DA APLICAÇÃO DA 3FN. ................................................................................................. 24
TABELA 15: RESULTADO DA APLICAÇÃO DA 3FN. ................................................................................................. 25
TABELA 16: EXEMPLO DE INDEPENDÊNCIA FUNCIONAL. ....................................................................................... 27
TABELA 17: NOTAÇÃO MER VS NOTAÇÃO MPC .................................................................................................. 29
TABELA 18: EXEMPLO GERAL DE DF. .................................................................................................................... 38
TABELA 19: RESULTADO DA ANÁLISE DE RELACIONAMENTOS. .............................................................................. 39
LISTA DE FIGURAS
FIGURA 1: ENGENHARIA REVERSA DE ARQUIVOS .................................................................................................. 15
FIGURA 2: AS FORMAS NORMAIS E SUAS INTERDEPENDÊNCIAS. ............................................................................ 21
FIGURA 3: FUNCIONAMENTO GERAL DA FERRAMENTA. .......................................................................................... 32
FIGURA 4: MÓDULO DE IMPORTAÇÃO. ................................................................................................................... 34
FIGURA 5: MÓDULO DE ANÁLISE PRELIMINAR ....................................................................................................... 36
LISTA DE REDUÇÕES
SGBD
Sistema de Gerenciamento de Bancos de Dados
ER
Entidade-Relacionamento
MER
Modelo Entidade-Relacionamento
MRP
Modelo Restrição de Participação
XML
Extended Markup Language
ñn
Não normalizada
DF
Dependência Funcional
1
INTRODUÇÃO
1.1
Visão Geral
A normalização de tabelas foi proposta por Edgar Frank Codd, em 1970,
juntamente com o próprio modelo de dados relacional, como uma técnica para
eliminar redundâncias de informações e evitar anomalias causadas pela inserção,
atualização e remoção de registros [1]. A aplicação desta técnica não é trivial,
exigindo conhecimento sobre formas normais e dependências funcionais, além da
teoria de bancos de dados relacionais. O sucesso da normalização depende,
também, da intimidade do projetista com o domínio dos dados.
O cerne da normalização reside na identificação de dependências funcionais,
que são relacionamentos especiais entre entidades e atributos, e serão explicadas
em detalhes no capítulo 2. Uma vez identificadas, as dependências funcionais são
eliminadas sistematicamente, de acordo com sua classificação, através da
decomposição das entidades em entidades mais simples. Essa decomposição é um
simples mapeamento padrão entre tipos de dependências funcionais e operações de
decomposição de entidades, de tal sorte que a automatização total desta tarefa só
não é possível em virtude da alta dependência humana durante a identificação de
dependências funcionais.
A normalização é parte fundamental da engenharia reversa de arquivos de
dados, conhecida também como projeto de banco de dados bottom-up, onde, em
linhas gerais, parte-se de um modelo já implementado em direção aos conceitos que
o geraram [2]. A engenharia reversa é uma funcionalidade muito comum em
ferramentas de modelagem de bancos de dados, como ERwin (Computer
Associates), ER Studio (Embarcadero), DB Designer (fabFORCE), Toad Data
Modeler (Quest Software), entre outras. Essas ferramentas são capazes de
automatizar grande parte do processo de transporte dos dados de seus arquivos
originais para o banco de dados de destino, gerar o modelo lógico e, por fim, gerar o
modelo conceitual. A automatização que estas ferramentas oferecem, no entanto,
não cobre a etapa de normalização, cuja aplicação continua a cargo do projetista [3].
No âmbito acadêmico, há poucos artigos que abordam a descoberta de
dependências funcionais utilizando análises sobre as informações disponíveis, como
o código da aplicação, modelos de dados, ou até mesmo os dados, e quando o
fazem, é dentro do contexto da engenharia reversa [5, 6, 7,8]. As propostas para
automatização partem de uma série de informações a respeito dos dados originais,
cuja disponibilidade e qualidade geralmente é baixa, principalmente para arquivos de
sistemas legados, o que compromete os seus resultados.
Percebe-se,
assim,
que
a
normalização
ainda
é
uma
tarefa
predominantemente manual, onde o conhecimento do projetista tem total impacto
sobre a qualidade dos esquemas lógico e conceitual resultantes.
Para atenuar tal impacto, este trabalho propõe uma ferramenta para apoiar a
etapa de normalização de tabelas, com foco no auxilio à descoberta de
dependências funcionais, diminuindo a necessidade de conhecimento teórico e do
domínio dos dados por parte do projetista. A ferramenta transporta os dados de um
arquivo de texto ou XML para uma tabela, analisa os dados e monta uma base de
informações para apoiar a aplicação de cada passo da normalização, solicitando a
intervenção do usuário apenas quando as informações extraídas não são capazes
de decidir por uma decomposição com segurança. Em cada passo, são
apresentadas as regras que compõem cada forma normal, utilizando exemplos com
os próprios dados de entrada. O resultado do processo é um conjunto de tabelas
normalizadas.
1.2
Objetivos
1.2.1 Geral
Desenvolver uma ferramenta de apoio à normalização de tabelas com base
na análise de uma fonte de dados, de modo a diminuir o impacto do conhecimento
do projetista sobre o resultado da normalização.
1.2.2 Específicos
 Oferecer suporte à importação de dados contidos em arquivos de texto ou
XML;
 Apresentar características gerais dos dados carregados, como tipo (literal
ou numérico), tamanho máximo e mínimo, valores distintos, etc., através de
uma análise preliminar;
 Aplicar as formas normais, solicitando a concordância do usuário em cada
passo;
 Informar ao usuário os conceitos envolvidos em cada decomposição
efetuada;
 Apresentar relatório com as tabelas resultantes;
 Apresentar a diferença entre o espaço alocado pelos dados antes e depois
da normalização.
1.3
Justificativa
A normalização, em projetos de bancos de dados, pode ser vista como uma
etapa de garantia de conformidade e qualidade, onde as tabelas são analisadas e
submetidas a um grande conjunto de alterações sistemáticas até alcançar certo nível
de otimização, estipulado pelo próprio projetista.
As propostas para automatizar esta etapa dependem da disponibilidade de
modelos e descrições a respeito da estrutura dos dados, que nem sempre estão
disponíveis. Além disso, é necessário conhecer o domínio dos dados para aplicar
uma normalização adequada, o que pode levar muito tempo, dependendo do
domínio.
A combinação destes fatores faz com que esta etapa seja encarada como um
luxo acadêmico, pelo tempo que consome, e enfadonha, pela carga de
conhecimento teórico que requer. Como resultado, a normalização é freqüentemente
ignorada, deixando a qualidade do projeto fortemente dependente da experiência do
projetista, o que nem sempre gera bons resultados.
1.4
Metodologia
Para que os objetivos, há pouco expostos, sejam alcançados, este trabalho
segue as etapas abaixo elencadas:
 Estudo sobre a normalização de tabelas e conceitos relacionados;
 Levantamento do estado da arte na área;
 Implementação da ferramenta;
 Apresentação de um estudo de caso.
Na primeira etapa, são apresentadas as teorias sobre as quais a
normalização se apóia, com exemplos descritivos e ilustrativos para auxiliar a
compreensão dos mesmos.
A segunda etapa consiste em uma pesquisa sobre trabalhos relacionados a
alguma forma de suporte automatizado ao processo de normalização, com o intuito
de se determinar o avanço tecnológico na área e incorporar conceitos úteis ao
trabalho.
A terceira etapa refere-se à implementação da ferramenta, que consiste na
definição dos algoritmos para determinação de chave primária, descoberta de
relacionamentos, migração de atributos para novas tabelas e desenvolvimento da
interface gráfica.
Na quarta etapa, é feito um estudo de caso onde um arquivo de dados é
normalizado manualmente e através da ferramenta, sendo os resultados analisados.
1.5
Estrutura Do Trabalho
Este trabalho está dividido da seguinte forma:
 Capítulo 1: Introdução – Contextualiza a normalização de tabelas e
apresenta o trabalho de forma geral, comentando sobre seus objetivos
gerais e específicos, justificativa, metodologia e organização;
 Capítulo 2: Fundamentação Teórica – Apresenta os conceitos de
engenharia reversa de arquivos e modelos relacionais, normalização de
tabelas, dependência funcional, formas normais;
 Capítulo 3: Trabalhos Relacionados – Comenta artigos relacionados ao
trabalho e faz uma análise sobre o estado da arte em normalização;
 Capítulo 4: A Ferramenta – Descreve a arquitetura proposta para a
ferramenta: os módulos de importação, análise preliminar, ajuste, eleição
de chave primária, análise de dependências funcionais e análise de
resultados;
 Capítulo 5: Estudo de Caso – Executa a normalização de um arquivo tanto
através da ferramenta quanto manualmente, apresentando um estudo
comparativo dos resultados ao final;
 Capítulo 6: Conclusões – Apresenta as conclusões extraídas do estudo de
caso e do trabalho, em geral. Aponta ainda aspectos do trabalho e da
ferramenta que não estavam dentro de escopo e que podem ser
incorporados em trabalhos futuros;
 Bibliografia – Registra as fontes de informação consultadas para a
confecção deste trabalho.
2
FUNDAMENTAÇÃO TEÓRICA
2.1
Engenharia Reversa
2.1.1 Visão Geral
Em linhas gerais, pode-se definir a engenharia reversa como um processo de
abstração, cujo objetivo é obter um modelo conceitual a partir de um modelo
implementado [2]. No escopo de bancos de dados, a engenharia reversa é utilizada
inicialmente para extrair modelos lógicos de conjuntos de dados não relacionais,
num processo denominado “engenharia reversa de arquivos”. Este processo é
composto por várias tarefas, sendo seguido por outro processo, chamado de
“engenharia reversa de modelos relacionais”, cujo objetivo é gerar modelos
conceituais a partir de modelos lógicos. Há muitas outras aplicações para a
engenharia reversa, mas não são abordadas neste trabalho por estarem fora do
escopo do mesmo.
2.1.2 Engenharia Reversa de Arquivos
Grande parte dos sistemas de informação utilizados ainda hoje foi
desenvolvido no decorrer dos últimos 20 anos, em linguagens de terceira geração
como COBOL e Basic, utilizando bancos de dados pré-relacionais como IMS ou
ADABAS, sendo conhecidos como “sistemas legados” [2]. Estes sistemas raramente
apresentam documentação e, quando existe, é pobre, tornando as manutenções e
melhoramentos mais caros que um projeto novo, em alguns casos.
O modelo conceitual é vital para que pessoas que não conhecem o sistema
tenham condições de assimilar seu funcionamento e participar de discussões a
respeito de alterações e melhorias do mesmo. O processo de migração de bancos
de dados legados para tecnologias mais atuais, como bancos de dados relacionais e
não-convencionais, também é prejudicado pela falta de modelos conceituais,
fazendo com que os dados tenham que ser modelados praticamente do zero.
Em geral, a engenharia reversa de arquivos pode ser dividida nas seguintes
etapas:
Conversão da descrição de arquivos em tabelas relacionais ñn: Converte a
descrição de cada arquivo existente para um esquema relacional não normalizado,
ou simplesmente ñn. Neste passo inicial, obtém-se a independência dos tipos de
arquivo importados, já que são todos transformados em uma estrutura tabular;
Normalização: Reagrupa as informações para eliminar redundâncias e evitar
anomalias ocasionadas pela atualização de registros. Esta técnica é detalhada mais
adiante;
Integração de esquemas: Gera o esquema relacional completo através
integração dos esquemas relacionais normalizados de cada arquivo. Como a
integração de normalizados não gera, necessariamente, um esquema integrado já
normalizado, esta etapa conta ainda com um passo de eliminação de redundâncias
entre as tabelas;
Extração do esquema Entidade-Relacionamento (ER): Por fim, o esquema ER
é extraído, aplicando-se a engenharia reversa de modelos relacionais sobre o
conjunto de esquemas relacionais integrados. Esta etapa também é detalhada mais
adiante. A figura 1 oferece uma visão geral destas etapas.
Figura 1: Engenharia Reversa de Arquivos
2.2
Dependência Funcional
2.2.1 Visão Geral
Diz-se que um atributo A determina um atributo B, ou que B depende
funcionalmente de A, quando, para cada valor de A, o valor de B é sempre o mesmo,
para todos os registros da tabela [4]. A tabela 1 exemplifica esse conceito.
TEMPERATURAS_MUNICIPIOS
UF_NOME
UF_SIGLA
MUNICIPIO
SANTA CATARINA
SC
FLORIANOPOLIS
SANTA CATARINA
SC
SAO JOSE
RIO GRANDE DO SUL
RS
BAGE
RIO GRANDE DO SUL
RS
ALEGRETE
Tabela 1: Exemplo de Dependência Funcional.
TEMPERATURA
26
25
5
12
Analisando-se o relacionamento entre UF_NOME e UF_SIGLA, verifica-se
que cada valor de UF_SIGLA está relacionado com o mesmo valor de UF_NOME
em todos os registros. Pode-se afirmar, então, que UF_SIGLA determina UF_NOME,
ou que UF_SIGLA  UF_NOME, utilizando-se a notação formal.
2.2.2 Dependência Funcional Total
Quando um atributo que não faz parte da chave primária depende
funcionalmente de todos os atributos que fazem parte da chave, tem-se uma
dependência funcional total. O exemplo abaixo esclarece este conceito:
LATITUDE
-27:35 (Sul)
-27:35 (Sul)
-30:01 (Sul)
-31:19 (Sul)
-29:46 (Sul)
COORDENADAS_MUNICIPIOS
LONGITUDE
ALTITUDE
-48:32 (Oeste)
3 Metros
-48:37 (Oeste)
8 Metros
-51:13 (Oeste)
3 Metros
-54:06 (Oeste)
212 Metros
-55:47 (Oeste)
102 Metros
MUNICIPIO
FLORIANOPOLIS
SAO JOSE
PORTO ALEGRE
BAGE
ALEGRETE
Tabela 2: Exemplo de Dependência Funcional Total.
Neste exemplo, LATITUDE, LONGITUDE  MUNICIPIO é válido. Este tipo de
relacionamento é classificado como dependência funcional total, uma vez que
MUNICIPIO depende funcionalmente de todos os atributos que compõe a chave.
2.2.3 Dependência Funcional Parcial
Quando um atributo que não faz parte da chave primária depende
funcionalmente de apenas alguns dos atributos que fazem parte da chave primária,
tem-se de uma dependência funcional parcial. O exemplo abaixo esclarece este
conceito:
COORDENADAS_MUNICIPIOS
LONGITUDE
ALTITUDE
-48:32 (Oeste)
3 Metros
-48:37 (Oeste)
8 Metros
-51:13 (Oeste)
3 Metros
-54:06 (Oeste)
212 Metros
-55:47 (Oeste)
102 Metros
LATITUDE
-27:35 (Sul)
-27:35 (Sul)
-30:01 (Sul)
-31:19 (Sul)
-29:46 (Sul)
MUNICIPIO
FLORIANOPOLIS
SAO JOSE
PORTO ALEGRE
BAGE
ALEGRETE
Tabela 3: Exemplo de Dependência Funcional Parcial.
Neste exemplo, LATITUDE, LONGITUDE  MUNICIPIO é válido. Este tipo de
relacionamento é classificado como dependência funcional parcial, uma vez que
MUNICIPIO depende funcionalmente apenas de parte dos atributos que compõe a
chave primária, ou seja, a dependência funcional existente não seria afetada se o
atributo ALTITUDE fosse removido da tabela, ou simplesmente deixasse de fazer
parte da chave primária.
2.2.4 Dependência Funcional Transitiva ou Indireta
Esta dependência ocorre quando a dependência funcional se realiza entre
atributos que não fazem parte da chave primária. O exemplo abaixo esclarece este
conceito:
REGIAO
SUL
SUL
SUL
SUL
TEMPERATURAS_MESORREGIOES
UF
MESORREGIAO
SC
GRANDE FLORIANOPOLIS
SC
SERRANA
PR
OESTE PARANAENSE
PR
SUDOESTE PARANAENSE
TEMPERATURA
26
25
5
12
Tabela 4: Exemplo de Dependência Funcional Transitiva ou Indireta.
Neste exemplo,
MESORREGIAO  UF e UF  REGIAO, logo,
MESORREGIAO  REGIAO. Este tipo de relacionamento é classificado como
dependência funcional transitiva, ou indireta, uma vez que MESORREGIAO
consegue determinar, através da UF, a REGIAO.
2.2.5 Dependência Funcional Multivalorada
Esta dependência ocorre quando um atributo A determina freqüentemente o
mesmo conjunto de valores em B. O exemplo abaixo esclarece este conceito:
MODELOS
MARCA
MODELO
FORD
FOCUS
FORD
KA
FORD
FOCUS
FIAT
PALIO
FIAT
UNO
FIAT
PALIO
FORD
KA
FIAT
PALIO
FIAT
UNO
FORD
FOCUS
FIAT
UNO
FORD
KA
Tabela 5: Exemplo de Dependência Funcional Multivalorada.
Neste exemplo, MARCA  MODELO, ou MARCA multidetermina
MODELO, porque para cada valor de MARCA existe um conjunto fixo de valores
possíveis para MODELO, observados em todos os registros. Este tipo de
relacionamento é classificado como dependência funcional multivalorada.
2.2.6 Dependência Funcional de Sub-Domínio
Esta dependência ocorre quando A  B não ocorre, e existe pelo menos um
valor de A que sempre se relaciona com apenas um valor em B. O exemplo abaixo
esclarece este conceito:
PRODUTOS
NOME
MEDIDA
MARGARINA
250 Gr
MARGARINA
500 Gr
OLEO
1000ml
REFRIGERANTE
250ml
REFRIGERANTE
350ml
REFRIGERANTE 1000ml
OLEO
900ml
LEITE
1000ml
Tabela 6: Exemplo de Dependência Funcional de Sub-Domínio.
Neste exemplo, embora NOME  MEDIDA não ocorra, existe pelo menos um
valor para NOME que se relaciona com apenas um valor em MEDIDA. Este tipo de
relacionamento é classificado como dependência funcional de subdomínio.
2.2.7 Anomalias de Alteração
A detecção de dependências funcionais indica que a tabela possui
redundância e, conseqüentemente, está sujeita a anomalias de inserção, atualização
e remoção. As anomalias são as seguintes:
 Anomalias de inserção: Ocorrem quando um registro é inserido em uma
tabela sem que todos os seus atributos tenham sido determinados. No
exemplo da Tabela 4, a inserção de um novo município vinculado a uma UF
e região implicaria a atribuição de uma temperatura nula. Uma alternativa
seria inserir o novo município apenas quando sua temperatura estiver
disponível também. De qualquer forma, não é o comportamento adequado;
 Anomalias de alteração: Ocorrem quando um atributo é modificado apenas
em alguns registros em que ocorre. No exemplo acima, caso a sigla de
alguma das unidades federativas fosse alterada, seria necessário efetuar a
alteração em todas as ocorrências daquela sigla, exigindo a varredura
completa da tabela. Caso esta alteração seja efetuada apenas em parte de
suas ocorrências, a tabela fica inconsistente, retornando siglas distintas
para a mesma UF;
 Anomalias de remoção: Ocorrem quando a remoção de algum atributo
causa a perda de outras informações relacionadas. Ainda no exemplo
acima, a remoção de um município implicaria a perda da unidade federativa
e sua sigla.
Para evitar as anomalias supracitadas, é necessário detectar e eliminar as
dependências, ou seja, decompor a tabela em outras tabelas que não possuam mais
redundância.
2.3
O Processo de Normalização
A normalização é um processo composto por algumas regras, chamadas
formas normais, cujo objetivo principal é eliminar a redundância nos dados
armazenados em tabelas, resultando na diminuição do espaço e dos riscos de
inconsistências em atualizações de dados [4]. Quando um atributo é alterado em
uma tabela que não está totalmente normalizada, é necessário alterá-lo em todas as
linhas em que ele ocorre, haja vista a sua repetição. Tal operação poderia ser
executada apenas uma vez, caso este atributo estivesse normalizado.
As principais formas normais encontradas na literatura são mostradas na
Figura 2.
Figura 2: As Formas Normais e suas interdependências.
As formas normais mantêm uma relação entre si de tal sorte que a 2FN, a
exemplo, se “apóia” sobre a 1FN, ou então que implica a 1FN, a 3FN implica a 2FN,
e assim sucessivamente. As regras das três primeiras formas normais são as
seguintes:
 1ª Forma Normal (1FN) - Para que uma tabela obedeça à 1FN, não deve
possuir atributos multivalorados, tão pouco tabelas aninhadas. O simples
fato dos dados estarem dentro de uma tabela relacional com uma chave
primária já garante a conformidade com a 1FN. Algumas técnicas são
propostas para decompor uma estrutura aninhada em uma tabela na 1FN,
como por exemplo, a geração de uma tabela para cada nível de
aninhamento, ou a geração de uma tabela única para todos os dados;
 2ª Forma Normal (2FN) - Uma tabela está na 2FN se, e somente se, estiver
na 1FN e não houver dependências funcionais parciais;
 3ª Forma Normal (3FN) - Uma tabela está na 3FN se, e somente se, estiver
na 2FN e todo atributo não-chave depende funcionalmente diretamente da
chave primária, ou seja, não há dependências entre atributos não chave.
As demais formas normais estão fora do escopo deste trabalho, porque
exigem análises mais complexas de dependências funcionais, cujo tempo de
processamento pode não justificar o benefício, em tabelas com muitos registros.
Além disso, a ocorrência destas formais normais é muito mais rara na prática.
A Tabela LOCALIDADES apresenta um exemplo de atributo multivalorado no
campo MUNICIPIOS, que não é permitido segundo a 1FN. Após a aplicação da 1FN,
a tabela LOCALIDADES é decomposta em duas novas tabelas: UFS e
MUNICIPIOS. Todos os atributos originais de LOCALIDADES são migrados para
UFS, exceto o atributo multivalorado MUNICIPIOS, que, para entrar em
conformidade com a 1FN, deve ter um registro para cada valor, motivo pelo qual é
acomodado na tabela MUNICIPIOS. Para que não se perca o relacionamento entre
UF e MUNICIPIOS, o atributo ID_UF migra também para MUNICIPIOS, preservando
uma propriedade fundamental da normalização: a capacidade de se desfazer todas
as decomposições efetuadas, gerando a tabela original novamente [4].
LOCALIDADES
ID
1
2
3
REGIAO
SUL
SUL
SUL
UF
SC
RS
PR
MUNICIPIOS
FLORIANOPOLIS, SAO JOSE, CRICIUMA
BAGE, ALEGRETE, CANDIOTA
ATALAIA, MARINGA, SARANDI
Tabela 7: Exemplo de atributo multivalorado.
UFS
ID
1
2
3
REGIAO
SUL
SUL
SUL
UF
SC
RS
PR
Tabela 8: Isolamento dos dados da UF.
ID
1
2
3
4
5
6
7
8
9
MUNICIPIOS
MUNICIPIO
FLORIANOPOLIS
SAO JOSE
CRICIUMA
CANDIOTA
ALEGRETE
BAGE
SARANDI
MARINGA
ATALAIA
ID_UF
1
1
1
2
2
2
3
3
3
Tabela 9: Exemplo de eliminação de atributos multivalorados.
A Tabela ATUACOES apresenta um exemplo de DF Parcial, provocada pelo
atributo NOME, que depende funcionalmente de apenas um dos atributos que
compõem a chave primária, ID_ATOR. Para obedecer à 2FN, o atributo NOME é
migrado para uma nova tabela ATORES, levando junto o atributo ID_ATOR,
mantendo assim o relacionamento existente.
ID_FILME
1
1
2
3
4
5
ID_ATOR
1
2
3
4
5
6
ATUACOES
NOME
BRAD PITT
JULIA ROBERTS
NATALIE PORTMAN
ANTONIO BANDERAS
LUCY LIU
CLAIRE FORLANI
PERSONAGEM
RUSTY RYAN
TESS OCEAN
ALICE
CARLOS RUEDA
ALEX MUNDAY
SUSAN PARRISH
Tabela 10: Exemplo de Dependência Funcional Parcial.
ID_FILME
1
1
2
3
4
5
ATUACOES
ID_ATOR
PERSONAGEM
1
RUSTY RYAN
2
TESS OCEAN
3
ALICE
4
CARLOS RUEDA
5
ALEX MUNDAY
6
SUSAN PARRISH
Tabela 11: Resultado da aplicação da 2FN.
ID_ATOR
1
2
3
4
5
6
ATORES
NOME
BRAD PITT
JULIA ROBERTS
NATALIE PORTMAN
ANTONIO BANDERAS
LUCY LIU
CLAIRE FORLANI
Tabela 12: Resultado da aplicação da 2FN.
A Figura 5 apresenta um exemplo de DF provocada pelo atributo SALARIO,
que depende funcionalmente do atributo CATEGORIA. Neste caso, como o atributo
CATEGORIA não faz parte da chave, esta DF é denominada INDIRETA ou
TRANSITIVA, ou seja, ocorre apenas entre atributos não-chave. Para obedecer à
3FN, o atributo SALARIO é migrado para a nova tabela CATEGORIAS, levando junto
o atributo CATEGORIA, mantendo assim o relacionamento existente.
ID_FUNCIONARIO
1
1
2
3
4
5
VENCIMENTOS
NOME
CATEGORIA
JOAO
OPERAÇÃO
MARCOS
OPERAÇÃO
ANA
SECRETARIA
JULIA
SECRETARIA
VITOR
ADMINISTRAÇÃO
ANGELA
ADMINISTRAÇÃO
SALARIO
600,00
600,00
450,00
450,00
1000,00
1000,00
Tabela 13: Exemplo de Dependência Funcional Transitiva ou Indireta.
FUNCIONARIOS
ID_FUNCIONARIO
NOME
CATEGORIA
1
JOAO
OPERAÇÃO
1
MARCOS
OPERAÇÃO
2
ANA
SECRETARIA
3
JULIA
SECRETARIA
4
VITOR
ADMINISTRAÇÃO
5
ANGELA
ADMINISTRAÇÃO
Tabela 14: Resultado da aplicação da 3FN.
CATEGORIAS
NOME
SALARIO
OPERADOR
600,00
SECRETARIA
450,00
ADMINISTRADOR 1000,00
Tabela 15: Resultado da aplicação da 3FN.
3
TRABALHOS RELACIONADOS
Os trabalhos que mais se aproximam do trabalho aqui proposto estão
relacionados com a automatização da engenharia reversa de bancos de dados, cujo
objetivo é, em linhas gerais, obter um esquema conceitual a partir de um esquema
implementado [1]. Os processos propostos utilizam documentos físicos, esquemas,
análise de dependências funcionais, código fonte da aplicação, SQL e os próprios
dados. No entanto, não há abordagem que se proponha a normalizar um conjunto de
dados utilizando apenas a análise dos mesmos e dispensando o conhecimento
sobre o seu domínio. Isto se deve, em parte, porque a normalização é apenas uma
etapa do processo de engenharia reversa e raramente é abordada fora deste
escopo.
3.1
A Independência Funcional na Normalização de Bancos de Dados
Relacionais.
Este trabalho aponta deficiências na definição das formas normais baseadas
em dependências funcionais e apresenta uma abordagem complementar ao
processo tradicional de normalização, introduzindo o conceito de independência
funcional, melhorando sensivelmente o resultado da normalização [9].
Segundo o trabalho, a observância das dependências funcionais não é
suficiente para eliminar algumas formas básicas de redundância, resultando em
anomalias nos dados mesmo em altos níveis de normalização. Para eliminar
anomalias causadas pelas dependências funcionais de subdomínio, o artigo introduz
o conceito de independência funcional, que acontece quando a combinação de
todos os valores entre dois atributos é válida, ou seja, não fere nenhuma restrição
semântica. O exemplo abaixo esclarece este conceito:
CONTAS
CORRENTISTA
SALDO
JOAO
-50,00
GISELE
654,21
ANA
1684,32
GABRIEL
-320,15
CAROL
521,78
Tabela 16: Exemplo de Independência Funcional.
A Tabela 16 apresenta dois campos funcionalmente independentes, ou
CORRENTISTA >< SALDO, pela notação formal, porque não há restrições para as
combinações de valores que os campos podem assumir. O exemplo de
independência funcional, dado na Tabela 16, só é válido quando acrescido de
informações externas, como o fato de que um correntista pode ter qualquer valor em
seu saldo. No entanto, regras simples de negócio podem invalidar o exemplo, como
considerar que correntistas com menos de um ano de conta têm limite máximo de
R$ 200,00. Por esse motivo, as independências funcionais não são determinadas
pela combinação exaustiva dos atributos, mas pela consulta à semântica dos
mesmos, tornando-as altamente dependentes do domínio dos dados.
Por fim, o trabalho utiliza o conceito de independência funcional para definir a
Forma Normal da Independência Funcional (FINF). Uma tabela está na FINF se, e
somente se, estiver na FNBC e, em todos os pares de atributos “X” e “Y”, for
verificado que X  Y ou Y  X ou X >< Y, o que implica a ausência de
redundâncias causadas por dependências funcionais de subdomínio e outras formas
de relacionamento entre atributos. A FNBC exige que todos os atributos
funcionalmente determinantes façam parte da chave primária.
Esta proposta contribuiu para este trabalho com a teoria de independência
funcional e a forma normal FINF.
3.2
Engenharia Reversa de Bancos de Dados Relacionais: Algoritmos para
Extrair Restrições de Cardinalidade.
Este trabalho trata da extração de cardinalidades via comandos SQL, gerados
dinamicamente sobre um dicionário de dados, para otimizar a engenharia reversa de
bancos de dados [3]. Os resultados podem ser aplicados para esquemas ER,
MERISE, ECR, ERC+, OMT e ODMG, ou ainda na integração de ferramentas
comerciais que oferecem engenharia reversa de bancos de dados.
A motivação está na complexidade do processo de engenharia reversa, cujas
abordagens exigem a satisfação de uma série extensa e complexa de requisitos,
impedindo a automatização, bem como na falta de abordagens que utilizem os
próprios dados para dar mais consistência ao esquema extraído.
A análise dos dados armazenados em um banco ou fonte de dados traz
informações muito mais realistas a respeito das entidades ali persistidas do que o
código fonte da aplicação e a descrição dos dados sozinhos. Todavia, as
ferramentas que oferecem engenharia reversa ignoram os dados, tomando como
entrada apenas dicionários de dados ou descrições do esquema relacional.
Incluir a análise dos dados no processo, como propõe o trabalho, possibilita a
identificação precisa das cardinalidades existentes entre as entidades. A precisão
desta informação é que separa processos de engenharia reversa em bem ou mal
sucedidos.
Quando as definições de entidades incluem as chaves primárias e
estrangeiras no nível relacional, a ferramenta efetua a engenharia reversa
automaticamente. Caso contrário, o usuário deve indicar manualmente os camposalvo a serem analisados pela ferramenta e refazer o processo até obter um resultado
que julgue satisfatório.
O trabalho analisa as diferenças entre os modelos baseados em restrições de
cardinalidades (MER), como o ER, e os modelos baseados em restrições de
pertinência (MPC), como MERISE, ECR, ERC+, OMT e ODMG. A Tabela 17
apresenta as diferenças entre as notações MER e MPC.
Relacionamento
Aluno VS Matrícula
Banca VS
Professores
Aluno VS Email
Aluno VS Turma
Descrição
Notação
MER
MPC
Um aluno tem apenas uma matrícula,
e uma matrícula identifica apenas um
aluno
Uma banca pode ter de dois a quatro
professores, e um professor pode
fazer parte de zero ou mais bancas
Um aluno pode ter zero ou mais
emails, e um email pertence a
apenas um aluno
Um aluno pode estar alocado a uma
ou mais turmas, e uma turma pode
conter zero ou mais alunos
1:1
[1:1]:[1:1]
n:m
[0:n]:[2:4]
1:n
[1:1]:[0:n]
n:m
[0:n]:[1:n]
Tabela 17: Notação MER VS Notação MPC
A identificação e representação adequada das cardinalidades, apresentada
neste trabalho, deu origem ao módulo de análise preliminar, haja vista a importância
que essa informação tem para o processo de normalização.
3.3
Extraindo o Diagrama ER de Bancos de Dados Legados.
Este trabalho propõe um processo de extração de um diagrama ER de um
banco de dados não relacional, com pouca informação sobre os campos e nenhuma
informação sobre as chaves, analisando os próprios dados armazenados e telas de
formulário do sistema que alimenta o banco [10]. A motivação reside na presunção
de disponibilidade de todas essas informações para se iniciar um processo de
engenharia reversa, o que raramente acontece. Ao final, um estudo de caso é
apresentado.
A semântica dos dados é descoberta através do preenchimento dos
formulários do sistema e análise do posterior armazenamento das informações de
entrada no banco de dados. Para automatizar o procedimento de análise e extração,
são criadas tabelas no SQL Server para armazenar informações sobre formulários,
campos de formulários, tabelas e campos de tabelas do sistema.
As chaves são inferidas pela análise de arquivos de índices ou, para tabelas
sem arquivo de índices, a eleição de chaves é feita através da análise direta dos
dados da tabela a procura de campos, ou combinações de campos, cujos valores
não se repitam. Em seguida, todas as tabelas são percorridas para se descobrir
quais delas fazem referência às chaves primárias definidas na etapa anterior,
descobrindo assim as chaves estrangeiras.
As cardinalidades entre as chaves primárias e estrangeiras são obtidas pela
contagem do número de valores distintos de cada chave estrangeira para uma chave
primária.
Grande parte das pesquisas nesta área de extração de esquemas conceituais
de dados baseia-se na utilização do esquema relacional como entrada principal. No
entanto, a manutenção de um banco de dados depende do conhecimento que se
tem sobre suas características. A semântica de seus atributos é vital para a
compreensão do funcionamento do sistema, e geralmente é pobre ou até mesmo
inexistente, justificando abordagens como esta, que utilizam a análise dos
formulários do sistema para ajudar na reconstrução de esquemas ER.
Este trabalho deu origem ao módulo de eleição de chave primária, que é prérequisito da normalização.
3.4
Considerações Finais
Estes trabalhos contribuíram para o amadurecimento geral da ferramenta,
além dos conceitos especificados na análise de cada um. No entanto, este trabalho
se diferencia das abordagens apresentadas ao propor uma ferramenta de apoio à
normalização que utiliza apenas os dados como entrada, dos quais extrai as
informações
necessárias
para
efetuar
grande
parte
da
normalização
automaticamente.
Outro aspecto é a disponibilização de uma interface com o usuário dotada de
recursos para apresentar a teoria envolvida em todo o processo de normalização,
distribuindo-a em módulos e passos.
4
A FERRAMENTA
A ferramenta proposta neste trabalho tem por objetivo apoiar o processo de
normalização de tabelas até a 3FN, reduzindo a necessidade de conhecimento
teórico a respeito da normalização e conhecimento sobre o domínio dos dados, além
de explicar a teoria envolvida em cada parte do processo. A figura abaixo oferece
uma visão geral do funcionamento da ferramenta.
Figura 3: Funcionamento geral da ferramenta.
4.1
Funcionamento Geral
A entrada da ferramenta é um arquivo de dados em texto ou XML. Os dados
contidos neste arquivo são importados para uma única tabela relacional não
normalizada, que servirá de base para todo o resto do processo.
A aplicação das formas normais exige a existência de uma chave primária.
Para auxiliar o usuário na definição dessa chave, a ferramenta analisa os dados e
calcula o potencial que cada campo tem para exercer essa função. Em seguida,
apresenta uma lista de campos de maior potencial, com os quais o usuário deve
compor a chave primária.
Definida a chave primária, o usuário pode então aplicar as formas normais.
Nesta etapa, a tabela sofre a aplicação de cada uma das formas normais em passos
separados, nos quais a ferramenta identifica, classifica e remove cada dependência
funcional encontrada, além de apresentar a teoria relacionada a cada uma delas
#detalhes no módulo#.
Ao término do processo, são apresentadas as tabelas resultantes da
normalização, juntamente com relatórios sobre tempos de execução de cada tarefa e
a diferença entre o espaço utilizado pelos dados antes e depois da normalização.
As principais funcionalidades da ferramenta estão divididas em módulos, e
serão explicadas minuciosamente mais adiante.
4.2
Tecnologias Utilizadas
A plataforma da aplicação é toda em SQL ANSI, constituída de tabelas
responsáveis por manter os dados resultantes das análises e stored procedures que
encapsulam os algoritmos de cada tarefa utilizada pela ferramenta. A padronização
do SQL permite que os algoritmos sejam incorporados a qualquer outro SGBD
Relacional com suporte a stored procedures e capacidade de montar e executar
comandos SQL dinamicamente.
O sistema gerenciador de bancos de dados escolhido foi o MySQL 5.1, por
ser gratuito, muito utilizado no meio acadêmico e, principalmente, oferecer suporte à
execução dinâmica de SQL. A interface gráfica foi desenvolvida utilizando-se a
versão 5.5.1 do Netbeans, uma IDE para a linguagem Java.
4.3
Módulos
4.3.1 Módulo de Importação
Este módulo extrai os dados de um arquivo de texto ou XML e insere em uma
tabela. Para arquivos de texto, o usuário define os critérios (caracteres) que serão
utilizados para quebrar os registros em linhas e colunas. Para arquivos XML, o
mecanismo de importação ainda não foi definido. Os campos da tabela de destino
são definidos como literais, uma vez que não se conhece a natureza dos dados, a
priori. Um campo com nome ID, de tipo inteiro e auto-incremental, é adicionado à
tabela, para identificar unicamente cada registro. A figura 6 apresenta o protótipo da
tela deste modulo.
Figura 4: Módulo de Importação.
4.3.2 Módulo de Análise Preliminar
Este módulo explora cada campo da tabela, extraindo as informações que
serão utilizadas pelos módulos seguintes, e está dividido da seguinte forma:
 Básica: Extrai o número de valores distintos, número mínimo e máximo de
caracteres, e classifica o campo em numérico ou literal;
 Avançada: Aplica as estatísticas selecionadas pelo usuário, como valor
máximo, mínimo, média e desvio padrão, além de estatísticas definidas
pelo próprio usuário;
 Armazenamento: Calcula o espaço (total e médio por registro) ocupado
pelos dados.
As análises são feitas através de consultas aos próprios dados, utilizando
comandos em SQL. A maior parte desses comandos é montada dinamicamente,
com base no dicionário de dados do MySQL. As informações coletadas são
armazenadas em tabelas auxiliares, que são utilizadas durante todo o resto do
processo. A figura 7 apresenta o protótipo da tela deste modulo.
Figura 5: Módulo de Análise Preliminar
4.3.3 Módulo de Ajuste
Utiliza as informações extraídas durante a análise preliminar para redefinir os
tipos dos campos da tabela, que foram definidos genericamente como literais,
quando da importação. Permite também a remoção de registros indesejados,
revelados pela análise preliminar.
4.3.4 Módulo de Eleição de Chave Primária
Utilizando as informações coletadas pelo módulo de análise preliminar, calcula
o potencial que cada campo tem para ser a chave primária. Este potencial é obtido
dividindo-se o número de valores distintos do campo pelo número total de registros
da tabela, e varia de 0% a 100%.
Em seguida, uma lista com todos os campos, e seus respectivos potenciais, é
apresentada, para que o usuário possa eleger a chave primária.
A priori, apenas campos com potencial igual a 100% poderiam ser
selecionados, uma vez que chaves primárias não aceitam valores repetidos. No
entanto, é possível selecionar campos com potencial inferior a 100%, desde que o
usuário aceite que a ferramenta descarte todos os registros onde o valor do campo
selecionado se repete. Logo, quanto maior o potencial, menor a perda de registros
após a eleição da chave primária.
É possível solicitar o cálculo do potencial para combinações de campos,
permitindo a definição de chaves primárias compostas. O usuário ainda pode rejeitar
os candidatos apresentados e optar por uma chave primária artificial. Nesta última
opção, a ferramenta define o campo ID, gerado quando da importação dos dados,
como chave primária.
Ao término da eleição, a ferramenta define o(s) campo(s) como chave
primária diretamente na tabela atual. Se o usuário optar por campo(s) de potencial
inferior a 100%, a ferramenta cria uma tabela secundária, define a chave primária,
carrega os dados da tabela original e, ao término, informa quantos registros foram
inseridos e ignorados.
Ainda não há protótipo de tela para este módulo.
4.3.5 Módulo de Normalização
Observa os relacionamentos entre os dados e apresenta ao usuário as
informações coletadas, guiando-o através de aplicação de cada uma das formas
normais. A análise dos relacionamentos é feita através da execução de comandos
SQL sobre os próprios dados, capazes de detectar a existência de DFs entre os
campos da tabela.
A Tabela 15 apresenta um exemplo geral de DF, onde ocorre NOME 
SIGLA. Na prática, significa que cada valor de NOME tem apenas um valor
correspondente em SIGLA para todos os registros da tabela. O SQL 1 mostra o
comando capaz de detectar este tipo de relacionamento.
SIGLAS
NOME
ACRE
AUTORIDADES CERTIFICADORAS
CONSELHO REGIONAL DE FARMACIA
CONSELHO REG. DE FARMACIA
GAS LIQUEFEITO PETROLEO
GAS NATURAL VEICULAR
IMPOSTO DE RENDA
RELACAO ANUAL DE INFORMACOES SOCIAIS
SIGLA
AC
AC
CRF
CRF
GLP
GNV
IR
RAIS
Tabela 18: Exemplo geral de DF.
select count( distinct NOME )
into @distinct_NOME
from SIGLAS
;
select count(*) / @distinct_NOME * 100
from
(
select NOME
from SIGLAS
group by SIGLA
having count( distinct SIGLA ) = 1
) as temp
;
SQL 1 : Mensuração do relacionamento entre dois campos
O primeiro comando recupera o número de valores distintos do campo
NOME, que é 8, e armazena na variável @distinct_NOME. O segundo comando
também recupera o número de valores distintos do campo NOME, mas com a
condição de se relacionar com apenas um valor de SIGLA em todos os registros,
que é 8 também, e divide pela variável @distinct_NOME. O resultado, que neste
exemplo é 1, é multiplicado por 100 para converter em porcentagem. Um resultado
de 100% indica que NOME  SIGLA, ou seja, todos os valores de NOME se
relacionam com apenas um valor de SIGLA.
O resultado do algoritmo em SQL 1 para SIGLA e NOME tem um resultado
diferente. Há 6 valores distintos para SIGLA, dos quais 4 se relacionam com apenas
um valor de NOME, fazendo com que o resultado seja 66%. Este resultado indica
que SIGLA  NOME para 66% de seus valores, não sendo possível inferir a DF
entre essas duas variáveis com segurança.
Este processo de mensuração é aplicado ao conjunto de arranjos simples
entre os campos da tabela, tomados dois a dois, e os resultados são armazenados.
O número de combinações possíveis pode ser calculado por n! / (n-2)!, onde “n” é o
número de campos da tabela. Após o término deste processo, a ferramenta
apresenta a lista de todas as duplas de campos analisadas e o valor calculado pelo
algoritmo do SQL 1. A Tabela 16 apresenta o resultado dessa análise de
relacionamentos.
RELACIONAMENTOS
NOME  SIGLA
SIGLA  NOME
DF
100%
66%
Tabela 19: Resultado da análise de relacionamentos.
Para evitar que a detecção de dependências funcionais seja prejudicada por
valores nulos, corrompidos, ou até mesmo inválidos, a ferramenta oferece a opção
de inspecionar os relacionamentos através da visualização de amostras dos
registros.
Para freqüências iguais a 100%, a ferramenta automaticamente infere a
existência de uma DF, e para as freqüências inferiores, mostra alguns dos registros
onde a possível DF foi ferida. Desse modo, o usuário sabe se a detecção de DFs foi
prejudicada por erros nos dados, e tem a opção de corrigi-los.
Para cada DF aceita pelo usuário, a ferramenta efetua a decomposição
correspondente e apresenta as tabelas derivadas.
Uma característica particular desta ferramenta são os algoritmos para
descoberta de dependências funcionais, que foram desenvolvidos na forma de
stored procedures e podem ser incorporados a qualquer banco de dados que tenha
esta funcionalidade. Seu escopo é limitado à normalização de arquivos de forma
individual, não oferecendo suporte à integração dos modelos gerados a partir de
cada arquivo. A interface com o usuário é disponibilizada apenas para possibilitar a
utilização destes algoritmos no meio acadêmico, pois se espera que esta ferramenta
tenha utilidade no ensino de Normalização em disciplinas de Banco de Dados.
Este módulo só se torna acessível após a definição da chave primária, que é
pré-requisito para a normalização.
5
ATIVIDADES FUTURAS
 Definir a metodologia de importação para arquivos XML;
 Definir o módulo de normalização;
 Definir o módulo de Relatórios;
 Finalizar a implementação da ferramenta.
BIBLIOGRAFIA
[1]
Codd, E. F. 1970. A relational model of data for large shared data banks.
Commun.
ACM
13,
6
(Jun.
1970),
377-387.
DOI=http://doi.acm.org/10.1145/362384.362685.
[2]
Heuser, C.A. Projeto de Banco de Dados. 5a edição. Série Livros Didáticos –
Instituto de Informática da UFRGS, número 4. Editora Sagra-Luzzatto, 2004.
[3]
Soutou, C. 1998. Relational database reverse engineering: algorithms to extract
cardinality constraints. Data Knowl. Eng. 28, 2 (Nov. 1998), 161-207.
DOI=http://dx.doi.org/10.1016/S0169-023X(98)00017-2
[4]
Korth, H. F.; Sudarshan, S; Silberschatz, A. Sistema de Banco de Dados. 5a
edição. Editora Campus, 2006.
[5]
D. Bitton, J. Millman, S. Torgersen, A feasibility and performance study of
dependency inference. In: Proc. 5th Int. Conf. on Data Engineering (Feb. 1989)
pp. 635-641.
[6]
M. Castellanos, F. Saltor, Extraction of data dependencies. In: Report LSI-93-2R, University of Catalonia, Barcelona (1993).
[7]
M. Castellanos, A methodology for semantically enriching interoperable
databases. In: Proc. llth British National Conf. on Databases (1993) pp. 58-75.
[8]
R. Chiang, T. Barron, V.C. Storey, Performance evaluation of reverse
engineering relational databases into extended entity-relationship models. In:
Proc. 12th Int. Conf. on Entity-Relationship Approach (1993) pp. 402-413.
[9]
Chen, T. X., Liu, S. S., Meyer, M. D., and Gotterbarn, D. 2007. An introduction to
functional independency in relational database normalization. In Proceedings of
the 45th Annual Southeast Regional Conference (Winston-Salem, North
Carolina, March 23 - 24, 2007). ACM-SE 45. ACM Press, New York, NY, 221225. DOI= http://doi.acm.org/10.1145/1233341.1233381.
[10] Yeh, D. and Li, Y. 2005. Extracting Entity Relationship Diagram from a TableBased Legacy Database. In Proceedings of the Ninth European Conference on
Software Maintenance and Reengineering (March 21 - 23, 2005). CSMR. IEEE
Computer
Society,
Washington,
DC,
72-79.
DOI=
http://dx.doi.org/10.1109/CSMR.2005.31.
[11] Chen, P. P. 1976. The entity-relationship model—toward a unified view of data.
ACM
Trans.
Database
Syst.
1,
1
(Mar.
1976),
9-36.
DOI=
http://doi.acm.org/10.1145/320434.320440.
[12] Ramakrishnan, R., Gehrke, J. Database Management Systems.3th ed. McGraw
Hill. 2003.
[13] Date, C. J. Introdução a Sistemas de Bancos de Dados. 8a edição. Editora
Campus, 2004.
[14] S. Jarzabek, Tan Poh Keam, "Design of a generic reverse engineering assistant
tool," wcre, p. 61, Second Working Conference on Reverse Engineering, 1995.
[15] Antonija Mitrovic, "NORMIT: A Web-Enabled Tutor for Database Normalization,"
icce, p. 1276, 2002 International Conference on Computers in Education
(ICCE'02), 2002.
Download