Maneju 0 Denunciar post Postado Agosto 28, 2006 Olá a todos!Estou desenvolvendo um software aonde os clientes do cadastro indicam 5 novos clientes, este 5 masi indicam mais cinco e assim sucessivamente. O problema é que a amarração disso pode ficar enorme. Na primeira indicação são 5, depois, 125, depois 625, e aí vai...Gostaria de uma ajuda da melhor maneira para modelar o Banco de Dados de maneira que me facilite na hora de consultas.Hoje eu guardo um registro com o código do cliente com o código do cliente que indicou. Suponha que eu sou o cliente um e indiquei os clientes 2,3,4,5 e 6. Na minha tabela terei 5 registros como mostrado abaixo:1.21.31.41.51.6se o cliente 2 indicar masi 5 (suponha 7,8,9,10 e 11), ficará assim1.21.31.41.51.62.72.82.92.102.11Deu para perceber que isto ficará enorme mas, não estou vendo uma outra forma de fazer isto.Grato!Manoel Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo Miss 1 Denunciar post Postado Agosto 28, 2006 kra... uma x fiz algo parecido,, so q naum lembro mto bm como foi... parec q foi o seguintevocê faria um campo pro Cliente e outro campo pra ClienteIndicadono campo ClienteIndicado seria um campoi do tipow memorando,,, nas consultas você pegaria tipow cliente nro 4 e Clientes indicados você pegava por linhas dentro d uma celula so...sendo assim pouparia akela bagunca com mtas linhas no banco... mais em questao de tamanho do banco naum muda mto naum...pena eu naum lembrar direito... + ta ai.... beleza Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Agosto 28, 2006 Acho que você tb poderia simplismente criar mais um campo na própria tabela de cliente referência o cliente que indicou o mesmo. Tipo, na hora que estaria cadastrando o novo cliente, caso ele tenha sido indicado por alguém, apenas preencheria este campo da tabela, depois em consultas e relatórios seria um select sobre a mesma tabela. Compartilhar este post Link para o post Compartilhar em outros sites
Maneju 0 Denunciar post Postado Agosto 28, 2006 Olá.O problema é que eu preciso saber os clientes indicados diretamente e os indicados indiretamente. Suponha que eu seja o cliente 1 e indique os cliente 2,3,4,5 e 6. Até aí tudo bem, estes 5 estão no meu primeiro nível de indicação. No segundo nível de indicação, vem mais 25 clientes, ou seja, 5 indicações (indiretas)dos cliente2, 5 do 3, 5 do 4, 5 do 5 e 5 do 6. Funciona como uma Pirâmide, o problema é que a cada nível, os clientes são multiplicados por 5, assimNível 1 = 5Nível 2 = 25Nível 3 = 125Nível 4 = 625Nível 5 = 3125Nível 6 = 15625Manoel Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Agosto 28, 2006 Bom... Eu continuo pensando que um único campo iria servir, pois você pode buscar sempre o registro em forma de cascata, tipo:Cod. Cadastro - Cód. Indicacao10 - 111 - 113 - 220 - 223 - 154 - 10Pegando o exemplo do "Cod. Cadastro" = 54, nele você acha o "Cód. Indicacao" = 10, agora se pega o cod 10 se faz nova consulta e se encontra o 1, seria uma coisa que iria dar um pouco de trabalho. Compartilhar este post Link para o post Compartilhar em outros sites
Maneju 0 Denunciar post Postado Agosto 28, 2006 Ok, é desta forma que faço hoje. Mas veja que cada clientye pode indicar outros 5. Estes 5 mais 5 (já contam 25), os 25 + 5 cada )mais 125). Terei que fazer 125 SQLs?Por isso que estou procurando uma maneira de melhorar a Modelagem do Banco ou inventar uma SQL que englobe tudo.ManoelO sistema é uma pirâmide de ponta cabeça. Quem está na parte de baixo, nao está limitado somente nas 5 indicações que ele mes mas, até o topo da Pirâmide. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Agosto 28, 2006 Mas no caso para você importa então desde a origem ? No caso além de saber quem indicou o cliente você tb quer saber a origem de todos no caso ? Compartilhar este post Link para o post Compartilhar em outros sites
Maneju 0 Denunciar post Postado Agosto 28, 2006 Exato. Não há limite para a pesquisa. Pego a partir dos 5 que indiquei e vou pesquisando nas indicações posteriores.Ps. desde a origem não. Da origem quando quiser saber a partir do primeiro cliente que entrou no sistema... Pode ser a partir de qual parte pois, todos partirão de 5 indicados. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Agosto 28, 2006 Entendi... Isto você vai querer mostrar em um relatório ? Ficando algo do tipo: 1 - TESTE1 3 - TESTE3 4 - TESTE4 10 - TESTE10 55 - TESTE552 - TESTE2 Compartilhar este post Link para o post Compartilhar em outros sites
Maneju 0 Denunciar post Postado Agosto 29, 2006 é desta forma mesmo. Inclusive no modelo que voce colocou, o "TESTE2" poderia estar na "árvore" de clientes do "TESTE1".Não vou precisar de um relatório que mostre todas as árvores. Vou usar sempre um cliente por vez, não importando em que parte da árvore ele esteja mas, sempre a partir dele, monto a árvore referente a ele.Grato pela atenção!Manoel Compartilhar este post Link para o post Compartilhar em outros sites
Maneju 0 Denunciar post Postado Agosto 29, 2006 1 - TESTE1 2 - TESTE2 3 - TESTE3 4 - TESTE4 5 - TESTE5 6 - TESTE6 2 - TESTE2 7 - TESTE7 8 - TESTE8 9 - TESTE9 10 - TESTE10 11 - TESTE11 3 - TESTE3 12 - TESTE12 13 - TESTE13 14 - TESTE14 15 - TESTE15 16 - TESTE16 2 - TESTE2 7 - TESTE7 8 - TESTE8 9 - TESTE9 10 - TESTE10 11 - TESTE11 3 - TESTE3 12 - TESTE12 13 - TESTE13 14 - TESTE14 15 - TESTE15 16 - TESTE16 Compartilhar este post Link para o post Compartilhar em outros sites
Maneju 0 Denunciar post Postado Agosto 30, 2006 fiz algumas pesquisas em árvore binária, busca em largura, busca em profundidade e ainda não consegui uma solução satisfatória. se alguém tiver alguma luz, por favor poste pata mim.Obrigado!Manoel Compartilhar este post Link para o post Compartilhar em outros sites