Cómo implementar seguidores para usuarios, como en twitter

Tengo una red social que estoy creando usando php y mysql. Estoy tratando de averiguar cómo hacer seguidores para cada usuario. ¿Debo crear una tabla en mysql con una lista de seguidores para cada persona y crear una tabla para todos los que siguen? ¿Cómo debería funcionar esto? ¿Cómo debo configurar mis estructuras de datos? Por favor ayuda.

preguntado el 28 de agosto de 11 a las 03:08

3 Respuestas

Table `followers`

id
user_id
follows_id

Si un usuario sigue a otro, agregue sus ID a esta tabla donde user_id es el usuario que sigue y follows_id es el usuario al que sigue.

Respondido 28 ago 11, 08:08

Deberías mirar en ERD. Aunque tienes razón. Tienes una mesa con usuarios. Los usuarios tienen una relación de varios a varios con los usuarios, así que cree una tabla que contenga esa relación. Debe tener al menos dos campos; "usuario" y "seguidor", y almacena las identificaciones de las respectivas entidades.

Respondido 28 ago 11, 08:08

Al principio pensé que me estaba volviendo loco cuando hice clic en ese enlace. Entonces me di cuenta de que mi locura no estaba relacionada ... - Chris Cunningham

¿Quizás podrías usar UML para mí? ¿Quizás alguna buena máquina de estado? - Jasper Kennis

Ciertamente, esta es una relación de muchos a muchos y usaría una clave primaria compuesta.

En lugar de usar una columna de identificación explícita, haría que las columnas combinadas de user_id y follower_id sean la clave principal para la tabla de seguidores. Esto evitaría la duplicación de entradas.

También he agregado una restricción de clave externa para que si el usuario se elimina en la tabla de usuarios, todas las entradas de los usuarios se eliminarán de la tabla de seguidores;

create table followers
(
     user_id int unsigned not null, 
     follower_id int unsigned not null, 
     primary key(user_id,follower_id), 
     foreign key(user_id) references users(id) on delete cascade on update cascade
);

Respondido el 02 de enero de 14 a las 22:01

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.