"турбо" курсовая работа специальность "Прикладное программирование" Тема: Создание базы данных «Аэропорт»

Вид материалаКурсовая

Содержание


Анализ предметной области
Инфологическая модель базы данных
Физическая модель базы данных
Таблицы БД
Связи между таблицами
Создание генераторов и триггеров
Приложение (SQL – скрипты)
Таблица PARK(Парк самолетов)
Таблица NAZ(Пункты назначения)
Таблица REIS(Рейсы)
Подобный материал:

Университетский центр компьютерного обучения
"ТУРБО"


КУРСОВАЯ РАБОТА


специальность "Прикладное программирование"


Тема: Создание базы данных «Аэропорт»



Работу выполнил студент 3 курса

_____________________Андреева С. А.




Научный руководитель:

_______________________Бурлаев С. Ю.



Майкоп, 2009 г.

Оглавление

Введение 3

Анализ предметной области 4

Инфологическая модель базы данных 4

Физическая модель базы данных 5

Таблицы БД 5

Связи между таблицами: 6

Создание генераторов и триггеров 6

Выводы 7

Литература 8

Приложение (SQL – скрипты) 9



Введение


В сетевой архитектуре «клиент-сервер» БД размещается на компьютере-сервере сети и называется также «удаленной БД». Приложение, осуществляющее работу с этой БД, находится на ПК пользователя.

Взаимодействие сервера БД и приложения-клиента происходит следующим образом: клиент формирует SQL-запрос и отсылает его серверу. Сервер, приняв запрос, выполняет его, и результат возвращает клиенту. В клиентском приложении в основном осуществляется интерпретация полученных от сервера данных, реализация интерфейса с пользователем и ввод данных.

Целью данной работы является создание клиент-серверной базы данных (а именно ее серверной части) с использованием SQL-сервера Borland InterBase.

Анализ предметной области


Есть Аэропорт, в нем стоят пассажирские самолеты. Из аэропорта можно летать в Москву, Санкт Петербург и заграницу. Можно узнать тип самолета на каком вы летите, его номер стоянки, и когда вы вылетаете.

Инфологическая модель базы данных



Анализ описанной предметной области и решаемых задач позволяет выделить следующие сущности:


Самолеты (1)

Парк самолётов (2)

Пункты назначения (3)

Рейсы (4)

Вылеты (5)


В таблице Самолеты (1) представлена информация о типе самолета и количеств мест в самолёте.

В таблице Парк Самолетов (2) предоставлена информация о номерах стоянки самолетов и какой тип самолет.

В таблице Пункты Назначения (3) представлена информация о аэропортах.

В таблице Рейсы (4) представлена информация о номере рейса, время вылета и пункте назначения.

В таблице Вылеты (5) представлена информация о дате вылета, рейса и парка самолетов.

Физическая модель базы данных


Авторами была поставлена задача создания клиент серверного приложения. В качестве сервера базы данных было решено использовать сервер FireBird.

Таблицы БД


База данных, как следует из разработки инфологической модели, содержит пять таблиц:


SAM(Самолёты)

Поле

Тип

Описание

S_KOD

Integer

Код Самолета.

S_TIPSAM

VARCHAR (20)

Тип Самолёта.

S_CHISLOPM

Integer

Число пассажирских мест.



PARK (Парк самолетов)

Поле

Тип

Описание

P_KOD

Integer


Код Парка самолета.

S_KOD

Integer

Код Самолета.

P_NST

VARCHAR (10)

Номер стоянки самолета.


NAZ (Пункт назначения)

Поле

Тип

Описание

N_KOD

INTEGER

Код Пункта назначения.

N_PUNKT

VARCHAR(40)

Пункт назначения.



REIS (Рейс)

Поле

Тип

Описание

R_KOD

INTEGER

Код рейса.

R_NOM

VARCHAR (20)

Номер рейса.

R_TIME

TIME

Время вылета

N_KOD

Integer

Код Пункта назначения


VYLET (Вылеты)

Поле

Тип

Описание

V_KOD

INTEGER

Код вылета.

V_DATAV

DATE

Дата вылета.

R_KOD

Integer

Код Рейса

P_KOD

Integer

Код парка



Связи между таблицами:




Между таблицами SAM(Самолёты) и PARK (Парк самолетов) установлена связь один-ко-многим по полю S_KOD (код самолета). Один и тот же самолет стоит в парке.

Между таблицами NAZ (Пункт назначения) и REIS (Рейс) установлена связь один-ко-многим по полю N_KOD (код пункта назначения). Один и тот же пункт назначения используется в таблице рейсы.

Между таблицами REIS (Рейс) и VYLET (Вылеты) установлена связь один-ко-многим по полю R_KOD (код рейса). Один и тот же рейс используется в таблице вылеты. Между таблицами PARK (Парк самолетов) и VYLET (Вылеты) установлена связь один-ко-многим по полю P_KOD (Код парка самолета). Один и тот же парк используется в таблице вылеты.

Создание генераторов и триггеров


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

Для реализации этого механизма необходимо два компонента: генератор уникального значения и триггер, который будет присваивать это значение при вставке новой записи.

Для создания генератора необходимо выполнить запрос CREATE GENERATOR, а для присвоения уникального значения первичному ключу – создать триггер типа BEFORE INSERT.

Запрос на создание триггера:


SET TERM ;

CREATE TRIGGER REIS_bi FOR REIS

ACTIVE BEFORE INSERT

AS

BEGIN

IF(NEW.R_KOD IS NULL) THEN

NEW.R_KOD=GEN_ID(g_R_KOD,1);

END

SET TERM ;


Запрос на создание генератора:


CREATE GENERATOR G_R_KOD;

SET GENERATOR G_R_KOD TO 0;


Подобные SQL-запросы должны быть в сценарии создания базы после SQL-запросов создания таблиц CREATE TABLE для каждой таблицы, имеющей автоинкрементный ключ.

Выводы


Автором разработана клиент-серверная база данных (а именно ее серверная часть) «Аэропорт» с использованием SQL-сервера Borland InterBase.

В процессе работы над дипломной работой автором закреплены практические навыки по созданию клиент-серверных приложений для работы с базами данных на основе SQL-сервера InterBase, полученные на занятиях в УЦКО «Турбо».

Данное приложение можно использовать (совместно с серверной частью) на аэропортах.

Литература

  1. Архангельский А. Я. Программирование в Delphi 7. – М.: ООО "Бином-Пресс", 2003 г. – 1152 с.
  2. Кандзюба С. П., Громов В. Н. Delphi 6. Базы данных и приложения. Лекции и упражнения. – К.: Издательство «ДиаСофт», 2001. – 576 с.
  3. Сурков К. А., Сурков Д. А., Вальвачёв А. Н. Программирование в среде Delphi. – Мн.: ООО "Попурри", 1977. – 640 с.
  4. Фаронов В. В. Программирование баз данных в Delphi 6. Учебный курс. – СПб.: Питер, 2002. –352 с.
  5. Хендерсон К. Руководство разработчика баз данных в Delphi. – К.: Диалектика, 1966. – 544 с.
  6. Хомоненко А. Д. идр. Delphi 7 / Под общ. ред. А. Д. Хомоненко. – СПб.: БХВ-Петербург, 2004. – 1216 с.



Приложение (SQL – скрипты)


Таблица SAM(Самолёты):


CREATE TABLE SAM

(S_KOD INTEGER NOT NULL,

S_TIPsam VARCHAR (20) NOT NULL,

S_CHISLOpm INTEGER NOT NULL,

PRIMARY KEY(S_KOD));


CREATE GENERATOR G_S_KOD;

SET GENERATOR G_S_KOD TO 0;


SET TERM ;

CREATE TRIGGER SAM_bi FOR SAM

ACTIVE BEFORE INSERT

AS

BEGIN

IF(NEW.S_KOD IS NULL) THEN

NEW.S_KOD=GEN_ID(g_S_KOD,1);

END

SET TERM ;


Таблица PARK(Парк самолетов):


CREATE TABLE PARK

(P_KOD INTEGER NOT NULL,

S_KOD INTEGER NOT NULL,

P_NST VARCHAR (10) NOT NULL,

PRIMARY KEY(P_KOD));


CREATE GENERATOR G_P_KOD;

SET GENERATOR G_P_KOD TO 0;


SET TERM ;

CREATE TRIGGER PARK_bi FOR PARK

ACTIVE BEFORE INSERT

AS

BEGIN

IF(NEW.P_KOD IS NULL) THEN

NEW.P_KOD=GEN_ID(g_P_KOD,1);

END

SET TERM ;


Таблица NAZ(Пункты назначения):


CREATE TABLE NAZ

(N_KOD INTEGER NOT NULL,

N_PUNKT VARCHAR (40) NOT NULL,

PRIMARY KEY(N_KOD));


CREATE GENERATOR G_N_KOD;

SET GENERATOR G_N_KOD TO 0;


SET TERM ;

CREATE TRIGGER NAZ_bi FOR NAZ

ACTIVE BEFORE INSERT

AS

BEGIN

IF(NEW.N_KOD IS NULL) THEN

NEW.N_KOD=GEN_ID(g_N_KOD,1);

END

SET TERM ;


Таблица REIS(Рейсы):


CREATE TABLE REIS

(R_KOD INTEGER NOT NULL,

R_NOM VARCHAR (20) NOT NULL,

R_TIME TIME,

N_KOD INTEGER NOT NULL,

PRIMARY KEY(R_KOD));


CREATE GENERATOR G_R_KOD;

SET GENERATOR G_R_KOD TO 0;


SET TERM ;

CREATE TRIGGER REIS_bi FOR REIS

ACTIVE BEFORE INSERT

AS

BEGIN

IF(NEW.R_KOD IS NULL) THEN

NEW.R_KOD=GEN_ID(g_R_KOD,1);

END

SET TERM ;


Таблица VYLET(Вылеты):


CREATE TABLE VYLET

(V_KOD INTEGER NOT NULL,

V_DATAV DATE NOT NULL,

R_KOD INTEGER NOT NULL,

P_KOD INTEGER NOT NULL,

PRIMARY KEY(V_KOD));


CREATE GENERATOR G_V_KOD;

SET GENERATOR G_V_KOD TO 0;


SET TERM ;

CREATE TRIGGER VYLET_bi FOR VYLET

ACTIVE BEFORE INSERT

AS

BEGIN

IF(NEW.V_KOD IS NULL) THEN

NEW.V_KOD=GEN_ID(g_V_KOD,1);

END

SET TERM ;