Загрузка данных


1. Затраты большого количества времени на обновление баз данных

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

Решение через БД:

· Единое централизованное хранилище. Одно изменение автоматически отражается во всех связанных отчётах.
· Веб-интерфейс с формами, валидацией и автозаполнением.
· Триггеры и хранимые процедуры автоматически пересчитывают занятость мест, задолженности, статусы.

Эффект:
Время на обновление значительно сокращается

Целесообразность:
Высокая. Даже при 100–200 проживающих ручной учёт становится узким местом. БД окупается за счёт экономии времени персонала.

2. Добавление новых цен за комнаты

Проблема:
При изменении стоимости проживания нужно вручную править цены для каждого типа комнат, пересчитывать начисления, обновлять договоры. История цен теряется, возникают ошибки в квитанциях.

Решение через БД:

· Отдельная таблица Prices со полями: room_type_id, amount, valid_from, valid_to.
· Новая цена добавляется одной записью. Старые цены сохраняются для истории и перерасчётов.
· Начисление автоматически берёт актуальную цену на дату.
· Можно задавать льготы, сезонные коэффициенты, индивидуальные скидки.

Эффект:
Добавление новой цены занимает минуты вместо часов. Исключаются ошибки в начислениях. 

Целесообразность:
Высокая. Особенно если цены меняются регулярно или есть категории комнат.

3. Добавление самого человека в комнату

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

Решение через БД:

· Таблица Occupancy (проживание): student_id, room_id, date_in, date_out, status.
· Ограничения (constraints) и триггеры не позволят заселить человека в комнату, если мест нет.
· Автоматическая проверка: пол, курс, факультет, льготы, задолженность.
· История заселений и выселений сохраняется.
· Интеграция с заявками и очередью.

Эффект:
Заселение оформляется за 1–2 минуты. Исключены переполнения и конфликты.

Целесообразность:
Очень высокая. Это ядро системы. 

4. Фотографии комнат
Проблема:
Фото хранятся в папках на компьютере коменданта, в мессенджерах, на флешках. Сложно найти фото конкретной комнаты, нет привязки к состоянию на дату, нет разграничения доступа.

Решение через БД:

· Таблица RoomPhotos
· Сами файлы хранятся на файловом сервере, в БД — только путь и метаданные. 
· Привязка к комнате, возможность загружать несколько фото, создавать миниатюры.
· Доступ по ролям

Эффект:
Централизованный фотоархив. Быстрый поиск. История состояния комнат

Целесообразность:
Средняя или высокая. Если общежитие большое и важно фиксировать состояние комнат — да. Если это маленькое общежитие, можно отложить на второй этап. 

5. Разделение ролей для работников

Проблема:
Все пользуются одним файлом или имеют полный доступ. Нет разграничения: комендант, бухгалтер, администратор, вахтёр. Это риск ошибок и утечек персональных данных.

Решение через БД:

· RBAC (Role-Based Access Control): таблицы Users, Roles, Permissions, UserRoles.
· Аудит действий: кто, что и когда изменил.
· Аутентификация: пароли, возможно интеграция с LDAP/Active Directory вуза.

Эффект:
Повышается безопасность, снижается риск случайных правок, упрощается обучение 

Целесообразность:
Высокая. Это обязательное требование при работе с персональными данными.