Рассмотрим пример:
База данных, предназначенная для хранения информации отдела в компании:
- В отделе кадров пять сотрудников.
- Существует две таблицы: Департамент и Сотрудники
Часто вы используете sh, чтобы узнать, сколько сотрудников работает в отделе x. Есть два способа узнать количество сотрудников: один хранит его в столбце, другой ищет счет в таблице сотрудников
У меня такой вопрос:
Имеет ли смысл хранить столбец num_of_employees
в таблице Department?
Вот мои взгляды:
- Это будет немного головной боли, чтобы всегда сохранять значение счетчика в столбцах
num_of_
синхронизированным с фактическим числом в другой таблице (требуются триггеры при вставке, удалении) - В случае, когда фактически требуется только количество сотрудников : Запрос будет значительно быстрее (поскольку ему вообще не нужно будет делать
count(*)
для другой таблицы)
Теперь вышеприведенная версия была довольно упрощенной версией реальной проблемы, которую я иметь десятки взаимосвязанных таблиц, с частыми запросами случаев использования, где я спрашиваю, где X = (некоторое значение) в таблице 1, сколько соответствующих строк (через внешний ключ) у него есть в таблице 2, таблице 3 и и так далее.
Итак, когда полезно иметь в таблице num_of_x
столбцы? Описанный выше вариант использования считается хорошей ситуацией, когда его следует использовать (или нет)?