DevPath · Aprende a programar ESPTEN

Proyecto: red social

El plan: usuarios, seguidores y el grafo social

El corazón de una red social

Una red social parece complicada, pero se reduce a tres entidades:

  1. Usuarios: cada persona con su id y su nombre.
  2. Seguidores: quién sigue a quién.
  3. 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:

Pon esto en práctica

DevPath es un curso práctico: aquí lees la teoría; en la app la pones en práctica con ejercicios que se ejecutan de verdad, sin conexión.

Empezar gratis en la app →
El feed y el problema N+1 →