El corazón de una red social
Una red social parece complicada, pero se reduce a tres entidades:
- Usuarios: cada persona con su
idy sunombre. - Seguidores: quién sigue a quién.
- Publicaciones: lo que escribe cada usuario.
La pieza interesante es la de seguidores. Fíjate: un usuario puede seguir a muchos otros, y a la vez ser seguido por muchos. Eso es una relación N:M (muchos-a-muchos). Pero hay un detalle especial: ambos lados de la relación son el mismo tipo de entidad (un usuario sigue a otro usuario).
Una tabla consigo misma: el grafo
Cuando una entidad se relaciona consigo misma con cardinalidad N:M, lo que obtienes es un grafo dirigido: los nodos son los usuarios y las aristas son los "sigue a". La dirección importa: que Ana siga a Beto no implica que Beto siga a Ana.
Modelamos esa relación con una tabla puente con dos columnas, ambas apuntando a
usuarios:
CREATE TABLE seguidores (
seguidor_id INTEGER, -- quién sigue
seguido_id INTEGER -- a quién sigue
);
Cada fila es una arista del grafo. Para saber a quién sigue Ana
(id = 1), filtras por seguidor_id = 1 y miras los seguido_id.
Lo que viene
En los próximos ejercicios construirás, en orden:
- la consulta del feed (las publicaciones de a quién sigues),
- la lógica del feed en JavaScript y el toggle de likes,
- un componente de React para una publicación con su botón "Me gusta",
- y resolverás el problema N+1 al cargar los autores.