У меня есть система, в которой пользователь (отправитель) может написать заметку друзьям (получателям), количество получателей> = 0. Текст сообщения сохраняется в БД и виден отправителю и всем получателям, после чего они входят в систему. Отправитель может добавить больше получателей в любое время. Более того, любой из получателей может отредактировать сообщение и даже удалить его из БД. Для этой системы я создал 3 таблицы, коротко:
пользователи (userID, имя пользователя, пароль)
сообщения (messageID, текст)
список (идентификатор, идентификатор отправителя, идентификатор получателя, идентификатор сообщения)
в таблице «список» каждая строка соответствует паре отправитель-получатель, например
sender_x_ID - receive_1_ID - message_1_ID
sender_x_ID - получатель_2_ID - сообщение_1_ID
sender_x_ID - получатель_3_ID - сообщение_1_ID
Теперь проблема:
1. если пользователь удаляет сообщение из таблицы «messages», как автоматически удалить все строки из таблицы «list», которые соответствуют удаленному сообщению. Нужно ли включать некоторые внешние ключи?
Более важно:
2. если отправитель разрешил сказать 3 получателям своего сообщения1 (имя пользователя1, имя пользователя2 и имя пользователя3) и в определенный момент решает добавить имя пользователя4 и имя пользователя5 и одновременно исключить имя пользователя1 из списка получателей. PHP-код получит новый список получателей (username2, username3, username4, username5), что означает вставку в таблицу «list»
sender_x_ID - receive_4_ID - message_1_ID
sender_x_ID - receive_5_ID - message_1_ID
, а также удалить из таблицы «список» строку, соответствующую user1 (которого больше нет в списке или получателях)
sender_x_ID - receive_1_ID - message_1_ID
какой SQL-запрос отправить из PHP, чтобы сделать его простым и интеллектуальным способом? Пожалуйста помоги! Примеры запросов SQL были бы идеальными!