Ето общо оформление за вас, направете три таблици, както споменахте, очертал съм по-долу само като пример
[ТАБЛИЦИ]
- потребители
- последователи
- публикации
В таблицата с потребители трябва да имате поне колони като userid (автоматично увеличаваща се стойност/първичен ключ).
Таблицата на последователите трябва да има нещо като userid, което ще съответства на userid на таблицата на потребителите, следваща колона, която също ще има идентификатор # за последователя от таблицата на потребителите.
След това за вашата таблица с публикации бихте искали също да имате потребителски идентификатор, така че когато всяка публикация е направена, тя да има идентификатора от таблицата с потребители.
Тогава ще трябва да направите нещо като:
SELECT p.*
FROM posts AS p
WHERE p.userid IN (SELECT followid FROM followers WHERE userid = ###)
ORDER BY p.date DESC
Сега наистина зависи от това как ще накарате потребителския идентификатор да разбере това. Ако предавате идентификатора на потребителите с помощта на сесия, след като са влезли, подобно на нещо като Facebook, тогава можете да промените userid =### на нещо като userid =".$_SESSION['userid']." Но отново наистина зависи от това как предавате потребителския идентификатор, но горното трябва поне да ви помогне да започнете.
Уверете се, че сте поставили индекси на потребителския идентификатор, последваните колони, така че когато таблицата стане по-голяма, тя ще направи обединенията бързо.