Железнодорожный вокзал
Концептуальная модель данных: глоссарий, сущности, атрибуты. Первичные, внешние, альтернативные ключи. Определение правил ограничения ввода. Данные сущности Stations, Locomotive, Wagon, Train, Group of wagon. SQL-запросы, реализующие сущности базы данных.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 25.05.2014 |
Размер файла | 458,1 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Министерство образования и науки РФ
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
ТОМСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
СИСТЕМ УПРАВЛЕНИЯ И РАДИОЭЛЕКТРОНИКИ (ТУСУР)
Кафедра компьютерных систем в управлении и проектировании (КСУП)
Курсовая работа
По дисциплине «Распределенные базы данных»
на тему: Железнодорожный вокзал
2013
Реферат
Железнодорожный вокзал, концептуальная модель, сущность, связь, атрибут.
Пояснительная записка содержит концептуальную модель процесса «Железнодорожного вокзала» и описание структуры базы данных, предназначенной для его информационной поддержки. Концептуальное моделирование выполнено с использованием методологии IDEF1X. Приложения содержат описания хранимых таблиц БД и формулировки типовых запросов к данным на SQL.
Введение
Курсовой проект выполнен с целью практического освоения основных приемов и правил методологии информационного моделирования IDEF1X. В качестве предметной области разрабатываемой базы данных (БД) выбрана гипотетический железнодорожный вокзал, осуществляющий перевозку пассажиров между городами.
Отдел железнодорожного вокзала заинтересован в автоматизации управления. База данных должна обеспечивать учет фактов отправления и прибытия поездов, учет городов, станций, маршрутов по которым осуществляется движение, учет вагонов и поездов.
Предложенный в настоящей курсовой работе проект направлен на достижение указанных целей.
Основная часть пояснительной записки содержит описание компонентов, процессов и правил, принятых в отделе железнодорожного вокзала. Концептуальная модель данных представлена в виде IDEF1X-диаграмм данных, показывающих сущности предметной области и выявляющих обусловленную правилами логику связей между ними. Диаграммы сопровождаются глоссарием, содержащим формальные определения имен всех сущностей и хранимых элементов данных.
Предполагается, что читатель знаком с нотациями и синтаксисом графического языка описания данных IDEF1X.
Рекомендуется следующий порядок чтения пояснительной записки:
- ознакомиться с описанием предметной области;
- ознакомиться со структурами хранимых таблиц БД, представленными на диаграмме FA-уровня.
Практическое значение: разработанная БД позволяет сократить время и автоматизировать отслеживание и контроль поездов, маршрутов и т.д.
Актуальность курсовой работы объясняется тем, что в настоящее время, существуют проблемы, связанные с эффективным распределением и систематизированием больших потоков информации, как внутри организации, так и за ее пределами. Для решения этих проблем необходимо внедрение распределенных систем обработки данных. Целью распределенной обработки информации является оптимизация использования ресурсов и упрощение работы пользователя.
Актуальность разработки базы данных состоит в значительном упрощении и автоматизации учёта, отслеживания, управления поездами и маршрутами на железнодорожной станции. База данных должна быть разработана в программной среде Oracle database, с использованием языка программирования PL/SQL. Результатом работы курсовой работы должна стать готовая БД, удовлетворяющая всем требованиям технического задания.
1. Постановка задачи
1.1 Описание предметной области
Железная дорога - организация, предоставляющая населению услуги транспортного характера. Предметной областью является деятельность железнодорожных касс вокзала. В кассах осуществляется продажа билетов из одной точки в другую. Поезда выходят каждый день и в любое время. Каждый поезд имеет номер рейса по которому осуществляет маршрут. Каждый сформированный поезд состоит из ведущего локомотива и нескольких вагонов. Как вагоны, так и локомотивы имеют свой серийный номер, производителя и дату выпуска, а также каждый из них имеет привязку к определенной станции. Помимо перечисленных параметров вагоны и локомотивы имеют ряд классификаций: тип питания, количество секций, пассажирских мест и т.д.
Так как данная предметная область представляет собой сферу услуг, то основной её задачей является обеспечение максимальной скорости передачи информации клиенту. Повышая востребованность железнодорожного транспорта, увеличивается прибыль данной сферы, что улучшает состояние экономики страны, так как большинство железнодорожных кампаний являются государственными.
Исходя из того, что главным пользователем данной системы будет пассажир, то можно предположить следующие задачи для разрабатываемого программного обеспечения:
Свободный доступ к информации;
Удобный и понятный для пользователя интерфейс приложения;
Возможность редактировать базу данных в соответствии с текущим расписанием;
Сортировка данных по выбранному критерию для увеличения скорости поиска;
Возможность заказывать билет через Интернет;
Поиск нужного рейса или вокзала по известным уже данным.
1.2 Формализованное описание задачи
Наименование задачи: Автоматизация управления ЖД вокзала
Цель деятельности: Обеспечение перевозки людей из одного населённого пункта в другой.
Функции работника ЖД вокзала:
оператор ЖД вокзала:
- регистрация данных о станциях;
- регистрация данных о маршрутах;
- регистрация данных о поездах прибывающих или отправляющихся от вокзала;
- контроль расписания движения поездов;
Правила ЖД вокзала:
- клиент может воспользоваться услугами вокзала любое число
раз в сутки;
- клиент может получить всю необходимую информацию о маршрутах и рейсах;
- данные о рейсах не имеют срока давности;
Перечень вводимой информации:
Данные о станции (название станции, город, название дороги)
Данные о поезде (серийный номер, категория, тип питания, производитель, год производства)
Данные о вагон (серийный номер, тип вагона, количество мест, производитель, год производства)
Данные о рейсах (время прибытия и отправления, расстояние)
Основные пользователи БД: оператор; сведения о маршрутах, рейсах и т.д. так же могут быть доступны клиентам ЖД вокзала.
2. Концептуальная модель данных
Цель концептуального проектирования - создание концептуальной модели данных на основе представлений о предметной области каждого отдельного типа пользователей. Концептуальная модель представляет собой описание основных сущностей (таблиц) и связей между ними без учета принятой модели БД и синтаксиса целевой БД.
Разработанная функциональная модель системы отвечает на вопросы «Что должна делать система?» и «За счет каких действий может быть достигнут требуемый результат?». Эта модель также позволяет концептуально определить наборы данных, используемых в системе.
На рис. 2.1 приведен блок физической информационной модели «Железнодорожный вокзал». Для ее построения использовался ERwin 4.0.
Рисунок 2.1 - Концептуальная модель ЖД вокзала
3. Глоссарий модели
Для заданной логической модели «ЖД вокзал» были созданы сущности (таблицы), представленные в табл. 1.
Таблица 1 - Сущности модели «Железнодорожный вокзал»
Станция |
Станции, по которым проходят маршруты поездов |
|
Рейс |
Точный факт рейса, который будет проходить по определенному маршруту, на определенном поезде |
|
Локомотив |
Транспорт, принадлежащий определенной станции, который будут осуществлять тягу несамоходных вагонов |
|
Вагон |
Вагоны, в которых будет осуществляться перевоз пассажиров |
|
Состав вагонов |
Группа сцепленных между собой вагонов, приводящихся в движение при помощи локомотива |
|
Поезд |
Сформированный состав, состоящий из группы вагонов, с одним действующим локомотивом |
3.1 Атрибуты
Для разработанных сущностей логической модели «ЖД вокзал» были добавлены поля, описание которых представлено в табл. 2.
Таблица 2 - Поля сущностей модели «Железнодорожный вокзал»
Имя |
Тип данных |
Размер |
Определение |
Сущность |
|
ID_STATION |
NUMBER |
- |
Идентифицирующий номер станции |
STATIONS |
|
NAME_STATION |
VARCHAR2 |
25 |
Название станции |
STATIONS |
|
REGION |
VARCHAR2 |
25 |
Регион, в котором находиться станция |
STATIONS |
|
ROAD |
VARCHAR2 |
25 |
Название дороги, к которой относиться станция |
STATIONS |
|
KEY_ECP |
NUMBER |
6 |
Код ECP |
STATIONS |
|
ID_TRAVEL |
NUMBER |
- |
Идентифицирующий номер рейса |
TRAVEL |
|
ID_START_STATION |
NUMBER |
- |
Номер станции отправления |
TRAVEL |
|
ID_FINISH_STATION |
NUMBER |
- |
Номер станции прибытия |
TRAVEL |
|
DISTANCE |
NUMBER |
- |
Расстояние между станциями отправления и прибытия |
TRAVEL |
|
ID_TRAIN |
NUMBER |
- |
Номер поезда на маршруте |
TRAVEL |
|
DATE_OF_ARRIVAL |
DATE |
- |
Дата отправления поезда |
TRAVEL |
|
DATE_OF_DEPARTURE |
DATE |
- |
Дата прибытия поезда |
TRAVEL |
|
ID_WAGON |
NUMBER |
- |
Идентифицирующий номер вагона |
WAGON |
|
SERIAL_NUMBER |
NUMBER |
8 |
Серийный номер вагона/локомотива |
WAGON/LOCOMOTIVE |
|
TYPE |
VARCHAR2 |
15 |
Тип вагона по классу |
WAGON |
|
NUMBER_OF_SEATS |
NUMBER |
2 |
Количество мест в вагоне |
WAGON |
|
MANUFACTURER |
VARCHAR2 |
20 |
Производитель вагона/поезда |
WAGON/LOCOMOTIVE |
|
YEAR_OF_PRODUCTION |
NUMBER |
4 |
Год производства вагона/поезда |
WAGON/LOCOMOTIVE |
|
ID_STATION |
NUMBER |
- |
Станция привязки вагона/локомотива |
WAGON/LOCOMOTIVE |
|
ID_LOCOMOTIVE |
NUMBER |
- |
Идентифицирующий номер локомотива |
LOCOMOTIVE |
|
CATEGORY |
VARCHAR2 |
15 |
Категория локомотива |
LOCOMOTIVE |
|
NUMBER_OF_SECTIONS |
NUMBER |
1 |
Количество секций в локомотиве |
LOCOMOTIVE |
|
MOTIVE_POWER |
VARCHAR2 |
2 |
Тип питания локомотива |
LOCOMOTIVE |
|
ID_GROUP_OF_WAGON |
NUMBER |
- |
Идентифицирующий номер группы вагонов |
GROUP_OF_WAGON |
|
ID_WAGON |
NUMBER |
- |
Номер вагона, входящего в состав |
GROUP_OF_WAGON |
|
ID_TRAIN |
NUMBER |
- |
Номер состава |
GROUP_OF_WAGON |
|
ID_TRAIN |
NUMBER |
- |
Идентифицирующий номер состава |
TRAIN |
|
ID_LOCOMOTIVE |
NUMBER |
- |
Номер локомотива, входящего в состав |
TRAIN |
3.2 Типы полей
Поля таблицы предназначены для хранения в них данных. Это могут быть числа, текстовая информация, даты, графические файлы и т. д. Для определения типа данных, размещаемых в поле, используются тип поля, его ширина и количество знаков после запятой. Для их ввода предназначены столбцы Туре (Тип), Length (Ширина) и Precision (Точность) вкладки Add Column (Поля) конструктора таблицы, либо указывается при определении типа, например, NUMBER(8,2).
4. Первичные, внешние и альтернативные ключи
При определении первичных и внешних ключей, также как и при создании таблиц, необходимо учитывать связи типа «предок-потомок» между таблицами. Так как внешний ключ - это атрибут первичного ключа таблицы предка, то сначала надо определить все первичные ключи предков, затем внешние и первичные ключи потомков, и так далее по иерархии. Ключи любого типа определяются при помощи индексов различного типа.
В соответствии с правилом определения типа ключа, для таблиц БД “ЖД вокзал” были определены следующие первичные, внешние и альтернативные ключи:
1. Сущность Stations содержит два ключа (рис. 4.1), первый из которых является первичный ключ и содержит суррогатный ключ станции, вторым ключом является альтернативный ключ, содержащий атрибуты: имя станции, регион расположения станции.
Рисунок 4.1 - Ключи сущности Stations
2. Сущность Locomotive содержит два ключа (рис. 4.2), первый из которых является первичный ключ и содержит суррогатный ключ локомотива, вторым ключом является альтернативный ключ, содержащий атрибуты: серийный номер локомотива, год его производства.
Рисунок 4.2 - Ключи сущности Locomotive
3. Сущность Wagon содержит два ключа (рис. 4.3), первый из которых является первичный ключ и содержит суррогатный ключ вагона, вторым ключом является альтернативный ключ, содержащий атрибуты: серийный номер вагона, год его производства.
Рисунок 4.3 - Ключи сущности Wagon
3. Сущность Group of wagons является сущностью введенной для построения связи «многие ко многим», она содержит один первичный ключ (рис 4.4)
Рисунок 4.3 - Ключи сущности Group of wagons
4. В сущности Train определен только один первичный ключ (рис 5.4).
Рисунок 4.5 - Ключи сущности Train
5. В сущности Travel определены два ключа, первый - первичный ключ, второй - альтернативный, образованный при помощи полей: станция отправления, поезд маршрута, дата отправления.
Рисунок 4.5 - Ключи сущности Travel
Также в сущностях определены внешние ключи, которые не представлены на рисунках выше. Сущности разрабатываемой БД имеют следующие внешние ключи:
Travel:
ID_START_STATION - номер станции отправления;
ID_FINISH_STATION - номер станции прибытия;
ID_TRAIN - поезд на данном маршруте.
Wagon и locomotive:
ID_STATION - номер станции привязки локомотива, вагона.
Group of wagon:
ID_WAGON - номер вагона;
ID_TRAIN - номер поезда, в который входят вагоны.
Train
ID_LOCOMOTIVE - номер локомотива в данном поезде.
5. Определение правил ограничения ввода
Задание. В соответствии с описанием модели ПО установить правила, ограничивающие ввод значений. Проверить работу установленных правил.
5.1 Ограничение сущности wagon
Атрибуту type в сущности wagon задано такое условие правильности ввода, что тип вагона определяется одной из введенной комбинацией букв 'СВ', 'СВМ', 'М', 'К', 'КБ', 'Пл', 'О', 'П', 'Б'.
CONSTRAINT "TYPEWAGON" CHECK (TYPE IN ('СВ', 'СВМ', 'М', 'К', 'КБ', 'Пл', 'О', 'П', 'Б')) ENABLE
Атрибуту number_of_seats в сущности wagon задано такое условие правильности ввода, что количество мест в вагоне может задаваться в промежутке 0 - 81.
CONSTRAINT "NUMBEROFSEATS" CHECK (NUMBER_OF_SEATS BETWEEN 0 and 81) ENABLE
Проверка работы определённых в сущностях ограничений, при вводе в таблицу значений, представленных на рисунке 5.1.
Рисунок 5.1 - Вводимые данные для тестирования ограничений
будет выведено сообщение об ошибке (рис. 5.2), т.к. количество мест не удовлетворяет ограничению:
Рисунок 5.2 - Ошибка, вызванная при обработке ограничения
5.2 Ограничения, реализованные при помощи триггера
С помощью триггеров были реализованы два ограничения:
Ограничение, накладываемое на поле YEAR_OF_PRODUCTION в сущностях Wagon и Locomotive, назначение этого триггера заключается в том, чтобы год производства вагона находился в интервале от 1950г. до текущего года. Листинг триггера для сущности Wagon:
CREATE OR REPLACE
TRIGGER CHECK_YEAR_WAGON
BEFORE INSERT OR UPDATE OF YEAR_OF_PRODUCTION ON WAGON
FOR EACH ROW
BEGIN
IF:NEW.YEAR_OF_PRODUCTION >= EXTRACT(YEAR FROM SYSDATE) OR :NEW.YEAR_OF_PRODUCTION <= 1950 THEN
RAISE_APPLICATION_ERROR(-20000, 'YEAR OF PRODUCTION FAILED TO SUCCESSFULLY UPDATE');
END IF;
END;
Ограничение, накладываемое на поля DATE_OF_ARRIVAL DATE_OF_DEPARTURE в сущности Travel, необходимое для контроля даты отправления и прибытия поездов, т.е. дата отправления поезда не должна быть позднее даты прибытия поезда и наоборот:
CREATE OR REPLACE
TRIGGER CHECK_DATE_OF_ARRIVAL
BEFORE INSERT OR UPDATE OF DATE_OF_ARRIVAL ON TRAVEL
FOR EACH ROW
BEGIN
IF :NEW.DATE_OF_ARRIVAL <= :NEW.DATE_OF_DEPARTURE THEN
RAISE_APPLICATION_ERROR(-20001, 'ERROR DATE');
END IF;
END;
6. Объект - последовательность
Задание: Создать последовательность для автоматической генерации первичных ключей в соответствии с правилами.
Для сущности stations была определена последовательность, первым генерируемым значением которой является 11, а шаг инкрементирования составляет 1:
CREATE SEQUENCE "STATIONS_SEQ" MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH 11 NOCACHE NOORDER NOCYCLE
Для организации автоматической генерации ключей создан триггер, который выполняются каждый раз перед добавлением данных в сущность. Пример триггера для сущности Stations:
CREATE OR REPLACE TRIGGER "BI_STATIONS"
before insert on "STATIONS"
for each row
begin
select "STATIONS_SEQ".nextval into :NEW.ID_STATION from dual;
end;
/
ALTER TRIGGER "BI_STATIONS" ENABLE
/
Подобные триггеры определены для всех сущностей базы данных.
7. Организация ввода данных
Задание: Заполнить файлы БД записями. При формировании записей соблюдать следующие требования:
1. Данные не должны носить фривольный характер
2. Конкретные значения атрибутов должны быть максимально приближены к реальности.
3. Обязательно соблюдать ограничения ссылочной целостности. Это означает, что атрибуты, отмеченные в подчиненной таблице спецификатором FK (внешний ключ), не могут принимать значения, которые не существуют среди значений соответствующего атрибута родительской таблицы. На диаграмме линия связи «предок-потомок» отмечается точкой со стороны подчиненной таблицы.
4. Подчиненная таблица должна содержать несколько записей, соответствующих одной записи родительской таблицы.
Для соблюдения правил ссылочной целостности рекомендуется такая же последовательность заполнения таблиц от предков к потомкам.
Соблюдая заданные требования были введены следующие данные в таблицы:
7.1 Данные сущности Stations
Рисунок 7.1 - Данные сущности Stations
7.2 Данные сущности Locomotive
Рисунок 7.2 - Данные сущности Locomotive
7.3 Данные сущности Wagon
Рисунок 7.3 - Данные сущности Wagon
7.4 Данные сущности Travel
Рисунок 7.4 - Данные сущности Travel
7.5 Данные сущности Train
Рисунок 7.5 - Данные сущности Train
7.6 Данные сущности Group of wagon
Рисунок 7.6 - Данные сущности Group of wagon
8. Запросы
Когда требуется просмотреть, добавить, изменить или удалить данные из базы данных, удобно использовать запросы. Запросы можно использовать для фильтрации данных, выполнения расчетов на основе данных и отображения сводных данных. Кроме того, запросы позволяют автоматизировать выполнение многих задач управления данными и просматривать изменения в данных перед их использованием.
Запрос представляет собой обращение к данным для получения информации и выполнения действий с данными. Запрос можно использовать для получения ответа на простой вопрос, выполнения расчетов, объединения данных из разных таблиц или даже добавления, изменения или удаления данных в таблице. Запросы, используемые для извлечения данных из таблицы или выполнения расчетов, называются запросами на выборку. Запросы, используемые для добавления, изменения или удаления данных, называются запросами на изменение.
Запрос 1. Найти вагоны типа «П».
SELECT ID_WAGON, SERIAL_NUMBER, YEAR_OF_PRODUCTION
FROM WAGON
WHERE TYPE = 'К';
Рисунок 8.1 - Результат работы Запроса 1
Запрос 2. Найти вагоны произведенные с 1977 по 1981.
SELECT ID_WAGON, SERIAL_NUMBER, YEAR_OF_PRODUCTION
FROM WAGON
WHERE (YEAR_OF_PRODUCTION BETWEEN 1977 AND 1981)
AND NOT YEAR_OF_PRODUCTION IN (1977, 1981);
Рисунок 8.2 - Результат работы Запроса 2
Запрос 3. Найти сведения о вагонах с количеством пассажирских мест 26 и 12.
SELECT ID_WAGON, SERIAL_NUMBER, NUMBER_OF_SEATS
FROM WAGON
WHERE NUMBER_OF_SEATS IN (26, 12);
Рисунок 8.3 - Результат работы Запроса 3
Запрос 4. Найти названия производителей локомотивов и количество произведенных ими локомотивов.
SELECT MANUFACTURER, COUNT(ID_LOCOMOTIVE)
FROM LOCOMOTIVE
GROUP BY MANUFACTURER;
Рисунок 8.4 - Результат работы Запроса 4
Запрос 5. Найти названия станций и количество рейсов для этих станций.
SELECT STATIONS.NAME_STATION, COUNT (TRAVEL.ID_START_STATION)
FROM STATIONS, TRAVEL
WHERE STATIONS.ID_STATION = TRAVEL.ID_START_STATION
GROUP BY NAME_STATION;
Рисунок 8.5 - Результат работы Запроса 5
Запрос 6. Найти поезда, которые совершили более 2 рейсов за текущий месяц.
SELECT TRAIN.ID_LOCOMOTIVE, count (TRAVEL.ID_START_STATION)
FROM TRAVEL,TRAIN
WHERE TRAVEL.ID_TRAIN = TRAIN.ID_TRAIN
AND extract(month from TRAVEL.DATE_OF_ARRIVAL) = extract(month from sysdate)
GROUP BY ID_LOCOMOTIVE
HAVING COUNT(*)>2;
Рисунок 8.6 - Результат работы Запроса 6
Запрос 7. Найти станцию, в которую пришло больше всего пездов.
SELECT STATIONS.NAME_STATION
FROM STATIONS,
(SELECT ID_STATION, SUM(TRAVEL.ID_FINISH_STATION) MAX_FINISH
FROM STATIONS, TRAVEL
WHERE STATIONS.ID_STATION = TRAVEL.ID_FINISH_STATION
GROUP BY ID_STATION) t
WHERE t.ID_STATION=STATIONS.ID_STATION
AND MAX_FINISH=(SELECT MAX(MAX_FINISH)
FROM (
SELECT ID_STATION,SUM(TRAVEL.ID_FINISH_STATION) AS MAX_FINISH FROM STATIONS, TRAVEL
WHERE STATIONS.ID_STATION = TRAVEL.ID_FINISH_STATION
GROUP BY ID_STATION))
Рисунок 8.7 - Результат работы Запроса 7
Запрос 8. Найти локомотив, который не входит ни в один состав.
SELECT SERIAL_NUMBER FROM LOCOMOTIVE
MINUS
SELECT SERIAL_NUMBER FROM LOCOMOTIVE
WHERE ID_LOCOMOTIVE IN
(SELECT DISTINCT ID_LOCOMOTIVE
FROM TRAIN)
Рисунок 8.8 - Результат работы Запроса 8
Запрос 9. Найти станции к которым привязан хотябы один вагон.
SELECT STATIONS.NAME_STATION, count(WAGON.ID_WAGON)
FROM STATIONS,WAGON
WHERE STATIONS.ID_STATION = WAGON.ID_STATION
GROUP BY NAME_STATION
HAVING COUNT(*)>=1;
Рисунок 8.9 - Результат работы Запроса 9
Заключение
В результате выполнения курсового проекта была построена концептуальная модель процесса «Железнодорожный вокзал» и описана структура базы данных.
Также были построены таблицы с детальным описанием всех сущностей, атрибутов и доменов, созданы ключи, ограничения, последовательности, запросы. По данной предметной области и ее модели возможна реализация этой модели в СУБД и реализация клиентского приложения.
Список использованных источников
1. А.С. Деревянко. Язык SQL в диалектах Oracle и IBM DB2. Учебное пособие, 2003г.
2. Всё про SQL. [Электронный ресурс] http://www.sql.ru/forum/oracle
3. ГОСТ Р ИСО МЭК ТО 10032-2007: Эталонная модель управления данными (идентичен ISO/IEC TR 10032:2003 Information technology - Reference model of data management)
4. ОС ТУСУР 6.1-97 Система образовательных стандартов. Работы студенческие учебные и выпускные квалификационные.
5. Базы данных. МФПА. [Электронный ресурс] http://inftis.narod.ru/db/db-10.htm
Приложение
SQL-запросы, реализующие сущности проектируемой БД
база данные модель запрос
Сущность локомотив:
CREATE TABLE LOCOMOTIVE
(ID_LOCOMOTIVE NUMBER(*,0),
CATEGORY VARCHAR2(15) NOT NULL ENABLE,
NUMBER_OF_SECTIONS NUMBER(1,0) NOT NULL ENABLE,
MOTIVE_POWER VARCHAR2(17) NOT NULL ENABLE,
MANUFACTURER VARCHAR2(10) NOT NULL ENABLE,
YEAR_OF_PRODUCTION DATE,
ID_STATION NUMBER(*,0) NOT NULL ENABLE,
SERIAL_NUMBER NUMBER(8,0) NOT NULL ENABLE,
PRIMARY KEY (ID_LOCOMOTIVE) ENABLE,
CONSTRAINT ID_STATION_FK FOREIGN KEY (ID_STATION)
REFERENCES STATIONS (ID_STATION) ENABLE
)
Сущность вагон:
CREATE TABLE WAGON
(ID_WAGON NUMBER(*,0),
SERIAL_NUMBER NUMBER(8,0) NOT NULL ENABLE,
MODEL VARCHAR2(15) NOT NULL ENABLE,
TYPE VARCHAR2(15) NOT NULL ENABLE,
NUMBER_OF_SEATS NUMBER(2,0) NOT NULL ENABLE,
MANUFACTURER VARCHAR2(10) NOT NULL ENABLE,
YEAR_OF_PRODUCTION DATE NOT NULL ENABLE,
ID_STATION" NUMBER(*,0) NOT NULL ENABLE,
PRIMARY KEY (ID_WAGON) ENABLE,
CONSTRAINT WAGON_AK UNIQUE (SERIAL_NUMBER, YEAR_OF_PRODUCTION) ENABLE,
CONSTRAINT ID_STATION_FK_WAGON FOREIGN KEY (ID_STATION)
REFERENCES STATIONS (ID_STATION) ENABLE
)
Сущность поезд
CREATE TABLE TRAIN
(ID_LOCOMOTIVE NUMBER(*,0) NOT NULL ENABLE,
ID_TRAIN NUMBER(*,0) NOT NULL ENABLE,
PRIMARY KEY (ID_TRAIN) ENABLE,
CONSTRAINT LOCOMOTIVE_FK FOREIGN KEY (ID_LOCOMOTIVE)
REFERENCES LOCOMOTIVE (ID_LOCOMOTIVE) ENABLE
)
Сущность станция
CREATE TABLE "STATIONS"
("ID_STATION" NUMBER(*,0) NOT NULL ENABLE,
"NAME_STATION" VARCHAR2(25) NOT NULL ENABLE,
"REGION" VARCHAR2(25) NOT NULL ENABLE,
"ROAD" VARCHAR2(25) NOT NULL ENABLE,
"KEY_ECP" NUMBER(6,0) NOT NULL ENABLE,
PRIMARY KEY ("ID_STATION") ENABLE,
CONSTRAINT "STATION_AK" UNIQUE ("NAME_STATION", "KEY_ECP") ENABLE
)
Сущность группа вагонов:
CREATE TABLE GROUP_OF_WAGON
(ID_GROUP_OF_WAGON NUMBER(*,0),
ID_WAGON NUMBER(*,0) NOT NULL ENABLE,
ID_TRAIN NUMBER(*,0),
PRIMARY KEY (ID_GROUP_OF_WAGON) ENABLE,
CONSTRAINT ID_WAGON_FK FOREIGN KEY (ID_WAGON)
REFERENCES WAGON (ID_WAGON) ENABLE,
CONSTRAINT ID_TRAIN_FK FOREIGN KEY (ID_TRAIN)
REFERENCES TRAIN (ID_TRAIN) ENABLE
)
Сущность рейс:
CREATE TABLE TRAVEL
(ID_TRAVEL NUMBER(*,0),
ID_START_STATION NUMBER(*,0) NOT NULL ENABLE,
ID_FINISH_STATION NUMBER(*,0) NOT NULL ENABLE,
ID_TRAIN NUMBER(*,0) NOT NULL ENABLE,
DISTANCE NUMBER(4,1) NOT NULL ENABLE,
DATE_OF_DEPARTURE DATE NOT NULL ENABLE,
DATE_OF_ARRIVAL DATE NOT NULL ENABLE,
PRIMARY KEY (ID_TRAVEL) ENABLE,
CONSTRAINT START_STATION_FK FOREIGN KEY (ID_START_STATION)
REFERENCES STATIONS (ID_STATION) ENABLE,
CONSTRAINT FINISH_STATION_FK FOREIGN KEY (ID_FINISH_STATION)
REFERENCES STATIONS (ID_STATION) ENABLE,
CONSTRAINT TRAIN_FK FOREIGN KEY (ID_TRAIN)
REFERENCES TRAIN (ID_TRAIN) ENABLE
)
Размещено на Allbest.ru
Подобные документы
Сущности и функциональные зависимости базы данных. Атрибуты и связи. Таблицы базы данных. Построение ER-диаграммы. Организация ввода и корректировки данных. Реляционная схема базы данных. Реализация запросов, получение отчетов. Защита базы данных.
курсовая работа [2,4 M], добавлен 06.02.2016Реализация системы управления, предоставляющей пользователю информацию о патенте. Основные предметно-значимые сущности и их атрибуты. Ограничения предметной области. Требования к функциям системы. Концептуальная схема базы данных в виде ER-диаграммы.
контрольная работа [295,6 K], добавлен 27.05.2013Создание инфологической и даталогической модели базы данных, которые отображают сущности и атрибуты, отношения и поля. Разработка информационной системы учета пролеченных в дневном стационаре (DSP) с помощью СУБД MS Access и среды разработки Delphi 7.
курсовая работа [1,5 M], добавлен 03.07.2012Построение инфологической концептуальной модели предметной области. Структура базы данных Microsoft Office Access. Формы, запросы и отчеты. Создание форм, запросов и отчетов в базах данных. Схема данных физической и логической сущности в Erwin 4.0.
курсовая работа [5,1 M], добавлен 13.12.2011Реализация программной подсистемы "Личный кабинет врача". Реляционная модель данных. Проектирование семантической сети для введения амбулаторных карт. Основные сущности и их атрибуты. Выявление связей между сущностями. Физический уровень модели данных.
дипломная работа [325,0 K], добавлен 30.06.2012Проектирование и создание информационной базы данных для управления предприятием "Завод металлоизделий". Данные для базы, предметная область, атрибуты объектов базы данных. Объектные отношения, их ключи, связи объектов и отношений базы данных предприятия.
реферат [26,9 K], добавлен 04.12.2009Концептуальная модель базы данных "Бюро по трудоустройству". Разработка информационного и программного обеспечения объектов автоматизации. Реализация базы данных в СУБД MsAccess. Запросы к базе данных. Таблицы, отчеты и макросы. Интерфейс пользователя.
курсовая работа [5,2 M], добавлен 30.05.2016Понятие реляционной модели данных, целостность ее сущности и ссылок. Основные этапы создания базы данных, связывание таблиц на схеме данных. Проектирование базы данных книжного каталога "Books" с помощью СУБД Microsoft Access и языка запросов SQL.
курсовая работа [838,9 K], добавлен 25.11.2010Реализация приложения "Книжный магазин" средствами систем управления базами данных. Проектирование структуры базы данных, определение сущности и атрибутов. Логическое проектирование базы данных и реализация базы данных в СУБД Microsoft Office Access.
курсовая работа [7,8 M], добавлен 13.02.2023Исследование назначения и возможностей базы данных. Анализ круга пользователей системы. Базовые сущности и их атрибуты. Определение требований к операционной обстановке. Создание таблиц и нормализация отношений. Составление форм, запросов и отчетов.
курсовая работа [2,6 M], добавлен 30.08.2012