blrik
@blrik
Музыкант

Как правильно сделать структуру для связующей талице?

Добрый день, подскажите как лучше реализовывать структуру в базе данных для связующих таблиц.
У меня есть например три таблицы: users, roles и таблица role_user, которая связывает таблицы users и roles,
сейчас таблица role_user имеет следующую структуру:
`role_user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(10) unsigned DEFAULT '0',
  `role_id` int(10) unsigned DEFAULT '0',
  `created_at` timestamp NULL DEFAULT NULL,
  `updated_at` timestamp NULL DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `role_user_user_id_foreign` (`user_id`),
  KEY `role_user_role_id_foreign` (`role_id`)
) ENGINE=InnoDB;

Не являются ли поля created_at, updated_at, id излишками в таблице? Видел в популярной CMS, что аналогичные талицы делались так:
`role_user` (
  `user_id` int(10) unsigned NOT NULL,
  `role_id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`user_id`,`role_id`),
  KEY `role_user_role_id_index` (`role_id`)
) ENGINE=InnoDB;

Подскажите, насколько это влияет на выборку из базы?
  • Вопрос задан
  • 74 просмотра
Пригласить эксперта
Ответы на вопрос 1
DaFive
@DaFive
Смотря для чего оно вам нужно. Видимо в тех случаях, изменение роли юзера было критичным и по дате создания или обновления отслеживались назначение и изменение роли.
- "Что-то случилось."
- "Когда назначили юзера админом?"
- "12 числа".
- "12 все в порядке, а изменяли роль?"
- "Да, 15 числа."
- "Вот тогда все по звезде и пошло. Найти и выдрать виновных".
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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