Tema: mysql
Ver Mensaje Individual
  #6 (permalink)  
Antiguo 14/02/2013, 17:34
Avatar de gnzsoloyo
gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: mysql

Demasiadas vueltas... para un tema trillado.
Por empezar, el hecho de que uses XAMPP es irrelevante, y que uses o no identificadores numericos para las tablas, depende de lo bien o mal que sepas diseñar una base bajo los límites que el modelo E-R te pone. La mayoría de los programadores no lo sabe hacer (lo siento, es mi experiencia y opinión)

Pero ya que dices que quieres tomar de base a Facebook, empecemos por analizar la lógica que sigue una busqueda como la que <FB hace para mostrarte temas propios, de tus contactos y de terceros.
1) Luego del login, busca todos tus temas publicados, y que sean para compartir.
2) También busca tu lista de contactos (no, no son aciones simultáneas, sino consecutivas).
3) Una vez obtenidas ambas listas, busca los temas publicados por tus contactos y que hayan sido compartidos publicamente o bien que sean para ti (o sea que busca cada lista de contactos de tus contactos y sus restricciones).
4) Si en la lista de contactos de tus contactos, encuentra que algunos de ellos tienen temas compartidos públicamente, los recupera para mostrarlos (no, tampoco es simultáneo, es secuencial).
5) Finalmente busca si de los temas recuperados del segundo nivel, algunos de ellos provienen de algun ema o sitio publico, para recuperar los elementos necesarios.
6) Recién cuando haya recuperado todo eso, entonces lo ordena, jerarquiza, pagina y muestra en la pantalla.

Ahora bien, la pregunta del millón: ¿Una sola consulta?

Ni por las tapas.

En un sistema así estás hablando de varias decenas de consultas (hay que considerar todas las validaciones necesarias, que pueden provenir de funciones almacenadas en la base), y muy probablemente varios stored procedures, antes de tener la información necesaria.
En otras palabras, es un trabajo grande, muy grande, que te llevará bastante tiempo.
El Facebook actual, que mencionas como modelo, no lo construyó un único programador. Y hacer una red social, por mínima que sea, requiere que te hagas un plan de desarrollo (al menos en papel), para ir cubriendo cada parte de lo que se va necesitando, y no perder el camino mientras lo haces.

!Ah!, Si piensas que esas tres tablas alcanzan, te comento que un esquema básico sería mas o menos:

__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)