Есть 2 таблицы:
users (id, group_id, name)
groups (id, title)
У каждого пользователя может быть только 1 группа, либо не быть вовсе
Любой пользователь может писать группе, группа может писать пользователям
Группа пишет пользователю, но через пользователя привязанного к этой группе
Допустим есть Группа1 (1,'group1'), Пользователь1(1,1,'first_user'), Пользователь2(2,NULL,'second_user')
Пользователь2 пишет в Группа1
Но группа сама по себе не может ответить, должен ответить пользователь (а-ля вк)
То есть должен зайти Пользователь1 в группу, перейти в чат(от группы) и ответить пользователю2
При этом еще пользователь может писать пользователю, группа группу, пользователь администратору
В общем такая вот хитрая система
Проблема в том, что я делаю все как сложно
сделал chats (id,first_user,first_group,second_user,second_group,admin)
Таким образом если пользователь пишет группе, то работают first_*
если пользователь пользователю, то *_user
Но проблема в том, как сделать еще сами сообщения messages
мой план - messages(id,user_creator,user_id,group_id,admin, text)
То есть в любом случае записывается user_creator
а так же если сообщение от пользователя, то user_id, если от группы, то group_id
В общем как то сложно как мне кажется. должен же быть способ по проще?