Ver Mensaje Individual
  #4 (permalink)  
Antiguo 25/08/2015, 00:26
Kritik
(Desactivado)
 
Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 7 meses
Puntos: 31
Respuesta: Como solucionar una combinación de datos en una auto relación

Necesitas ambos registros. Porque cuando necesites a los amigos de Pedro no vas a buscar en todos los registros para ver en cuales está incluido Pedro. Vas a ir al registro Pedro y de ese registro vas a sacar a todos los amigos.

Por otra parte, visto desde el punto de vista del programador también tiene su lógica.

Cada registro apunta a los amigos que un usuario tiene. Pero que una persona sea amiga de otra no significa que la otra tenga que serlo de la una.

En el siguiente registro:

| Id_user | Id_amigo |
| Juan | Pedro

se demuestra que Pedro es considerado amigo por Juan. Pero no tiene por qué ser algo mutuo. Puede que Juan no sea considerado como amigo por Pedro.

Actualmente en las redes sociales tipo Facebook, cuando Juan manda una solicitud de amistad a Pedro y este la acepta se hace un enlace mutuo, ambos se vinculan mutuamente como amigos Es decir: Juan es amigo de Pedro y Pedro de Juan sin importar quién mandó la invitación y quién la aceptó. Es lo más cómodo, y normalmente si Juan no es considerado amigo por Pedro este no aceptaría la invitación. Por lo que si la acepta es de suponer que Juan es considerado amigo por Pedro. Sin embargo... no tiene por qué ser así.

Y como puede no ser así, por eso es necesario confirmarlo mediante un registro nuevo:

| Id_user | Id_amigo |
| Pedro | Juan

Como te digo, es lo que suele pasar en las redes sociales. Sin embargo, también podría haber una red social en el que Juan siguiese los pasos de Pedro, leyese todas sus publicaciones, etc. Sin embargo en esa red social podría no ser mutuo, y Pedro no siguiese los pasos de Juan. Es decir... Juan considera amigo a Pedro pero Pedro no a Juan. Y por eso Juan sigue las noticias de Pedro pero Pedro no sigue las noticias de Juan. Y eso es lo que pasa exactamente en Facebook con las páginas no personales de Facebook, es decir... Juan se apunta como seguidor de Coca-Cola Facebook, y todo lo que publique Coca-Cola Facebook a él le saldrá en su muro para él leerlo. Igual que cuando Pedro también publica algo en su muro. Sin embargo, cuando Juan publique algo en su muro no se verá reflejado en ninguna pare de Coca-Cola Facebook. El usuario que lleve esa página no leerá lo que ha publicado Juan.

Se me ocurre que en una red social (No se si Facebook tiene esa opción) Pueda, a parte de la relación amistad mutua (como la de Facebook: Si Juan es amigo de Pedro ->Pedro es amigo de Juan) también podría existir la opción se seguir a un usuario. Es decir... el usuario A puede seguir al usuario B sin la confirmación de que pueda hacerlo por parte del usuario B. Sin embargo, también sería aconsejable que de alguna manera el usuario B pueda publicar para todo el mundo o solo para sus amigos. Bien en las opciones generales para todas las publicaciones, bien como opción individual dentro de cada publicación.

En ese caso SI podría existir un registro:
| Id_user | Id_amigo |
| Juan | Pedro

pero no existir:
| Id_user | Id_amigo |
| Pedro | Juan

En este caso podría hacerse por medio de 2 tablas. Una de amistad (en la que si existen ambos registros) y otra de seguidores (en la que solo existe 1 de los 2 registros). Y dependiendo de que el usuario publique solo para los amigos o para todos, publicará a los que se incluyen en la tabla amistad o a los de las 2.

Última edición por Kritik; 25/08/2015 a las 00:37