Вы, вероятно, хотите разделить различные виды деятельности на разные таблицы. Это даст вам больше гибкости в том, как вы запрашиваете данные.
Если вы решите использовать UNION, убедитесь, что вы используете одинаковое количество столбцов в каждом запросе выбора, из которого состоит UNION.
EDIT:
Я получил отрицательный ответ за свой ответ, так что, возможно, я смогу дать лучшее объяснение.
Разделить таблицу на отдельные таблицы и UNION
Я рекомендовал эту технику, потому что она позволит вам более подробно рассказать о ресурсах, для которых вы запрашиваете. Удобно иметь одну таблицу для вставки, но вам всегда нужно будет выполнять отдельные запросы для объединения с другими таблицами, чтобы получить значимую информацию. Кроме того, схема базы данных будет запутана тем, что один столбец является внешним ключом для разных таблиц в зависимости от данных, хранящихся в этой строке.
Вы можете иметь таблицы для комментариев, обновления и подписки. Они будут иметь свои собственные данные, которые могут запрашиваться индивидуально. Скажем, если вы хотите посмотреть на ВСЕ пользовательские действия, вы можете легко использовать UNION следующим образом:
(SELECT 'comment', title, comment_id AS id, created FROM comment)
UNION
(SELECT 'update', title, update_id as id, created FROM update)
UNION
(SELECT 'subscription', title, subscription_id as id, created
FROM subscription)
ORDER BY created desc
Это обеспечит вам просмотр списка. Затем вы можете ссылаться на детали каждого типа или загружать его при вызове ajax.
Вы можете сделать это с помощью метода, который вы используете в настоящее время, но это фактически устранит необходимость в 'reference_table' и позволит выполнить то же самое более чистым способом (IMO).