At 16:10 09/05/2011, [email protected] wrote:
Hola a todos,

estoy haciendo algo parecido a lo que sería una red social de contactos.

Es decir, Juan conoce a Pepe, Pepe conoce a Pedro, Andrés conoce a Pedro, etc.. etc.. Creo que sería una especie de relación muchos-a-muchos...

En lo que estoy un poco perdido es en como representar esta relación en tablas de base de datos y su consistencia. PostgreSQL en este caso (aunque podría ser cualquier otra).

Se admiten ideas teórico-prácticas de todo tipo.

Usa una matriz, no una tabla. Usa tu implementacion, es sencilla no un motor de bd relacional. Basicamente a lo que me refiero es a una matriz similar a los partidos de futbol o a las distancias entre ciudades. Pones en horizontal y vertical todos los usuarios y en cada posicion de la matriz el valor que los une (tipo de relacion, visibilidad, pk a tablas en bd, etc...). Puedes simplificar el tamaño por 2 si la matriz es triangular, como en las distancias entre ciudades que es la misma en un sentido que en otro,en vez de matriz completa como en los partidos de futbol, donde el resultado del partido de ida no es el mismo que el de vuelta. Para una implementacion eficiente mira matrices dispersas y similares o directamente hash tables, ya que cada par usuario1-usuario2 le corresponde un valor descriptivo de la relacion.

Si vas a usar hash tables, mi consejo es que huyas de las bd hechas en Java y hagas tu una implementacion simple (kiss). No se como va la implementacion de hash tables de Postgres ni su rendimiento, pero lo puedes usar.

Bueno, de momento está todo muy verde y todavía tengo que mirar esto a fondo, pero si alguien ha hecho cosas parecidas.... Cualquier idea es buena.

Saludos y gracias.


Suerte.



-
Enviado a la lista de correo pgsql-es-ayuda ([email protected])
Para cambiar tu suscripción:
http://www.postgresql.org/mailpref/pgsql-es-ayuda

Responder a