MrShandy
@MrShandy
Python

Как хранить множество данных для одного объекта в другой таблице?

Есть таблица с записанными тикетами. Для каждого тикета есть возможность переназначить назначенного модератора. Я не знаю как правильно хранить такие данные. По идее делая запрос по id тикета я должен получать еще и историю модераторов, которые работали над ним.
На сколько я понимаю, нужно как-то связать таблицы, но как и что делать потом?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Immortal_pony
@Immortal_pony Куратор тега MySQL
В таблицу с тикетам записывать id назначенного модератора
В таблицу *_history (ну или *_log) записывать дату смены назначенного модератора и сопуствующую информацию - какой модератор был, какой стал, комментарии может какие. Это можно сделать как на уровне приложения, так и на уровне БД. У случае с БД можно использовать триггеры.

Примерно такая структура
CREATE TABLE `ticket` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `assignee_id` int DEFAULT NULL,
  `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `modified` datetime NOT NULL ON UPDATE CURRENT_TIMESTAMP,
  `subject` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL,
  `body` text COLLATE utf8mb4_unicode_ci NOT NULL,
  PRIMARY KEY (`id`)
);

CREATE TABLE `ticket_assignment_log` (
  `id` int unsigned NOT NULL AUTO_INCREMENT,
  `ticket_id` int unsigned NOT NULL,
  `created` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `old_assignee_id` int DEFAULT NULL,
  `new_assignee_id` int NOT NULL,
  PRIMARY KEY (`id`),
  KEY `i_ticket` (`ticket_id`),
  CONSTRAINT `fk_ticket` FOREIGN KEY (`ticket_id`) REFERENCES `ticket` (`id`) ON UPDATE CASCADE
)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы