Сохраните исходный текст, как есть, и создайте таблицу связанных записей с uid и именем пользователя.
Пример схемы:
post [table]
id
text
user_mention [таблица]
id
post_id
user_id_mentioned
user_name_mentioned
Когда запись сохранена, ваш код должен пройти и создать все записи user_mention.Вы можете перебирать таблицу упоминаний для отправки электронных писем или чего-либо еще, что вы хотите сделать.
Если пользователь меняет свое имя пользователя, у вас теперь есть опция для обновления сообщения с помощьюновое имя пользователя или имеющая ссылку на старое имя пользователя для правильного пользователя.
Мое правило - никогда и никогда не изменять оригинальный неструктурированный текст перед сохранением в базе данных (но проверяйте его наизбегайте инъекций и прочего) и изменяйте данные only на выходе.Это означает, что у вас всегда есть введенные пользователем данные, и вы никогда не знаете, когда они будут полезны.
Может быть, однажды вас заинтересует, кто менял свое имя пользователя после того, как его упомянули n раз?Или другой отчет, который вы не можете получить, потому что вы изменили неструктурированные данные.Вы никогда не знаете, когда вам понадобятся исходные данные, и в этом случае вы получаете дополнительный бонус, заключающийся в том, что с вашим текстом легче работать.