Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Relaciones entre usuarios y tipos de relaciones

Estas en el tema de Relaciones entre usuarios y tipos de relaciones en el foro de Bases de Datos General en Foros del Web. Hola a todos, tengo un dilema y no se cual sea la mejor forma de resolverlo y espero que aca me dejen su ayuda o ...
  #1 (permalink)  
Antiguo 17/04/2012, 13:22
 
Fecha de Ingreso: marzo-2011
Ubicación: Caracas
Mensajes: 140
Antigüedad: 13 años, 1 mes
Puntos: 1
Relaciones entre usuarios y tipos de relaciones

Hola a todos, tengo un dilema y no se cual sea la mejor forma de resolverlo y espero que aca me dejen su ayuda o comentarios al respecto. Estoy desarrollando una aplicación donde existen usuarios y dichos usuarios pueden establecer relaciones de amistad. O sea que muchos usuarios pueden tener muchas relaciones. Tambien pueden o no existir varios tipos de relaciones entre usuarios asi de esta forma yo puedo ser amigo de alguien y famiia de otro alguien. He pensado en tener las siguientes tablas:
- usuarios (id_usuario)
- tipos_relaciones (id_tipo)
- usuarios_relaciones (id, id_tipo, id_usuario_1, id_usuario_2, activa)
Pero esto provoca que por cada relacion se me generen 2 registros en la tabla usuario_relaciones por lo cual me quedaria algo asi:
usuarios
1 pepe
2 jose
tipos_relaciones
1 amigo
2 familia
usuarios_relaciones
1 amigo pepe jose no
2 amigo jose pepe no
3 familia pepe jose no
4 familia jose pepe no
O sea que se me duplican los registros por cada relacion entre usuarios y tambien por cada tipo de relacion claro esto con el objetivo de hacer un solo SELECT a la hora de buscar las personas relacionadas con determinado usuario porque de lo contrario tendria que hacer una UNION y creo que conllevaria a una perdida de performance en la BD. Que me recomiendan? Algunos tips o ayuda?

Saludos y desde ya gracias
__________________
Reynier Perez Mira
Skype: reynierpm
Site: http://www.reynierpm.com
  #2 (permalink)  
Antiguo 17/04/2012, 16:42
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
Respuesta: Relaciones entre usuarios y tipos de relaciones

En la tabla usuarios-relaciones solo debes guardar un registro por cada par de personas y relacion:

Esto:
familia pepe jose no
familia jose pepe no

Es lo mismo que esto:
familia jose pepe no

puesto que si jose es familia de pepe, evidentemente pepe es familia de jose.

Además no debes guardar si esa relación está activa o no (deduzco que significa que es válida). Si no son familia no guardes un registro para indicar que no, simplemente si no existe no lo son.

Si tienes:
familia pepe jose si

Simplemente guarda:
familia pepe jose

Si en la tabla tienes:
amigo pepe jose
familia juan andres

significa que pepe y jose son amigos, pero no familia, si además fuesen familia (y pueden ser amigos y familiares al mismo tiempo) tendrías:
amigo pepe jose
familia juan andres
familia pepe jose

Pon el select que haces, porque seguro que está mal hecho y por eso te ves forzado a hacerlo así.

Etiquetas: diseño+base+de+datos, mysql, bases-de-datos
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 10:08.