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?
Respuesta
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
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
.
"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
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.
- 1. diseño de base de datos para 'seguidores' y 'seguidores'?
- 2. ¿Cuál es la diferencia entre los modos de usuario y kernel en los sistemas operativos?
- 3. 'Seguidores' y eficiencia
- 4. ¿Cuál es la mejor manera de integrar varios sistemas?
- 5. ¿Cuál es la dirección del crecimiento de la pila en la mayoría de los sistemas modernos?
- 6. ¿Cuál es la diferencia entre la capa de aplicación y la capa de lógica de negocios?
- 7. ¿Cuál es la nueva línea universal para todos los sistemas operativos? (LF y CR)
- 8. ¿Cuál es la atracción de los sistemas de bases de datos sin esquemas?
- 9. ¿Cuál es la lógica detrás de la suscripción de renovación automática en iOS
- 10. Seguimiento y seguimiento de código y datos
- 11. ¿La orientación de los objetos es mala para los sistemas integrados y por qué?
- 12. ¿Cuál es la lógica detrás de std :: bind y std :: thread siempre copiando argumentos?
- 13. ¿Cuál es la lógica para permitir que `?` Se escape?
- 14. mongo db diseño de seguimiento y feeds, ¿dónde debo incrustar?
- 15. La experiencia con los sistemas de facturación
- 16. ¿Cuál es el mejor software gratuito de seguimiento de pruebas?
- 17. Pedido de múltiples leyendas/guías (¿cuál es la lógica automática y cómo cambiarlo?)
- 18. ¿Cuál es la diferencia entre los niveles de seguimiento ALL & DEBUG en LOG4NET
- 19. ¿Qué es la lógica de dominio?
- 20. ¿Es correcto mi entendimiento de los sistemas tipo?
- 21. MVC 3 - Controladores y ViewModels - ¿Cuál debería contener la mayor parte de la lógica de negocios?
- 22. ¿Es buena idea la lógica comercial en los constructores?
- 23. ¿Cuál es la utilidad de los tipos NMTOKEN y NMTOKENS?
- 24. Una pregunta sobre la lógica y la correspondencia de Curry-Howard
- 25. IntPtr.ToInt32() y x64 sistemas
- 26. ¿Cuál es la lógica detrás de la seguridad entre dominios AJAX?
- 27. ¿Cómo pueden los desarrolladores permitir que los usuarios empresariales definan la lógica de la aplicación?
- 28. ¿Lógica comercial y de aplicaciones?
- 29. ¿Es lógica de negocios subjetiva?
- 30. ¿Cuál es la alternativa de los atributos?
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
_ "Creé una nueva tabla que sigue el nombre y tengo 3 filas" _ - ¿Quiere decir "3 ** columnas **"? –