Sistema de Pontuação por níveis

Firebird

22/04/2010

Bom dia Amigos,

Estou com um grande problema nas mãos.
Preciso fazer um sistema de pontuação por níveis.

Explicando melhor:

Eu(Robson) compro em uma loja.

Se eu indicar o Jose,
Eu(Robson) ganho 10 pontos

Se o Jose indicar o Pedro,
Jose Ganha 10 pontos
Robson ganha 7 Pontos

Se o Pedro indicar a Maria,
Pedro ganha 10 Pontos,
Jose ganha 7 Pontos e
Robson ganha 5 pontos

Se a Maria indicar o Marcos,
Maria ganha 10 pontos
Pedro ganha 7 pontos
Jose ganha 5 pontos
Robson ganha 3 pontos

Se o Marcos indicar o Manuel
Marcos ganha 10 Pontos
Maria ganha 7 pontos
Pedro ganha 5 pontos
Jose ganha 3 pontos
Robson ganha 1 pontos

A partir do 5º nível eu (Robson) não ganho mais pontos. Ou seja, é um sistema de pontuação ate o 5º Nível
Mas não tenho idéia de como fazer isso. Quais tabelas criar  e nem como fazer isso por
SQL
Lembrando que tenho que atualizar os pontos de todos os membros dos 5 níveis sempre que alguém é indicado, Respeitando os pontos de cada nível
E Também sabendo que qualquer um pode indicar quantas pessoas quiser ganhando pontos por todos que indicar

Uso Firebird 1.5 e Asp.Net C#
Alguém pode me ajudar?
Grato
Robson Chaves

Robson Chaves

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

22/04/2010

CREATE TABLE PESSOA(
  ID              INTEGER            NOT NULL, /* Índice da tabela */
  Nome            VARCHAR(50)        NOT NULL, /* Nome da pessoa */
  Pontuacao       INTEGER DEFAULT 0  NOT NULL, /* Pontuação */
  CodPessoaInd    INTEGER,                     /* Pessoa que a indicou */

  CONSTRAINT PK_PESSOA PRIMARY KEY(NumSeq)
);

ALTER TABLE PESSOA
  ADD CONSTRAINT FK_PESSOA_CODPESSOAIND FOREIGN KEY (CodPessoaInd) REFERENCES PESSOA(ID);



Como ficará os registros:


  ID  Nome             Pontuacao  CodPessoaInd
====  ===============  =========  ============
   1  Robson                   0         NULL


Ao incluir o José ficará
  ID  Nome             Pontuacao  CodPessoaInd
====  ===============  =========  ============
   2  José                     0             1
   1  Robson                  10          NULL    /* Soma 10 pontos no campo Pontuacao */


Ao incluir o Pedro ficará
  ID  Nome             Pontuacao  CodPessoaInd
====  ===============  =========  ============
   3  Pedro                    0             2
   2  José                    10             1    /* Soma 10 pontos no campo Pontuacao */
   1  Robson                  17          NULL    /* Soma 7 pontos no campo Pontuacao */



Ou seja, crie um contador para saber o nível em que está, "Contador = 1" para a pessoa que indicou Pedro (2-José), some 10, "Contador = 2" para a pessoa que indicou José (1-Robson), some 7, "Contador = 3", mas o campo CodPessoaInd é NULL, então para de somar a pontuação.

Espero ter colaborado.
GOSTEI 0
POSTAR