Access. Подкорректировать таблицы чтобы избежать избыточности данных
Предмет: Информатика
Раздел: Базы данных (реляционные базы данных, нормализация, проектирование схемы данных)
🔍 Цель задания:
Оптимизировать структуру базы данных в Microsoft Access, устранив избыточность данных.
🔧 Анализ текущей схемы
На изображении представлена схема реляционной базы данных для железнодорожных перевозок. Таблицы:
- Билеты
- Пассажиры
- Станции
- Станции_1
- Станции_2
- Поезда
- Расписание
- Маршруты
❗ Проблемы избыточности в текущей структуре
🔁 Повторяющиеся таблицы:
- Таблицы Станции, Станции_1, Станции_2— содержат одинаковые поля:
- [Код_станции], [Название_станции], [Город]
📌 Это явная избыточность. Все три таблицы дублируют одну и ту же структуру.
✅ Предлагаемое решение: устранение избыточности
1. Оставить только одну таблицу "Станции"
Удалить Станции_1 и Станции_2, так как они дублируют таблицу Станции.
2. В таблице "Маршруты" заменить поля:
- [Начальная_станция] и [Конечная_станция] — это, вероятно, текстовые поля.
- Заменить их на внешние ключи, ссылающиеся на таблицу Станции:
- [Код_начальной_станции]
- [Код_конечной_станции]
3. Обновить связи:
- Установить связи между:
- [Код_начальной_станции] → [Станции.Код_станции]
- [Код_конечной_станции] → [Станции.Код_станции]
🧱 Итоговая структура таблицы "Маршруты" будет:
Код_маршрута | Название_маршрута | Код_начальной_станции | Код_конечной_станции |
---|
🔄 Обновление связей в "Расписание":
- Таблица "Расписание" уже содержит [Код_маршрута], который связан с таблицей "Маршруты" — это корректно.
✅ Результат после оптимизации:
- Удалено 2 дублирующих таблицы (Станции_1, Станции_2)
- Введены внешние ключи вместо текстовых названий станций в таблице Маршруты
- Схема становится:
- Более нормализованной (3-я нормальная форма)
- Устойчивой к дублированию данных
- Удобной для обновлений (изменения названия станции сразу отражаются везде)
📌 Рекомендации:
- Убедитесь, что в таблице Станции установлен первичный ключ по полю [Код_станции]
- Установите каскадное обновление и удаление для связей, если это необходимо
Если нужно, я могу нарисовать схему после оптимизации.