Сомнения в структуре БД при нескольких типах подписок на обновления

У меня есть 4 типа, на которые может подписаться пользователь: категория, тэг, пользователь, компания. Лента формируется исходя из всех подписок (естественно удаляя дубликаты). Возможность подписаться на кого-то имеет только пользователь. Вопрос вот в чём, как лучше сделать это в базе данных.

У меня в голове три варианта:

  1. Таблица с подписками: id, id_user, id_subscription (на кого подписан). И id_subscription связывать с другой таблицей: id, id_user, id_company, id_tag, id_category. И потом смотреть во второй таблице где ячейка не равна null
  2. Для каждого типа подписок сделать разные таблицы, то есть таблицу со структурой: id, id_user, id_subscription (уже конкретный id) сделать несколько раз для каждого типа и просто при выводе их объединять
  3. Сделать таблицу id, id_user, id_subscription, id_type и в id_type добавлять тип подписки, то есть на кого именно подписан, но тогда не будет возможность добавить id_subscription FOREIGN KEY (или может быть я не прав)

Какой вариант выбрать и может быть есть какой-то получше?


Ответы (0 шт):