ник: D3n
Прошу, если возможно, помогите мне! )
Я студент, и такое сам точно не реализую!
Сначала нужно базу разбить в 3NF
А потом делать это:
Лабораторная работа №1
Разработать ER-диаграмму, а затем, пользуясь средствами СУБД Microsoft Access, создать базу данных для информационной системы железной дороги (поезда дальнего следования). Основная задача системы — предоставление справочной информации о расписании движения поездов и продажа билетов.
Для каждого поезда в системе хранится номер поезда, дата отправления и прибытия, станции, через которые он проезжает (с указанием времени прибытия и отправления для каждой станции) и вагоны, из которых он состоит. Вагоны могут быть различных типов, для каждого типа вагона известны количество мест и коэффициент стоимости билета. Для каждого перемещения между двумя станциями определена стоимость, и цена билета определяется как суммарная стоимость для всех промежуточных остановок, помноженная на коэффициент стоимости для данного типа вагона. На одно место может быть продано более одного билета, если предыдущий пассажир должен выйти к моменту посадки следующего. Для каждого пассажира в момент продажи билета в базу данных заносятся ФИО и номер паспорта.
Поскольку система предназначена только для продажи билетов, не требуется хранить информацию о физических вагонах, из которых составлен поезд, достаточно знать, к примеру, что первый вагон в таком-то поезде — купейный, второй — плацкартный, и т.д.. База данных должна содержать следующие ограничения целостности:
1.Между временем прибытия поезда на станцию и временем отправления должен быть интервал не менее 3-х минут.
2.Билет может быть продан не ранее чем за 30 дней. (подсказка: функция Date() позволяет определить текущую дату, функция DateAdd(“d”; кол-во дней; дата) позволяет получить дату, отстоящую от указанной на определенное количество дней)
3.Поезд не может состоять более чем из 20 вагонов.
Лабораторная работа №2
Пользуясь графическим конструктором запросов на языке QBE, имеющимся в СУБД Microsoft Access, разработать следующие запросы:
1.Поезда, на которых можно доехать от Новгорода до Сочи, и которые еще не отправились. Поезда вывести в порядке отправления. Новгород и Сочи не обязательно являются начальной и конечной станцией. Можно не анализировать, остались ли еще в этом поезде свободные места.
2.Модифицировать предыдущий запрос таким образом, чтобы при его запуске можно было задавать любые станцию отправления и станцию прибытия.
3.Для каждой станции вычислить количество поездов, которые на ней останавливаются.
4.Поезда, которые не следуют через Курск.
Лабораторная работа №3
Разработать аналогичную базу данных в СУБД SQLite. Дополнительно необходимо хранить информацию о каждом месте (верхнее/нижнее, боковое и т.д.). При создании таблиц для всех полей необходимо указать тип данных, каждая таблица должна содержать ключ.
Кроме таблиц, необходимо разработать следующие представления (view):
1.Поезда, на которые со станции отправления проданы все билеты.
2.Три станции, через которые проходит больше всего поездов.
3.Пассажиры, которые покупали билеты несколько раз, но всегда между одними и теми же двумя станциями (туда или обратно).
4.Ближайший поезд, на котором действительно можно доехать от Новгорода до Сочи (остались свободные места)
А также реализовать следующие запросы на модификацию данных:
1.Добавить еще один купейный вагон к поезду номер 123 (число вагонов в поезде заранее неизвестно).
2.Перенести время отправления и прибытия поезда №432 на каждую станцию на 10 минут вперед.
Лабораторная работа №4
Используя триггеры, обеспечить поддержку целостности данных в ранее разработанной базе. Необходимо реализовать не менее двух триггеров, аналогичных внешним ключам, а также следующие триггеры:
1.Триггер, не позволяющий продавать билет на какое-либо место, если другой пассажир уже занял это место, и интервалы пути перекрываются.
2.Триггер, автоматически вычисляющий стоимость билета в момент продажи, и добавляющий эту информацию в таблицу «Билеты».