Necesito crear un modelo entidad relación para una base de datos multinivel hasta 6 niveles(relación recursiva).

Necesito crear un modelo entidad relación para una base de datos multinivel hasta 5 niveles(relación recursiva).

La idea es que cada vez que un user se registre, el sistema le ubique a cada user ya registrado el nivel.

Por ejemplo. 001-pepe(es el primero)

Idus name id-patrocinador

002 Hugo 001

003 Paco 001

004 Luis 002

005 Ana 003

Como pueden ver Pepe-001 tiene en su nivel1 a (002Hugo - 003Paco) y en su Nivel2 (004-Luis) por ser hijo de su primer nivel que es (002-Hugo).

Y a si sucesivamente pueden haber hasta 6 niveles.

¿Cómo hago para Darle el nivel de usuario a cada quien cuando se registra un nuevo Usuario?

La idea es que al final yo pueda consultar un user y me muestre todos sus afiliados y que nivel son.

Yo hice una tabla con relación recursiva, hasta ahí todo bien, pero necesito el temas de asignación de niveles, eso no me ha salido.

Nota:

En las bases de datos relacionales, cuando una tabla se relaciona consigo misma, este tipo de relación recibe el nombre de relación recursiva. Por ejemplo, en una relación supervisor-supervisado, una tabla que almacena los registros de empleados se relaciona consigo misma.

1 respuesta

Respuesta
1

Lo mejor, en mi opinión, es que para cada usuario tengas un campo en el que indiques el nivel en el que está ubicado.

Por otra parte, supongo que cuando das de alta a un nuevo usuario en algun sitio del formulario debes indicar quien es su usuario de rango superior.

Entonces simplemente se trataría de tomar el nivel del usuario de rango superior y sumarle 1

Si tienes dudas de como hacerlo me lo dices.

Pere, saludos,, Muchas gracias por responder, no entiendo muy bien lo que me dices pero voy a darle otro ejemplo haber si aclaro más lo que necesito.

Imagina que cuando usted ingresa algún usuario referido suyo queda para usted es nivel1, si ese usuario invita al negocio a otro usuario, entonces seria para el nivel1 pero ya para usted nivel2, y así sucesivamente. Pienso manejar 6 niveles. Y cada persona se le pagara una comisión dependiendo en que nivel ingreso su invitado.

Mil gracias quedo atento

Lo entendí bien.

Mi duda es saber en que parte estás atascado, si en el diseño de la tabla, si en el diseño de un formulario para ingresar los nuevos usuarios o si en la creación de una consulta que te de toda la jerarquía de un usuario (de él para abajo)

Por otra parte, te decía que en la tabla de ejemplo que pones, tienes previstos 3 campos: Idus name id-patrocinador.

El hecho de crear un modelo de datos basado en relaciones recursivas está muy bien, pero luego su manejo tiene una cierta complejidad.

En tu caso, cuando hablas de un máximo de 6 niveles, ello supone poner algún tipo de control en la entrada de nuevos usuarios para no rebasar este límite.

Es para entenderlo bien.

Hola... si los niveles son para el pago solo se paga hasta el 6to nivel.

Estoy atascado en el proceso de negocio..cuando se van agregando nuevos usuarios..dónde le digo a la tabla usuarios...que el  nuevo usuario que ingresa es (X) nivel para el.

Por que despues se debe generar una consulta donde muestra en el backoficce del usuario sus "invitados" del 1 al 6 nivel...y que comisiones a recibido por cada uno de ellos.

Es por eso que estoy atascado en organizar bien la información en las tablas..para poder generar bien todas las consultas necesarias.

Mil gracias por feedback...quedo atento...

De acuerdo.

Entonces entiendo que cualquier usuario puede arrastrar una cola infinita de usuarios con relaciones padres-hijos. Pero para cualquiera de ellos, solamente va a cobrar comisiones por los 6 primeros niveles que tenga por debajo.

¿Es así?

Si exacto...así es...

Si debajo suyo afilias a Jose... este es para ti nivel1... pero si Jose afilia a Pedro.. pedro es nivel1 para Jose.. pero para ti es nivel2. Y así...

En principio no haría falta que hicieras constar ningún nivel.

Con la tabla tal como la tiens configurada, la extracción de los 6 niveles inferiores de un usuario la podrías hacer con una consulta en la que usaras la misma tabla 7 veces (7 instancias de la tabla) enlazando cada una de ellas con el vínculo padre-hijo y filtrando únicamente el usuario que desees en la primera tabla.

Algo así

Esa opción ya la había pensado, pero no la puse en practica.

Me sigue la duda es como construir la lógica que hacia esas tablas cuando presione el botón registrar, por que tenemos que alimentar esas 6 tablas, tocaría recorrer toda las tablas y preguntar quien es superior a quien o algo así ....!

de todas formas voy ha realizar ese ejemplo haber que encuentro en la practica que me vaya ayudando...

mil gracias por responder..

A ver, tablas solamente hay una.

Si no lo entiendo mal, en el formulario en el que des de alta a un nuevo usuario, se trataría de poner un combo en el que pudieras escoger al usuario prescriptor.

Este combo se alimentaría de la propia tabla de usuarios ya dados de alta, clasificados de la forma que te fuera más cómoda (número de usuario o nombre).

Cada vez que dieses de alta un usuario, se trataría de refrescar el contenido del combo.

¿Es esto lo que buscas?

Si es así y tienes dudas de como hacerlo me lo dices.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas