Как связать несколько строк в одной таблице - MySql - PullRequest
0 голосов
/ 23 мая 2019

Я ищу способ связать несколько строк в одной таблице.

Короче говоря, это система, в которой пользователи могут добавлять сообщения. Сообщения связаны с разделением. Пользователь может отправить сообщение сразу нескольким подразделениям.

Сообщения хранятся несколько раз в таблице сообщений. Поэтому, когда я отправляю свое сообщение в 3 отдела, он создает 3 строки в таблице сообщений. Причина в том, что пользователи могут комментировать сообщения по подразделениям. В разных подразделениях комментарии также будут разными.

Поступил новый запрос для связи этих сообщений. Для простоты сообщения могут быть помечены как «сделано». Когда это сообщение помечается как «выполнено» в подразделении «а», другие сообщения (2 другие строки) в подразделениях «b» и «с» также должны получить эту отметку.

В настоящее время я не имею ни малейшего понятия о том, как сделать это хорошим способом. У меня была идея создать дополнительную таблицу, содержащую идентификатор сообщения, но я все еще не уверен, как получить из нее все связанные сообщения.

Мне пришло в голову иметь одно сообщение в качестве «родителя». И затем поиск дочерних и родительских сообщений при каждом изменении. Но это не похоже на хорошее решение.

Очень жду некоторых предложений, которые помогут мне в правильном направлении!

1 Ответ

0 голосов
/ 24 мая 2019

Разделить messages на две таблицы;Я назову их m1 и m2:

m1 имеет все столбцы, которые остаются постоянными во всех подразделениях.Это, вероятно, включает в себя громоздкий текст сообщения.Давайте иметь PRIMARY KEY(m_id).m_id может быть AUTO_INCREMENT.Похоже, done должно быть в этой таблице.

m2 имеет одну строку на деление, поэтому у него есть копия mid и division_id, так что, вероятно, PRIMARY KEY(mid, division_id) (или, возможно, в обратном порядке).Также в этой таблице указаны любые столбцы, которые отличаются в разных подразделениях.

m1: m2 - это отношение 1: много, как реализовано с помощью m_id.И этот столбец будет использоваться для JOINing.

Звучит так, будто «комментарии» относятся к разделению.Таким образом, comment (где бы он ни находился) будет содержать как m_id, так и division_id.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...