DevPath · Aprenda a programar ESPTEN

Projeto: rede social

O plano: usuários, seguidores e o grafo social

O coração de uma rede social

Uma rede social parece complicada, mas se resume a três entidades:

  1. Usuários: cada pessoa com seu id e seu nome.
  2. Seguidores: quem segue quem.
  3. Publicações: o que cada usuário escreve.

A peça interessante é a de seguidores. Repare: um usuário pode seguir muitos outros e, ao mesmo tempo, ser seguido por muitos. Isso é uma relação N:M (muitos-para-muitos). Mas há um detalhe especial: ambos os lados da relação são o mesmo tipo de entidade (um usuário segue outro usuário).

Uma tabela consigo mesma: o grafo

Quando uma entidade se relaciona consigo mesma com cardinalidade N:M, o que você obtém é um grafo dirigido: os nós são os usuários e as arestas são os "segue". A direção importa: o fato de Ana seguir Beto não implica que Beto siga Ana.

Modelamos essa relação com uma tabela ponte com duas colunas, ambas apontando para usuarios:

CREATE TABLE seguidores (
  seguidor_id INTEGER, -- quem segue
  seguido_id  INTEGER  -- quem é seguido
);

Cada linha é uma aresta do grafo. Para saber quem Ana (id = 1) segue, você filtra por seguidor_id = 1 e olha os seguido_id.

O que vem por aí

Nos próximos exercícios você vai construir, nesta ordem:

Coloque isto em prática

O DevPath é um curso prático: aqui você lê a teoria; no app você a coloca em prática com exercícios que rodam de verdade, offline.

Comece grátis no app →
O feed e o problema N+1 →