É que muitas vezes se não pensamos nestes detalhes que a princípio parecem trazer complexidade, depois do sistema feito acabamos tendo muita dificuldade para mudar. Por isso acho que uma modelagem inicial mais complexa vai garantir mais flexibilidade depois.

Quanto ao que falou abaixo, realmente pode ser que não compreendi todos os relacionamentos do teu modelo. Assim que tiver um tempo dou uma olhada melhor e te respondo OK?

"Veja que de estoque posso chegar a produtos e cheguei a fazer como você sugere, acontece que fechou-se um círculo de relacionamentos. Não há necessidade, pois se de estoque vou a compra-itens e desta vou a produto, tá resolvido, ou não?"

O negócio hoje aqui tá bem corrido...

Obrigado!
Att.
Alex

Ribamar Sousa escreveu:
2008/6/23 Alexsandro Haag <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>>:

    Concordo, temos que ter um ponto de partida.

    Sobre a modelagem em geral eu faria algumas sugestões:

        * 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), com isso um fornecedor pode em
          qualquer momento se tornar cliente sem que seja necessário
          um novo cadastro ou importação de cadastro. Assim como um
          funcionário pode ser cliente ou fornecedor em qualquer
          momento. Vi que você já tem um cadastro de empresas, que
          deve estar sendo utilizado como uma Unidade Organizacional.
          Esta poderia também continuar sendo uma empresa sem problemas.
        * 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)

Acho que isso não confronta com a normalização, realmente pelo contrário, mas a coisa deve ser feita com calma, pois parece ficar mais complexa.

                               *


        *  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. 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. Além
          disso, da forma como está definida a sua modelagem o sistema
          só venderá para pessoa física, nunca para pessoa jurídica.

Como já disse, acredito que um sistema sério não deve ter essas "brechas".

       *


        * Eu chamaria a entidade "Almoxarifados" de algo mais
          genérico, como "Centros de Armazenagem" ou algo ainda mais
          genérico, pois muitas vezes os estoques estão espalhados
          pela empresa, não somente dentro de um ou mais
          almoxarifados. (Mas claro isso é só nomenclatura, nada
          impediria a utilização com este nome);

Concordo.

       *


        * 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. Além disso uma venda também é feita a partir de
          um produto e não vi chave estrangeira do produto para o seu
          item de pedido.

Também concordo, mas também com calma.

       *


        * A sua tabela "Estoque" também não tem produto associado.
          Creio que todo controle de estoque deve ser feito baseado
          nos produtos (matéria-prima, intermediários, produtos de venda).

Veja que de estoque posso chegar a produtos e cheguei a fazer como você sugere, acontece que fechou-se um círculo de relacionamentos. Não há necessidade, pois se de estoque vou a compra-itens e desta vou a produto, tá resolvido, ou não?


        Bom, essas são minhas sugestões, espero que não as leve a mal.
    As intenções são boas, e talvez eu esteja enxergando as formas de
    implementação de Estoque que já trabalhei, que foram sempre
    semelhantes ao que expus acima.

        Aguardo as considerações do pessoal da lista... e mais uma vez
    parabenizo o Ribamar pela iniciativa.


Grato Alex e se for por min eu levo muito a bem, pois foi essa a intenção, gerar debate para que isso venha a motivar os colegas (e a min) a encararem o assunto com mais seriedade. Geralmente quando se vai desenvolver um sistema, criar um banco, simplesmente abrimos o psql ou pgadmin e o criamos. As consequências futuras algumas vezes são bem chatas. Ainda tem mais, geralmente o sistema ou banco é populado, tá cheio de registros e vamos deixar como está, não vamos mexer.

Pelo pouco que já estudei, dá para perceber que separar as tabelas cada uma com um únco assunto, sem valores de campo se repetindo, sem valores ficando em branco, evitando ao máximo permitir nulo como default, todas as tabelas relacionadas, tudo isso e mais levam a um projeto onde alterações futuras serão quase indolores, sem contar com informações sem redundância e outras boas consequências.

Valeu Alexsandro!

--
Ribamar FS - [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>
http://ribafs.net
------------------------------------------------------------------------

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a