You are on page 1of 8

Modelagem de Dados 1

Normalizao
Tabelas de um banco de dados relacional, se elas so derivadas de modelos ER ou Linguagem de Modelagem Unificada (UML), algumas vezes sofrem de problemas bastante srios em termos de execuo, integridade e manuteno. Por exemplo, quando o banco de dados inteiro definido como uma simples e grande tabele, pode resultar em uma grande quantidade de redundncia de dados e longas pesquisas para apenas um pequeno nmero de linhas alvo. Pode tambm resultar em prolongada e custosa atualizao, e delees em particular podem resultar na eliminao de dados teis como um efeito colateral indesejado. Tal situao mostrada abaixo, onde produtos, vendedores, clientes e pedidos so todos armazenados em uma nica tabela chamada Vendas.

Nessa tabela ns vemos que certa informao de produto e cliente armazenado redundantemente, desperdiando espao de armazenamento. Certas consultas, por exemplo Quais clientes pediram aspirador de p no ms passado? exigiria uma pesquisa na tabela inteira. Tambm, atualizaes, por exemplo, trocar o endereo do cliente Dave Bachmann, exigiria trocas em muitas linhas. Finalmente, deletar um pedido por um determinado cliente, por exemplo Qiang Zhu (que comprou um computador caro), se for dele somente o pedido permanente, excluir a nica cpia do seu endereo e avaliao de crdito como um efeito colateral. Tais informaes podem ser difceis (ou algumas vezes impossveis) de recuperar. Esses problemas tambm ocorrem para situaes na qual o banco de dados j foi configurado como uma coleo de muitas tabelas, mas algumas das tabelas ainda so muito grandes. Ns temos um mtodo de romper tal tabela grande em tabelas menores de modo que esses tipos de problemas seriam eliminados, o banco de dados seria muito mais eficiente e confivel. Classes de esquemas de um banco de dados relacional ou definies de tabelas, chamadas formas normais, so comumente usadas para realizar este objetivo. A criao de uma forma normal em uma tabela do banco de dados chamada normalizao. Normalizao realizada pela anlise de interdependncias entre atributos individuais associados com aquelas tabelas e tomando projees (subconjunto de colunas) de tabelas grandes para formar menores.

http://erinaldosn.wordpress.com

2 Normalizao

Primeira forma normal (1FN)


Tabelas de um banco de dados relacional, tal como a tabela Vendas ilustrada acima, tem somente valores atmicos para cada linha de cada coluna. Tais tabelas so consideradas na primeira forma normal, o mais bsico nvel de tabelas normalizadas. Para entender melhor a definio para primeira forma normal, ajuda saber a diferena entre um domnio, um atributo e uma coluna. Um domnio o conjunto de todos os valores possveis para um particular tipo de atributo, mas pode ser usado para mais que um atributo. Por exemplo, o domnio de nomes de pessoas o conjunto fundamental de todos os possveis nomes que podem ser usados para cada nm_cliente or nm_vendedor na tabela do banco de dados acima. Cada coluna em uma tabela relacional representa um nico atributo, mas em alguns casos mais que uma coluna podem se referir a diferentes atributos para o mesmo domnio. Quando isso ocorre, a tabela ainda est na 1FN porque os valores na tabela ainda so atmicos. De fato, o padro SQL assume somente valores atmicos e uma tabela relacional est por padro na 1FN. Uma tabela est na primeira forma normal (1FN) se e somente se todas as colunas contm somente valores atmicos isso , cada coluna pode ter somente um valor para cada linha na tabela.

Super chaves, chaves candidatas e chaves primrias


Uma tabela na 1FN frequentemente sofre de duplicao de dados, degradao no desempenho da atualizao e problemas de integridade na atualizao, como falado acima. Para entender essas questes melhor, contudo, nos devemos definir o conceito de uma chave no contexto de tabelas normalizadas. Uma super chave um conjunto de um ou mais atributos que, quando tomados coletivamente, permitem-nos identificar unicamente uma entidade ou tabela. Alguns subconjuntos de atributos de uma super chave que tambm uma super chave e no reduzvel para outra super chave chamada de chave candidata. Uma chave primria selecionada arbitrariamente de um conjunto de chaves candidatas para ser usado em um ndice para aquela tabela. Como um exemplo, a tabela abaixo um composto de todos os atributos da tabela forma uma superchave porque linhas duplicadas no so permitidas no modelo relacional. Assim, uma super chave trivial formada de um composto de todos os atributos em uma tabela. Assumindo que cada endereo de departamento (nm_endereco_departamento) nessa tabela valor nico, ns podemos concluir que o composto de todos os atributos exceto nm_endereco_departamento tambm uma super chave. Olhando para menores e menores compostos de atributos e fazendo previses realistas sobre quais atributos so de valores nicos, ns encontramos que a combinao (cd_relatorio, id_autor) unicamente determina todos os outros atributos na tabela e , portanto, uma super chave. Contudo nem cd_relatorio nem id_autor sozinhos podem determinar uma linha unicamente, e a composio desses dois atributos no podem ser reduzidos e ainda ser uma super chave. Assim, a composio (cd_relatorio, id_autor) torna-se uma chave candidata. Desde que a nica chave candidata nessa tabela, tambm se torna a chave primria.

http://erinaldosn.wordpress.com

Modelagem de Dados 3

Uma tabela pode ter mais que uma chave candidata. Se, por exemplo, na tabela acima, ns tivssemos uma coluna adicional para cd_cpf_autor, e a composio (cd_relatorio, cd_cpf_autor) unicamente determinou todos os outros atributos da tabela, ento ambos (cd_relatorio, id_autor) e (cd_relatorio, cd_cpf_autor) seriam chaves candidatas. A chave primria seria ento uma escolha arbitrria entre esses duas chaves candidatas.

Segunda forma normal (2FN)


Na explicao o conceito da segunda forma normal (2FN) e mais, ns introduzimos o conceito de dependncia funcional. A propriedade de um ou mais atributos unicamente determinam o valor de um ou mais outros atributos chamado dependncia funcional. Dada uma tabela R, um conjunto de atributos B funcionalmente dependente de um outro conjunto de atributos A se, em cada instncia de tempo, cada valor de A associado com somente um valor de B. Tal dependncia funcional denotada por A B. No exemplo anterior, vamos assumir que so dados as seguintes dependncias funcionais para a tabela relatrio: cd_relatorio nm_editor, cd_departamento cd_departamento nm_departamento, nm_endereco_departamento id_autor nm_autor, nm_endereco_autor Um exemplo de dependncia funcional transitiva na tabela relatrio o seguinte: cd_relatorio cd_departamento cd_departamento nm_departamento Portanto, ns podemos derivar a dependncia funcional (cd_relatorio nm_departamento) desde que nm_departamento seja transitivamente dependente do cd_relatorio. Continuando nosso exemplo, a chave composta (cd_relatorio, id_autor) a nica chave candidata e , portanto, a chave primria. Contudo, existe uma dependncia funcional (cd_departamento nm_departamento, nm_endereco_departamento) que no tem componente da chave primria do lado esquerdo, e duas dependncias funcionais (cd_relatorio nm_editor, cd_departamento e id_autor nm_autor, nm_endereco_autor) que contm um componente da chave primria do lado esquerdo, mas no ambos componentes. Como tal, a tabela relatrio no satisfaz a condio para 2FN para nenhuma das dependncias funcionais. Considere as desvantagens da 1FN na tabela relatrio. Cd_relatorio, nm_editor e cd_departamento no esto duplicadas para cada autor do relatrio. Portanto, se o editor do relatrio muda, por exemplo, vrias linhas devem ser atualizadas. Isso conhecido como anomalia de atualizao, e representa uma potencial degradao do desempenho adequado para a atualizao redundante. Se um novo editor para ser adicionado a tabela, isso pode ser feito somente se o novo editor est editando um relatrio: ambos o nmero do relatrio e o nmero do editor devem ser conhecidos para adicionar uma linha a tabela, porque voc pode no ter uma chave primria com um valor nulo na maioria dos bancos de dados relacionais. Isso conhecido como a anomalia de insero. Finalmente, se um relatrio retirado, todas as linhas associadas com aquele relatrio devem ser apagadas. Isso tem o efeito colateral de deletar a informao que associa um id_autor com nm_autor e nm_endereco_autor. Efeito colateral de deleo dessa natureza so conhecidas como anomalias de excluso. Eles representam uma perca potencial de integridade, porque o nico jeito do dados ser restaurado encontrar o dado em algum lugar fora do banco de dados e inseri-lo de
http://erinaldosn.wordpress.com

4 Normalizao

volta ao banco. Tudo o que h dessa anamalias representam problemas para o projetista do banco de dados, mas a anomalia de excluso de longe a mais sria porque voc pode perder um dado que pode no ser recuperado. Essas desvantagens podem ser superadas pela transformao da tabela na 1FN em duas ou mais tabelas na 2FN pelo uso do operador de projeo em um subconjunto de atributos na tabela na 1FN. Nesse exemplo nos projetamos relatrio sobre cd_relatorio, nm_editor, cd_departamento, nm_departamento, e nm_endereco_departamento para formar relatorio1; um projeto relatrio com id_autor, nm_autor, e nm_endereco_autor para formar relatorio2; e finalmente, projetamos relatrio com cd_relatorio e id_autor para formar relatorio3. A projeo de relatrio em trs tabelas menores tem preservado as dependncia funcionais e a associao entre cd_relatorio e id_autor que foi importante na tabela original.

As dependncias funcionais para essas tabelas na 2FN so: Relatrio1: cd_relatorio nm_editor, cd_departamento cd_departamento nm_departamento, nm_endereco_departamento Relatorio2: id_autor nm_autor, nm_endereco_autor Relatorio3: (cd_relatorio, id_autor) uma chave candidata (sem dependncia funcional)
http://erinaldosn.wordpress.com

Modelagem de Dados 5

Ns temos agora trs tabelas que satisfazem as condies para 2FN, e ns eliminamos os piores problemas da 1FN, especialmente integridade (a anomalia de excluso) Uma tabela est na segunda forma normal (2FN) se e somente se est na 1FN e todos os atributos no chave completamente dependente da chave primria. Um atributo completamente dependente da chave primria se est no lado direito de uma dependncia funcional

Terceira forma normal (3FN)


As tabelas na 2FN que ns demonstramos acima representam uma melhoria significante em relao as tabelas na 1FN. Contudo, elas ainda sofrem de alguns tipos de anomalias como as tabelas na 1FN, embora por diferentes razes associadas com dependncias transitivas. Se uma dependncia (funcional) transitiva existe em uma tabela, significa que dois fatos separados so representados naquela tabela, um fato para cada dependncia funcional envolve um lado esquerdo diferente. Por exemplo, se ns apagamos um relatrio de uma base de dados, que envolve a excluso da linha apropriada da relatorio1 e relatorio3, n temos o efeito colateral de excluir a associao entre cd_departamento, nm_departamento e nm_endereco_departamento tambm. Se ns podemos projetar relatorio1 sobre cd_relatorio, nm_editor e cd_departamento para formar a tabela relatorio11, e projetar relatorio1 sobre cd_departamento, nm_departamento e nm_endereco_departamento para forma a tabela relatorio12, ns podemos eliminar esse problema.

No exemplo anterior, aps projetar relatorio1 para relatorio11 e relatorio12 para eliminar dependncia transitiva de cd_relatorio cd_departamento nm_departamento, nm_endereco_departamento ns temos as tabelas na 3FN e seus dependncias funcionais. Relatorio11: cd_relatorio nm_editor, cd_departamento Relatorio12: cd_departamento nm_departamento, nm_endereco_departamento Relatorio2: id_autor nm_autor, nm_endereco_autor Relatorio3: (cd_relatorio, id_autor) um chave candidata (sem DFs) Uma tabela est na terceira forma normal (3FN) se e somente se para todas dependncias no triviais X A, onde X e A so atributos simples ou compostos, uma de duas condies deve
http://erinaldosn.wordpress.com

6 Normalizao

Exerccios
1. Assinale a alternativa que represente a exceo. a) A 3FN no se aplica a tuplas que tenham chave composta. b) A 1FN no se aplica a tuplas que tenham chave concatenada. c) A normalizao existe para que se possa gerar redundncias controladas no modelo de dados. d) A normalizao tem o objetivo de eliminar redundncias no modelo de dados. e) A 1FN elimina as dependncias transitivas da chave da instncia de uma entidade. 2. Em relao Modelagem Entidade-Relacionamento Classificao de atributos, a afirmativa o seu valor pode ser calculado a partir do valor de outro(s) atributo(s) refere-se a: a) atributo composto. b) atributo derivado. c) atributo determinante. d) domnio de um atributo. e) tipo de um atributo. 3. Com relao Modelagem Entidade-Relacionamento Normalizao de dados, se todos os domnios que no so chaves forem completamente dependentes funcionalmente da chave-primria, temos uma relao normalizada: f) de projeo. g) de generalizao. h) primeira forma normal. i) segunda forma normal. j) terceira forma normal. 4. Assinale a alternativa que represente a exceo. a) Uma relao para estar na 3FN, precisa estar antes na 1FN e na 2FN. b) Uma relao sem chave concatenada no estar fora da 2FN. c) A normalizao pode gerar um mesmo atributo em duas entidades diferentes. d) O modelo conceitual de dados, por ser independente da tecnologia, no deve ter nenhuma redundncia de dados. e) No modelo fsico de dados, para garantir performance do sistema instalado, se necessrio, cria-se algumas redundncias que devem ser muito bem controladas. 5. Normalize cada uma das entidades a seguir e preencha a matriz abaixo. O atributo sublinhado o atributo chave da entidade: VEICULO = cd_placa,_veiculo, nm_veiculo, cd_cpf_proprietario, nm_proprietario, (dt_licenciamento, vl_licenciamento) OFERECIMENTO_DISCIPLINA = id_disciplina, aa_oferecimento_disciplina, qt_vaga_oferecida_disciplina FUNCIONARIO = cd_matricula_func, nm_func, dt_nascimento_func, cd_rg_func, cd_cpf_func, dt_admissao_func NOTA_FISCAL = cd_nota_fiscal, dt_emissao_nota_fiscal, (qt_mercadoria, cd_mercadoria, nm_mercadoria, vl_mercadoria, vl_total_mercadoria) DEPARTAMENTO = sg_depto, nm_depto, qt_total_func_depto, cd_matr_chefe_depto, nm_chefe_depto
ENTIDADE VEICULO OFERECIMENTO_DISCPLINA FUNCIONARIO NOTA_FISCAL http://erinaldosn.wordpress.com FORA 1FN DA FORA 2FN DA FORA 3FN DA NORMALIZADO

Modelagem de Dados 7
DEPARTAMENTO

6. Os trs fluxos abaixo fazem parte do mesmo sistema. Proponha o modelo de dados do sistema utilizando a tcnica de normalizao. RESULTADO_EXAME_FINAL = id_disciplina, nm_discplina, (cd_matricula_aluno, nm_aluno, qt_nota_exame_final) DISCIPLINA_OFERECIDA = nm_escola, sg_escola, cd_cnpj_escola, (cd_disciplina, nm_disciplina) CORPO_DOCENTE = nm_escola, (cd_cpf_docente, nm_docente, dt_admissao_docente) 7. Normalize o fluxo de dados abaixo e proponha o modelo de dados. CURRICULUM_VITAE = cd_cpf_candidato, nm_candidato, (dt_inicio_emprego, dt_fim_emprego, cd_cnpj_empresa, nm_razao_social_empresa, cd_habilidade, nm_habilidade, ds_habilidade) 8. Descreva o fluxo de dados abaixo, normalize e construa o modelo de dados correspondente. PREFEITURA MUNICIPAL DE SMALLVILLE Participantes da Concorrncia Pblica Edital 854/11 Servio: Pavimentao asfltica Total do servio: 25km Valor esperado por KM: Perodo esperado dos servios: R$ 700.000,00 120 dias EMPRESAS QUE APRESENTARAM PROPOSTA EMPRESA CNPJ VALOR/KM PERODO PROPOSTO Coelho Pai 91.487.334/0001-88 680.000,00 150 dias Coelho Filho 91.549.005/0001-55 675.000,00 130 dias Coelho Neto 91.690.555/0001-34 714.000,00 110 dias Tatao Associados 86.499.398/0001-42 705.000,00 120 dias Magos do Piche 90.984.342/0001-90 620.000,00 200 dias Asfalto no Mundo 87.345.223/0001-84 800.000,00 100 dias 9. Com base no texto apresentado a seguir, desenhe o modelo de dados. Observe a lista de possveis atributos apresentados abaixo, indique os atributos pertinentes a cada entidade. Abandone os que no dizem respeito a nenhuma entidade encontrada no texto. Oferecemos vrios cursos em nossa universidade. Cada curso tem diversas turmas. Uma turma s pode ser de um curso, todo o ano tem uma turma nova em cada curso. Toda disciplina tem apenas um professor, muito embora um professor possa se responsabilizar por diversas disciplinas. Cada turma tem um grupo de alunos, e no aceitamos que um aluno participe de duas turmas cursando dois cursos ao mesmo tempo. A turma pode ter muitos alunos, mas cada aluno se inscreve em apenas uma e somente uma turma. uma regra nossa. Agora quanto as disciplinas que so oferecidas, todo aluno pode cursar o nmero de disciplina que conseguir ou estiver disposto. Neste aspecto no temos restries. nm_disciplina dt_nascimento_aluno nm_reitor_universidade cd_matricula_aluno aa_ingresso_turma nm_ministro_educacao qt_aluno_inicial_turma cd_rg_aluno nm_professor nm_aluno nm_universidade cd_matricula_professor dt_admissao_professor nm_pai_aluno nm_curso cd_cnpj_universidade
http://erinaldosn.wordpress.com

8 Normalizao

cd_sala_aula aa_formatura_prevista_turma id_disciplina dt_nascimento_dependente id_equipamento_uso_disciplina id_curso id_turma qt_hora_prevista_disciplina 10. Construa o modelo de dados que envolve o controle de requisio de mercadorias: REQUISIO DE MERCADORIAS PARA REPOSIO DE ESTOQUE N da requisio: Data da requisio: / / N da filial: Nome da Filial: Perodo Solicitado para a Entrega: de / / a / / FUNCIONRIO RESPONSVEL PELA REQUISIO Nome: Matrcula: Cdigo da Mercadoria Mercadoria Quantidade Solicitada

Bibliografia
Database Modeling and Design: Logical Design Toby Teorey, Sam Lightstone, Tom Nadeau, H. V. Jagadish USA: Elsevier, 2011

http://erinaldosn.wordpress.com