Leandro DUTRA escreveu:
2008/6/23 Alexsandro Haag <[EMAIL PROTECTED]>:
Ao invés de um cadastro de clientes e outro de fornecedores poderia haver
apenas uma tabela de cadastro de Empresas ou Pessoas (como achar melhor)

Não.

Pode haver uma hierarquia de entidades pais e filhas.  Pessoas a raiz,
aí pessoas_físicas ou pessoas_jurídicas (um arco), e doutro lado
fornecedores ou clientes (outro arco)...

Realmente, é mais conceitual desta forma, melhor ainda.
Para melhor viabilizar a unificação de cadastro acima (não estou quebrando
regras de normalização, pelo contrário) poderíamos aí criar um novo 
cadastro
de TIPOS_DE_EMPRESA e uma outra chamada EMPRESA_TIPOS (que conteria os tipos
associados a determinada empresa) Ex.:

EMPRESA: ALEX

TIPOS_DE_EMPRESA (FUNCION�RIO,CLIENTE,FORNECEDOR, UNIDADE ORGANIZACIONAL)
EMPRESA_TIPO: ALEX - (FUNCION�RIO,CLIENTE)

Se for o caso, chame de PESSOA então. O nome da entidade não altera a questão. O que me refiria era sobre poder manter o cadastro na mesma entidade. Independente do nome que tiver.
Hm... não... um funcionário por definição não pode ser empresa.  Isso
aí não é normalizado nem aqui, nem na china.
É importante que sejam identificados adequadamente os nomes das entidades, mas não é o nome que define que está ou não normalizada. A normalização tem a ver com estruturação das entidades, não os seu rótulos.

 Outra sugestão seria utilizar um código sequencial para o cadastro desta
empresa (fornecedores,funcionários,clientes), pois os campos de CPF e CNPJ
como chaves primárias pode limitar o sistema.

Eles têm de ser declarados como chaves � e aí a importância da
normalização, e as entidades mais específicas que delineei acima.
Eu os criaria como chaves secundárias, não como primárias ou únicas. Pelos motivos que citei acima e reforcei abaixo.

Conheço inúmeros casos reais
onde há várias vezes, pelas mais diferentes razões, clientes "diferentes"
cadastrados com o mesmo CPF ou mesmo CNPJ.

Tem de ver se as razões são razoáveis, me parece mais um defeito de
modelagem exigindo gambiarras.
Isso muitas vezes depende de como o cliente quer tratar sua base. Por exemplo ele pode não possuir 2 empresas com CNPJs diferentes, mas quer trabalhar como se tivésse, devido a alguma logística sua. Pode ter por exemplo a indústria num prédio dos fundos e a loja no prédio da frente e vai querer fazer uma transferência de produto de uma unidade para outra. Neste caso ele vai querer cadastrar duas unidades organizacionais, com o mesmo CNPJ.

Claro que há outras maneiras de tratar isso, poderíamos por exemplo obrigar o cliente a registrar uma outra empresa/filial para a loja, mesmo elas estando no mesmo endereço, o que seria o mais correto a fazer. Mas na prática isso não é flexível para o cliente.

Ou poderíamos ainda acrescentar uma sequencia que complementasse o CNPJ e a PK ficaria CNPJ + sequencia, mas acho neste caso seria mais simples criar ID sequencial e uma rotina para alertar, mas não bloquear o usuário quando tentar criar um cliente que já exista no cadastro.

Esse tipo de situação é mais comum do que parece. Além de ver N outras situações que convergem para esta mesma questão.

Sempre poderia ser tratado de outra forma, e talvez tenham sugestões melhores para o caso explanado, mas aí o modelo ER proposto não está fazendo este tratamento atualmente.


Outra coisa que vejo que poderia ser unificado é o cadastro de Pedidos. O
pedido pode ser de Venda, mas também um pedido de Compra.

Então mais uma vez, seria uma entidade-pai pedidos e um arco de
entidades-filhas de vendas, compras, serviços, o que for.
   Concordo.
Att. Alex
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a