Задать вопрос
@bfreedom

Как работать с большими данными в MySQL или как создать удобную структуры базы данных?

Добрый день. Пишу простенький сайт для отчетности внутри учреждения на Yii2.
Цель такая: 25 сотрудников будут заполнять таблицы каждый месяц. А администратор будет получать итоговые данные.
У каждого месячного отчета 99 строк для заполнения, т.е. в месяц примерно 2500 строк. Как удобно хранить такие данные? Месячный отчет всех 25 сотрудников хранить в отдельных таблицах? Я вообще зеленый в плане структуры базы данных, поэтому обращаюсь к про)
  • Вопрос задан
  • 215 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
@rPman
Да.
Есть момент, твой объём данных ничтожно мал.

У хранения данных в базе данных есть два основных подхода - хранить ключ-атрибут-значение, где на атрибут будет отводиться одна строка таблицы, называется eav, и хранение данных в полях, где на один объект отводится одна запись в таблице атрибуты хранятся в колонках.

Первый подход очень гибкий и универсальный и позволяет добавлять новый атрибуты без особой модификации кода, точнее код должен рассчитываться таким что атрибуты универсальны, недостаток подхода - очень медленная работа аналитики, особенно на больших объемах (десятки тысяч объектов с сотнями атрибутов), что имеет свои решения но в результате они выродятся во второй подход.

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

То есть я рекомендую хранить объекты в строках а атрибуты в колонках, даже если их сотни. Старайся отделять разные объекты по разным таблицам.
Ответ написан
Ваш ответ на вопрос

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

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