у меня есть система, в которой пользователь (отправитель) может написать заметку друзьям (получателям), количество получателей> = 0. Текст сообщения сохраняется в БД и виден отправителю и всем получателям, после чего они входят в систему. Отправитель может добавить больше получателей в любое время. Более того, любой из получателей может отредактировать сообщение и даже удалить его из БД. Для этой системы я создал 3 таблицы, вкратце:
пользователи(идентификатор пользователя, имя пользователя, пароль)
сообщения(идентификатор сообщения, текст)
список(идентификатор, идентификатор отправителя, идентификатор получателя, идентификатор сообщения)
в таблице "список" каждая строка соответствует паре отправитель-получатель, например
отправитель_x_ID -- получатель_1_ID -- сообщение_1_ID
отправитель_x_ID -- получатель_2_ID -- сообщение_1_ID
отправитель_x_ID -- получатель_3_ID -- сообщение_1_ID
Теперь проблема:
1. если пользователь удаляет сообщение из таблицы "сообщения", как автоматически удалить все строки из таблицы "список", которые соответствуют удаленному сообщению. Должен ли я включать некоторые внешние ключи?
Более важно:
2. если отправитель указал 3 получателей для своего сообщения1 (имя пользователя1, имя пользователя2 и имя пользователя3) и в какой-то момент решил добавить имя пользователя4 и имя пользователя5 и в то же время исключить имя пользователя1 из списка получателей. Код PHP получит новый список получателей (имя пользователя2, имя пользователя3, имя пользователя4, имя пользователя5). Это означает вставку в таблицу "список"
отправитель_x_ID -- получатель_4_ID -- сообщение_1_ID
отправитель_x_ID -- получатель_5_ID -- сообщение_1_ID
а также удалить из таблицы "список" строку, соответствующую пользователю1 (которого больше нет в списке или получателях)
отправитель_x_ID -- получатель_1_ID -- сообщение_1_ID
какой sql-запрос отправить из PHP, чтобы сделать это простым и интеллектуальным способом? Пожалуйста помоги! Примеры запросов sql были бы идеальными!