Ir para conteúdo
Fórum Script Brasil
  • 0

Até que ponto normalizar vale a pena?


Emilio Ferreira

Pergunta

Até que ponto normalizar vale a pena?

Exemplo:

Imaginemos um cenário que ou um cliente ou um fornecedor ou um funcionário podem ser ou uma pessoa física ou uma pessoa jurídica. Podemos fazer uma modelagem da seguinte forma:

Na Entidade Pessoa temos uma PK composta, com um id (AI) e um tipo (0 = Física, 1 = Juridica), além dos Atributos comuns entre as Entidade Fisica e Juridica, como inscricao_municipal (null).

Na Entidade Fisica, temos um relacionamento de um-para-um com a Entidade Pessoa, que gera uma PK composta (herda id e tipo da Entidade Pessoa) e os Atributos referentes a ela (nome, cpf, rg, sexo). E na Entidade Juridica temos o mesmo relacionamento com Pessoa, e os Atributos nome, cnpj, inscricao_estadual.

Além disso, também poderíamos aproveitar a Entidade Pessoa e relacioná-la com outras Entidades que Fisica e Juridica poderiam ter relacionamentos em comum, como Endereco, Telefone, etc.

Agora, imaginemos uma outra Entidade, chamada Funcao, que tem id (PK, AI) e nome (Funcao[1][nome] = Cliente, Funcao[2][nome] = Fornecedor, Funcao[3][nome] = Funcionario). Então, as Entidades Funcao e Pessoa tem um relacionamento que gera uma Entidade Associativa. Logo, essa Entidade pode se chamar Pessoas_Funcoes, e poderia ser composta por um atributo id (PK, AI), as FK pessoa_id, pessoa_tipo e funcao_id, além de um atributo data_cadastro.

Se tudo estiver correto, a Pessoa ID 15, Fisica, pode ter a Funcao 1 (cliente), 2 (fornecedor) e 3 (funcionario), que se chama "José da Silva" (com um CPF). E a Pessoa ID 15, Juridica, pode ter a Funcao 1, 2 e 3, com o nome de "Silva LTDA ME" e um CNPJ. Mas em qualquer dos 6 casos, a Pessoa pode ter os mesmos endereços e telefones.

 

Legenda:

PK = Primary Key

FK = Foreign Key

AI = Auto Increment

 

Agora, as perguntas que não querem calar:

1) Se em um sistema de compra e venda há tanto produto quanto serviço, vale a pena normalizar para um tipo parecido, citado acima?

Imagine que tanto em um venda quanto em uma compra possa haver um orçamento, um estorno uma nota fiscal (vários atributos em comum e entidades semelhantes) e essa compra ou venda também possa ser de um produto ou um serviço, com atributos comuns e entidades semelhantes.

2) Suponhamos que tudo estivesse normalizado, e que haveria entidades armazenando tanto dados da venda quanto da compra e outras com dados tanto do produto quanto do serviço, o banco de dados não ficaria mais lento para realizar uma consulta?

Imagine que a quantidade de dados de uma entidade em conjunto com compra e venda estivesse com 800 mil registros (é mais provável que haja mais registros de venda do que de compra). O banco de dados não faria menos esforço em uma consulta se esses mesmos dados estivessem separados?

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...