universidade federal de santa catarina

Propaganda
UNIVERSIDADE FEDERAL DE SANTA CATARINA
CENTRO TECNOLÓGICO
CURSO DE SISTEMAS DE INFORMAÇÃO
PROJETO DE PESQUISA
1 TÍTULO
Uma ferramenta de apoio à normalização de tabelas relacionais através da análise
das dependências funcionais.
2 PROPONENTE E BANCA
Aluno: Michel Leite de Ávila
Orientador: Prof. Ronaldo dos Santos Mello, Dr.
Banca: Prof. José Leomar Todesco, Dr.
Banca: Prof. Renato Fileto
3 JUSTIFICATIVA
A normalização de tabelas relacionais não é uma tarefa trivial. Ela pode ser
aplicada sobre volumes consideráveis de dados e exige conhecimento a respeito da
semântica dos dados. Por natureza, é uma atividade predominantemente manual e
demorada, dependendo do domínio dos dados.
Os esforços para automatizar este processo limitam-se a ferramentas de extração,
transformação e carga de dados, como o DTS do Microsoft SQL Server [DTS 2007]. Há
alguns trabalhos que discorrem sobre a análise de dependências funcionais, mas nada
voltado a auxiliar a normalização [DKE 2002, Normit 2002, Reverse 1995]. Partes deste
processo, no entanto, poderiam ser automatizadas, diminuindo a intervenção humana e
erros durante o processo. A análise dos diferentes valores de um dado atributo em função
de outro é um exemplo, onde o resultado dispara outras ações em cascata, como a
migração do atributo para uma nova tabela que mantém os dados melhor organizados.
3.1 FUNDAMENTAÇÃO TEÓRICA
3.1.1 DEPENDÊNCIA FUNCIONAL
Compreender as relações entre os atributos de uma tabela relacional é fundamental
para o processo de normalização. Diz-se que um atributo A determina um atributo B, ou
que B depende funcionalmente de A, quando, dado um valor para A, o valor de B é sempre
o mesmo para todos os registros da tabela [SBD 2006]. Esta Dependência Funcional (DF)
implica redundância, haja vista a repetição do mesmo valor de B em cada linha para um
dado valor de A. Como conseqüência, a atualização dos atributos funcionalmente
dependentes se torna suscetível a erros e, em caso de grandes volumes de dados, muito
lenta. Quando um atributo for determinado por todos os atributos que compõem a chave
primaria, diz-se que a dependência funcional é total, caso contrário, é dita parcial. É
necessário detectar essas dependências parciais e tratá-las para evitar as anomalias
supracitadas, ou seja, deve-se decompor a tabela que contém estes dados em outras tabelas
que não possuam mais redundância.
A dependência entre atributos não-chave e as dependências multivaloradas. No
segundo caso, tem-se um atributo determinando sempre um conjunto fixo de valores
(múltiplos valores) de um ou mais atributos. Todas elas também geram redundâncias em
uma tabela e requerem que esta tabela seja decomposta.
3.1.2 O PROCESSO DE NORMALIZAÇÃO
A normalização é composta por algumas regras, chamadas formas normais, cujo
objetivo principal é diminuir 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 [SBD
2006]. Quando um atributo é alterado em uma tabela não-normalizada, é necessário alterálo em todas as linhas em que ocorre, haja vista a sua repetição. Tal operação poderia ser
executada apenas uma vez, caso este atributo pudesse ser normalizado.
As principais formas normais são as seguintes, conforme mostra a Figura 1:






1FN ( 1ª Forma Normal )
2FN ( 2ª Forma Normal )
3FN ( 3ª Forma Normal )
FNBC ( Forma Normal de Boyce e Codd)
4FN ( 4ª Forma Normal )
5FN ( 5ª Forma Normal )
Figura 1 – Formas Normais e suas interdependências.
As formas normais mantêm uma relação entre si de tal sorte que a 2FN implica
1FN 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 houverem 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 é mais rara na prática.
A Figura 2 apresenta um exemplo de atributo multivalorado na tabela original
Member List, que não é permitido segundo a 1FN. Após a aplicação da 1FN, a tabela
Member List é decomposta em duas novas tabelas: Member Table e Database Table.
Todos os atributos originais de Member List são migrados para Member Table, exceto o
atributo multivalorado Database, que, para entrar em conformidade com a 1FN, deve ter
um registro para cada valor, motivo pelo qual é acomodado na tabela Database Table. Para
que não se perca o relacionamento entre Name e Database, o atributo MID vai junto para
Database Table, preservando uma propriedade fundamental da normalização: a capacidade
de desnormalizar todas as tabelas gerando a tabela original novamente [SDB 2006].
Figura 2 – Exemplo de Aplicação da 1FN
Figura 3 – Exemplo de Aplicação da 2FN
A Figura 3 apresenta um exemplo de DF Parcial, provocada pelos atributos NOME
e IDADE, que dependem funcionalmente do atributo ID_FUNC, que faz parte da chave
primária da tabela, composta pelos atributos ID_PROJ e ID_FUNC. Para obedecer à 2FN,
os atributos NOME e IDADE são migrados para a nova tabela FUNCIONÁRIOS, levando
junto o atributo ID_FUNC, mantendo assim o relacionamento existente.
Figura 4 – Exemplo de Aplicação da 3FN
A Figura 4 apresenta um exemplo de DF provocada pelo atributo SAL, que depende
funcionalmente do atributo CAT. Neste caso, como o atributo CAT não faz parte da chave,
esta DF é denominada indireta, ou seja, ocorre apenas entre atributos não-chave. Para
obedecer à 3FN, o atributo SAL é migrado para a nova tabela CATEGORIAS, levando junto
o atributo CAT, mantendo assim o relacionamento existente.
4 OBJETIVO
Este trabalho propõe uma ferramenta para auxiliar o processo de normalização de
tabelas relacionais. A ferramenta recebe como entrada dados estruturados (dados com
níveis de aninhamento) que estão armazenados em arquivos texto ou XML. Na seqüência,
a ferramenta importa estes dados para uma tabela relacional na primeira forma normal
(utilizando alguma técnica a ser definida) e efetua uma série de análises para determinar os
relacionamentos entre os atributos.
Em se tratando de dados reais, é muito comum a existência de valores nulos,
inválidos, ou até corrompidos. Para que estes dados não atrapalhem a determinação das
dependências, após a análise, as relações detectadas são classificadas em dependências
funcionais verdadeiras – válidas para todos os registros – e dependências funcionais
candidatas – válidas para a maioria dos registros, devido a ocorrência de nulos e valores
incorretos.
Por exemplo, em uma tabela contendo os atributos sigla e nome, seria detectada
uma DF verdadeira, uma vez que cada nome é sempre representado pela mesma sigla. No
entanto, suponha que alguns nomes foram escritos de forma equivocada. A ferramenta
classificará, então, este relacionamento como sendo DF candidata e informará a freqüência
em que ocorre, além de uma lista de casos onde o relacionamento não foi verificado. De
posse destas informações, o usuário poderá perceber que o relacionamento entre nome e
sigla não foi classificado em DF verdadeira por erros de ortografia.
A intervenção do usuário é necessária para concordar com as DFs verdadeiras e
avaliar as DFs candidatas. Após a etapa de verificação do usuário, as dependências são
eliminadas através da migração dos atributos para novas tabelas, gerando um pequeno
esquema de tabelas derivadas da original.
Esta tarefa é muito comum no ambiente organizacional, onde os dados de sistemas
são utilizados como entrada para projetos bottom-up de bancos de dados relacionais
[Projeto 2004], sendo feita manualmente e demandando considerável conhecimento do
domínio dos dados. Com a ferramenta proposta, os relacionamentos entre os dados são
detectados, com certa tolerância a erros, e todas as operações de normalização são feitas
semi-automaticamente, com pequenas intervenções do usuário. Para o ambiente
acadêmico, a ferramenta contribui com a aplicabilidade dos conceitos relacionados com a
normalização, que podem ser observados durante todo o processo e, em especial, nas
tabelas geradas quando do término do processo. Desta forma, ela poderá ser utilizada em
disciplinas da área de banco de dados como uma ferramenta de apoio ao aprendizado da
teoria de normalização.
6 METODOLOGIA
O desenvolvimento deste trabalho de conclusão de curso será realizado através das
seguintes etapas:
1. Pesquisa Bibliográfica
Nesta etapa serão feitas a busca e a leitura de referências bibliográficas, com foco
na teoria de normalização de bancos de dados, bem como trabalhos relacionados à
detecção de dependências entre dados.
2. Projeto da ferramenta
Projeto dos módulos de importação de arquivos de entrada, transformação em
tabelas relacionais, análise de dados, apresentação de resultados, interação com o usuário e,
por fim, geração das tabelas normalizadas.
3. Implementação
Implementação dos módulos descritos na etapa anterior.
4. Teste
Arquivos de fontes de dados reais serão importados e normalizados a fim de validar
a corretude e aplicabilidade da ferramenta.
5. Desenvolvimento de documento de conclusão
Esta etapa é dedicada à redação do documento conclusivo do TCC.
7 CRONOGRAMA
Etapas / Mês
Pesquisa
Projeto
Implementação
Testes
Documento
Jan
Fev
X
Mar
X
Abr
X
X
X
Mai
Jun
Jul
Ago
Set
Out
Nov
X
X
X
X
X
X
X
X
X
X
X
X
X
X
X
Dez
8 REFERÊNCIAS BIBLIOGRÁFICAS
[SBD 2006]
Korth, H. F.; Sudarshan, S; Silberschatz, A. Sistema de Banco de Dados. 5a edição. Editora
Campus, 2006.
[DMS 2003]
Ramakrishnan, R., Gehrke, J. Database Management Systems.3th ed. McGraw Hill. 2003.
[SBD 2004]
Date, C. J. Introdução a Sistemas de Bancos de Dados. 8a edição. Editora Campus, 2004.
[Projeto 2004]
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.
[DTS 2007]
Data Tranformation Service. Disponível em
<http://www.microsoft.com/brasil/sql/overview/recursos/dts.mspx>. Acesso em fevereiro
de 2007.
[Reverse 1995] S. Jarzabek, Tan Poh Keam, "Design of a generic reverse engineering assistant tool," wcre,
p. 61, Second Working Conference on Reverse Engineering, 1995.
[Normit 2002]
Antonija Mitrovic, "NORMIT: A Web-Enabled Tutor for Database Normalization," icce, p.
1276, 2002 International Conference on Computers in Education (ICCE'02), 2002.
[DKE 2002]
F Berzal, JC Cubero, F Cuenca, JM Medina - Data & Knowledge Engineering, 2002.
Download