Ver Mensaje Individual
  #8 (permalink)  
Antiguo 11/10/2013, 22:20
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: Detectar @menciones en una consulta sql

Cita:
no me sirve tener una tabla timeline_usuarios que tenga TimelineId y UsuarioId, porque despues no se sabria como poder hacer coincidir los usuarios con el texto puesto.
Completamente errado.
En un esquema como el que te propone Leo, la acción se maneja por identificadores, pero eso no implica que no existan otros atributos, como por ejemplo, los mensajes intercambiados, las invitaciones, los eventos, etc.
Sino, ¿cómo crees que se manejan todos los sitios de redes sociales? ¿Por timelines como los que quires usar?
No. Se contruyen con un correcto esquema que soporte los timelines sin violar el paradigma relacional.
Si lo que quieres es una base d edatos que funcione bien, y pueda responder a tus necesidades, entonces no puedes tratarla como colección de datos. Tienes que diseñarla correctamente, pero en base a lo que que el sistema necesita.
Para proponerte un modelo, primero deberíamos entender bien la lógica de tu sistema, las entidades, las relaciones y los procesos de datos que se necesitan. Y para eso necesitaríamos bastante información...

Ahora bien, paa no alejarnos del problema, veamos lo que preguntabas al principio:

Cita:
Necesito saber de que manera poder buscar en un campo varchar menciones de usuario. Por ejemplo.

A @john le ha gustado #juego_de_tronos

Con un like '%@john%' no me valdria dado que podria sacarme menciones como:


A @john_ander le ha gustado #juego_de_tronos
Bueno, eso no lo podrás jamás obtener con tu esquema, sino con una base de datos relacional bien diseñada... como te lo propone Leo.
Lo que queremos que entiendas es que la base debe almacenar ciertos datos en estado "puro", con lo que luego tu aplicación pueda construir :"A @john_ander le ha gustado #juego_de_tronos"
Es decir, no es la frase lo que se debe almacenar, es el hecho, la acción de que el usuario dijera qué le gusta. El resto se construye por programación.
¿Se va entendiendo?

No es un capricho nuestro. Se llama experiencia en BBDD.

Voy a ir un poco más lejos.
Esto que sigue es el esquema de una base de datos para una red social del juego "Gear of War", y es funcional:


Y eso, soportaría sin problema el manejo de timelines como los que quieres.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)