Предмет: Информатика
Раздел: Базы данных (MS Access, реляционная модель данных)
Задание:
Исправить связи между таблицами в базе данных "Железнодорожные перевозки", представленной в MS Access.
Анализ текущей схемы данных:
На изображении представлена схема реляционной базы данных, содержащая следующие таблицы:
- Билеты ([Код_билета], [Код_пассажира], [Код_расписания], Место, Стоимость)
- Пассажиры ([Код_пассажира], ФИО, Паспорт, Возраст)
- Станции ([Код_станции], Название_станции, Город)
- Станции_1 ([Код_станции], Название_станции, Город) — дублирующая таблица
- Маршруты ([Код_маршрута], Название_маршрута, Начальная_станция, Конечная_станция)
- Расписание ([Код_расписания], [Код_поезда], [Код_маршрута], Дата_отправления, Время_отправления, Время_прибытия)
- Поезда ([Код_поезда], Номер_поезда, Тип_поезда, Количество_вагонов)
Ошибки в связях:
- Таблица "Станции_1" дублирует таблицу "Станции" — это избыточность, нужно оставить только одну таблицу.
- В таблице "Маршруты" поля "Начальная_станция" и "Конечная_станция" должны быть внешними ключами на таблицу "Станции", но связи не установлены.
- Связь между "Расписание" и "Станции" отсутствует, хотя логично было бы её установить, если поезд останавливается на определённых станциях (но это может быть реализовано через другую таблицу — "Остановки").
- Связь между "Билеты" и "Расписание" корректна.
- Связь между "Билеты" и "Пассажиры" также корректна.
Исправления:
1. Удалить таблицу Станции_1
- Она дублирует таблицу Станции и не несёт дополнительной информации.
2. В таблице Маршруты:
- Связать поле [Начальная_станция] с [Код_станции] таблицы Станции
- Связать поле [Конечная_станция] с [Код_станции] таблицы Станции
Важно: поскольку обе связи идут к одной таблице, они должны быть правильно подписаны (например, псевдонимы в SQL-запросах или комментарии в Access).
3. Проверить, нужна ли дополнительная таблица "Остановки":
- Если расписание включает промежуточные станции, нужно создать таблицу Остановки:
- [Код_остановки], [Код_расписания], [Код_станции], Время_прибытия, Время_отправления
Итоговая структура связей:
- Билеты.[Код_пассажира] → Пассажиры.[Код_пассажира]
- Билеты.[Код_расписания] → Расписание.[Код_расписания]
- Расписание.[Код_поезда] → Поезда.[Код_поезда]
- Расписание.[Код_маршрута] → Маршруты.[Код_маршрута]
- Маршруты.[Начальная_станция] → Станции.[Код_станции]
- Маршруты.[Конечная_станция] → Станции.[Код_станции]
Дополнительно (рекомендуется):
Создать таблицу Остановки для хранения информации о промежуточных станциях, если это необходимо.
Если хочешь, я могу нарисовать правильную схему связей или помочь создать SQL-запросы для создания таблиц и связей.