Единственное пока, что приходит в голову это таблица маппинга пользователей. В таблице следующие колонки:
UserID (пользователь),
UserFollowID (пользователь на которого подписан UserID). Таблицу заполнять примерно так:
UserID -> UserFollowID
1 -> 45
1 -> 67
1 -> 2
и так далее.
Далее делать кнопку, по которой будет отправляться запрос к серверу для вызова метода, который создает такую строку в таблице: получает текущего пользователя; идентификатор пользователь, на которого подписываются; записывает строчку в базу данных.
Потом ты можешь как угодно перелопачивать ее SQL–запросами и получать нужный набор пользователей. Например, тех пользователей, кого фолловит некий пользователь
SELECT UserFollowID FROM FollowMapping WHERE UserID = 1
Либо выявлять некие связи среди подписок. Например, получить подписчиков некого пользователя
SELECT UserID FROM FollowMapping WHERE UserFollowID = 1
Использовать различие варианты запросов для получения данных по твоим нуждам.
В этом примере я отталкиваюсь от типичной реляционной модели базы данных. У этого есть свои негативные стороны, что таблица получится гигантских размеров со временем, на миллионы позиций... Однако, в зависимости от твоих вычислительных мощностей, ты сможешь быстро выбрать подписки пользователя из такого большого объема данных, либо медленно.