Foros del Web » Programando para Internet » PHP »

Lógica para crear tabla relacional

Estas en el tema de Lógica para crear tabla relacional en el foro de PHP en Foros del Web. Buen día y muchas gracias por detenerse a leer este tema, Tengo una tabla en la cual almaceno un identificador de usuario, este es único ...
  #1 (permalink)  
Antiguo 10/08/2011, 12:48
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 5 meses
Puntos: 394
Lógica para crear tabla relacional

Buen día y muchas gracias por detenerse a leer este tema,

Tengo una tabla en la cual almaceno un identificador de usuario, este es único y nunca se repite para cada usuario.

El problema que se me presenta es que debo crear otra tabla para relacionar que usuario es amigo de que usuarios, por ejemplo PEPE es amigo de fulano, perano y perengano.

Esta relación la voy a realizar con los identificadores de acceso, pero el problema que se me presenta es que no se de que forma hacerlo, hasta el momento solo he pensado en dos opciones así:

LA PRIMERA

La tabla amigos debería tener dos campos uno con el identificador del usuario y otro campo con los identificadores de los amigos así: 1 es amigo de 2, 3, 4, 5 donde 2, 3, 4, 5 esta almacenado en un solo campo varchar separado por comas.

Pero me parece que esto NO es lo mas fácil de trabajar en caso de ingresar un nuevo amigo o eliminar uno ya existente.

LA SEGUNDA

Crear un nuevo registro por cada amigo ingresado, quedando así:

1 es amigo de 2
1 es amigo de 3
1 es amigo de N

Pero me asalta la duda si trabajando con este tipo de situación sera necesario crear una primary key not null autoincrement sabiendo que esta tabla solo tendra esos dos campos.

Muchas gracias por su ayuda.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #2 (permalink)  
Antiguo 10/08/2011, 12:59
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Lógica para crear tabla relacional

Lo que puedes hacer es una tabla que tenga por ejemplo

friends
id, user1, user2

y cuando vayas a hacer la relación haces algo como

Código MySQL:
Ver original
  1. "SELECT id
  2. FROM friends
  3. WHERE (user1 = " . $myUserNumber . " AND user2 = " . $friendNumber . ")
  4.    OR (user1 = " . $friendNumber . " AND user2 = " . $myUserNumber . ")"
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 10/08/2011, 13:08
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 5 meses
Puntos: 394
Respuesta: Lógica para crear tabla relacional

Muchas gracias por tu ayuda amigo,

Cita:
Lo que puedes hacer es una tabla que tenga por ejemplo

friends
id, user1, user2
Si mal no entiendo, el id seria el autoincrementable ? según eso si es necesario ese campo de (Primary Key - AUTOINCREMENT - NOT NULL) ?

En realidad lo único que necesito es saber PEPE que amigos tiene nada mas, si PEPE con identificador 1 es amigo de FULANO con identificador 2 entonces con INNER JOIN traería los datos de los dos usuarios que se encuentran en otras tablas.

Si se hace necesario ese campo de PRIMARY KEY para una cosa tan sencilla ? es que la verdad por mas vueltas que le doy a la lógica no se como resolver esta situación.
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???
  #4 (permalink)  
Antiguo 10/08/2011, 13:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Lógica para crear tabla relacional

Yo siempre lo coloco, por si en algún futuro me es de utilidad, y sí así es como lo colocaría autoincrementable.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 10/08/2011, 13:19
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Lógica para crear tabla relacional

Que tal jotaincubus,

A lo primero un no rotundo, deberías leer sobre normalizacion.

Y con lo segundo, la clave compuesta es suficiente, no es necesario tener un campo id autoincrement, pero se suele utilizar por simplicidad.

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #6 (permalink)  
Antiguo 10/08/2011, 13:35
Avatar de jotaincubus  
Fecha de Ingreso: mayo-2005
Ubicación: Medellin - Colombia
Mensajes: 1.797
Antigüedad: 19 años, 5 meses
Puntos: 394
Respuesta: Lógica para crear tabla relacional

Ok, muchísimas gracias por ayudarme en este tema, me pondré a desarrollar inmediatamente.... :)
__________________
Por que existe gente que no agradece después de que se le ha brindado tiempo y ayuda ???

Etiquetas: logica, relacion, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:44.