2012-04-23 4 views
5

Estoy trabajando en algún proyecto y estoy pensando en el seguidor y el siguiente sistema como Twitter. Tengo una tabla de miembros en la base de datos. ¿Cómo puedo hacer un sistema de seguidores? ¿Cuál es la lógica? Trabajé sobre algo así: Creé nuevos tabla que el nombre sigue y tengo 3 filas. Estas filas son id, user_id, follower_id. es eso suficiente para mi? No tengo idea de cómo puede hacer este sistema? ¿Me puedes ayudar?¿Cuál es la lógica de los sistemas de seguimiento y seguidores?

+1

Esto parece un diseño perfectamente aceptable. Puede buscar seguidores de un usuario buscando ese usuario en 'user_id' y encontrar a quién sigue un usuario buscando ese usuario en 'follower_id'. Es posible que desee incluir algunos metadatos adicionales, como una marca de tiempo, para saber cuándo se actualizó la relación por última vez. También es posible que desee realizar un seguimiento de cuándo comenzó o terminó la relación, según su caso de uso. – Ina

+0

_ "Creé una nueva tabla que sigue el nombre y tengo 3 filas" _ - ¿Quiere decir "3 ** columnas **"? –

Respuesta

5

Sí, que el diseño es suficiente para que un sencillo sistema siguiente como el de Twitter. Por supuesto, algunos datos adicionales (como la marca de tiempo, según lo sugerido por @Ina) podrían ser útiles y no necesita estrictamente el id en él.

Me gustaría recomendar algo como:

userID INT PRIMARY, 
followID INT PRIMARY, 
creationTime DATETIME 
0

Suponiendo que tiene una sola entidad de People, necesita crear una relación de varios a varios de People a People. En su tabla de asociación, tendrá dos columnas, PeopleID y Following.

Para buscar seguidores de un usuario, busque la ID de ese usuario en la columna Following. Para enumerar quién está siguiendo un usuario, busque en la columna PeopleID.

5

"Sigue" (o "es seguido por") es una relación entre dos entidades de usuario que refleja su tabla.

Esto significa que, a menos que planee tratar varios follow y unfollows entre los mismos usuarios como entradas separadas, ni siquiera necesita el id.

Hacer el user_id y follower_id referencia user con un FOREIGN KEY, los hace tanto una clave principal compuesta y creación de índice en follower_id (para obtener una lista de usuarios se sigue rápido):

CREATE TABLE 
     follows 
     (
     user_id INT NOT NULL REFERENCES user (id), 
     follower_id INT NOT NULL REFERENCES user (id), 
     PRIMARY KEY 
       (user_id, follower_id) 
     KEY follower_id (follower_id) 
     ) 
ENGINE=InnoDB -- if you want the foreign keys to work 

Puede añadir otra atributos también.

Si desea realizar un seguimiento sigue y unfollows entre los mismos usuarios, entonces usted necesita para promover esto en una entidad, añadiendo una clave primaria sustituta:

CREATE TABLE 
     follows 
     (
     id INT NOT NULL PRIMARY KEY, 
     user_id INT NOT NULL REFERENCES user (id), 
     follower_id INT NOT NULL REFERENCES user (id), 

     -- These are additional attributes 

     follows_from DATETIME NOT NULL, 
     follows_till DATETIME, 

     -- 

     KEY follower_id (follower_id), 
     KEY user_id (user_id) 
     ) 
ENGINE=InnoDB -- if you want the foreign keys to work 
0

Asumiendo que ya tiene un sitio donde los usuarios se conectan, tendrá que añadir una tabla a su base de datos con dos columnas, ya sea 'friend1' y ' friend2 '(suponiendo que la amistad es una relación bidireccional) o' líder 'y' seguidor '(para la relación unidireccional de una suscripción). Luego, querrá un script PHP corto que tome friend1 y friend2 como entradas (por ejemplo, como variables POST o GET) e ingrese ese par en la base de datos. Finalmente, agregue un botón en su sitio web que haga una llamada AJAX a ese script PHP o que forme parte de un formulario HTML cuyo objetivo sea ese script PHP.

Cuestiones relacionadas