Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

1FN - Decomposição vs Quebra em Linhas

Olá, fiquei com dúvida em um ponto.

Quando o professor explica sobre a primeira regra de normalização (1FN), ela mostra um exemplo de decomposição da relação, onde a tabela Departamento se divide em duas outras (Departamento e Localizacoes_Departamento). Nessa segunda tabela, para um mesmo Numero_Departamento eu acabo tendo três diferentes classificações para o número 5 que são Santo André, Itu e São Paulo para Local_Departamento.

Por mais que tenha acontecido a "divisão", e que a tabela de Departamento não tenha mais o atributo composto contendo as três classificações num mesmo campo, quando eu for criar a relação (join) entre as tabelas Departamento e Localizacoes_Departamento na prática, eu vou gerar a mesma redundância que é exemplificado quando o professor mostra a quebra em linhas de Departamento , ao invés de duas tabelas.

Gostaria de entender a diferença entre os dois tipos de normalização acima citados, e saber porque o primeiro de decomposição não acaba sendo classificado como redundante também, uma vez que ele continuará tendo três classificações distintas para um mesmo item (5) e isso estará explícito quando eu criar relações (joins).

Obrigado desde já!

Abraços, Mathaus.

2 respostas

A primeira forma normal não torna redundante por conta da apresentação dos dados.

Digamos que a tabela departamento e local são respectivamente:

Departamento = {id, nome, id_chefe, telefone, mail, url_site, total_funcionarios}
Local_Departamento = {id, id_departamento, id_sede, endereco, cep, id_municipio}

Na hora de apresentar um relatório com todos os departamentos e locais, normalmente esse relatório vai ser produzido para 'navegar' entre os dados. Algo como:

DepartamentoChefeTelefoneMailLocais
Departamento AFulano66669999nono@nono3
Departamento BBeltrano88889999nono@nono1
Departamento CSicrano11114444nono@nono2

E clicando em 'Locais' ou em 'Departamento' é exibido o detalhe, com a lista completa de locais.

Mas sim existem exceções onde não vale a pena aplicar a 1FN. Por exemplo, no cadastro da pessoa são solicitados 3 números: pessoal, trabalho e celular. Não há necessidade de aplicar a normalização nesse caso porque quando for montado um relatório de dados de contato, todos os 3 números serão uteis, nunca um será suprimido ou terá mais utilidade que o outro.

solução!

Mathaus, considerando o aspecto "físico", as tabelas ficam armazenadas em um local.

Você utiliza os Joins em consultas, para processar os dados contidos nas tabelas (gerar um relatório, por exemplo).

Mas se você resolver armazenar o resultado de um Join que possui dados redundantes, o espaço ocupado será maior do que o das tabelas separadas que estavam sem redundância. O que torna esse agrupamento de atributos pior do que os agrupamentos das duas tabelas separadas.

Daí, de volta ao que o instrutor falou na atividade 02 "Atributos ideais" da aula 01 "Diretrizes para a qualidade do esquema de relação" https://cursos.alura.com.br/course/modelagem-banco-relacional-normalizacao/task/75087:

[01:34] Nós vamos analisar aqui nesse curso como nós medimos formalmente os atributos das nossas relações a fim de determinar se um agrupamento de atributos é melhor, por exemplo, do que outro agrupamento de atributos.

[01:55] Existem dois níveis em que podemos discutir a adequação dos nossos esquemas de uma relação. O primeiro nível será o nível lógico ou conceitual. (...)

[02:48] O segundo nível, nós chamamos de um nível físico. Ele tem relação com a forma com que as tuplas vão ser armazenadas e atualizadas dentro da base.

Além da 1FN possuir a vantagem das duas tabelas resultantes ocuparem menos espaço do que a tabela original do exemplo, a consulta também é facilitada.

Por exemplo: Quais departamentos estão localizados em São Paulo?

Nessa altura do curso, tenho certeza que você já visualizou mentalmente como fazer a consulta de forma direta, usando as duas tabelas resultantes da 1FN (figura abaixo).

Agora, se a única tabela disponível fosse a tabela original do exemplo, o esforço para extrair essa informação seria maior.

Exemplo de Primeira forma normal (1FN)