- •Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
- •Отчет по лабораторной работе №2
- •Создание пользователя и его схемы.
- •Проектирование схемы базы данных
- •Перенос схемы бд из sql Data Modeler в sql Developer
- •Добавление данных в таблицы
- •Представления
Федеральное государственное бюджетное образовательное учреждение высшего профессионального образования
|
«Московский государственный технический университет имени Н.Э. Баумана» (МГТУ им. Н.Э. Баумана) |
ФАКУЛЬТЕТ: ИНФОРМАТИКА И СИСТЕМЫ УПРАВЛЕНИЯ
КАФЕДРА: КОМПЬЮТЕРНЫЕ СИСТЕМЫ И СЕТИ
Отчет по лабораторной работе №2
Дисциплина: Базы данных
Название лабораторной работы: Создание сложных форм и запросов
Студент гр. ИУ6 - 43 ______________ ____А. М. Куницкая_____
(Подпись, дата) (И.О. Фамилия)
Преподаватель __________________ ___М.А.Гаврилова___
(Подпись, дата) (И.О. Фамилия)
Москва, 2017
Цель:
Получить навыки работы с подстановками и масками.
Получить навыки работы со сложными запросами и формами.
Задания для выполнения :
Создание пользователя и его схемы.
Проектирование схемы базы данных
Перенос схемы БД из SQL Data Modeler в SQL Developer
Добавление данных в таблицы
Представления
Создание пользователя и его схемы.
Для начала мы создаем нового пользователя и его схемы, наделяем его правами и просматриваем, как это выглядит на языке SQL.
Проектирование схемы базы данных
Разработать фрагмент базы данных системы бронирования авиационных билетов, то есть для автоматизации первого бизнес процесса бронирования – выбор маршрута путешествия. Итак, клиент задает город вылета и город назначения, определяет дату перелета и указывает дату обратного перелета, если таковой необходим. Система подбирает подходящие рейсы по маршруту перелета и показывает их клиенту для выбора.
Для осуществления этого процесса надо учитывать, что рейс определяется датой, аэропортом вылета, временем вылета, аэропортом прилета, авиаперевозчиком. В каждом городе может быть несколько аэропортов. На данном этапе мы не заморачиваемся, каким образом данные о клиенте, аэропортах, рейсах и т.д. попадают в систему. Нам нужно выделить сущности, атрибуты и определить связи между ними.
Сначала надо определиться с сущностями «клиент» и «заказ». Создайте схему с полным набором полей.
Генерируем код на SQL в Data Modeler и добиваемся, чтобы все первичные ключи автоматически генерировались при помощи последовательностей и триггеров.
CREATE TABLE Аэр
(
Ид NUMBER NOT NULL ,
Назв CHAR (25 CHAR) ,
Гор NUMBER NOT NULL
) ;
ALTER TABLE Аэр ADD CONSTRAINT Аэр_PK PRIMARY KEY ( Ид ) ;
CREATE TABLE Гор
(
Кодгор NUMBER NOT NULL ,
Наз_р CHAR (25 CHAR) ,
Наз_а CHAR (25 CHAR) ,
Страна CHAR (25 CHAR)
) ;
ALTER TABLE Гор ADD CONSTRAINT Гор_PK PRIMARY KEY ( Кодгор ) ;
CREATE TABLE Зак
(
Кодзак NUMBER NOT NULL ,
Клиент NUMBER NOT NULL ,
Д_зак DATE ,
Стат_зак VARCHAR2 (4000) ,
Д_выл DATE ,
Г_выл NUMBER NOT NULL ,
Г_прил NUMBER NOT NULL ,
Д_выл_обр_рей DATE ,
Д_выл_пр_рей DATE
) ;
ALTER TABLE Зак ADD CONSTRAINT Зак_PK PRIMARY KEY ( Кодзак ) ;
CREATE TABLE Кл
(
Кодпут NUMBER NOT NULL ,
Фамилия CHAR (25 CHAR) ,
Имя CHAR (25 CHAR) ,
Отчество CHAR (25 CHAR) ,
Тип_док CHAR (25 CHAR) ,
Ном_док NUMBER ,
Др DATE ,
Эл_адр CHAR (25 CHAR) ,
Тел NUMBER
) ;
ALTER TABLE Кл ADD CONSTRAINT Кл_PK PRIMARY KEY ( Кодпут ) ;
CREATE TABLE Пер
( Код_пер CHAR (25 CHAR) NOT NULL , Назв CHAR (25 CHAR)
) ;
ALTER TABLE Пер ADD CONSTRAINT Пер_PK PRIMARY KEY ( Код_пер ) ;
CREATE TABLE Рей
(
Ид NUMBER NOT NULL ,
Код_пер CHAR (25 CHAR) NOT NULL ,
Рейс NUMBER ,
Н_рейс CHAR (25 CHAR) NOT NULL ,
Т_выл DATE ,
Т_прил DATE ,
А_выл NUMBER NOT NULL ,
А_прил NUMBER NOT NULL
) ;
ALTER TABLE Рей ADD CONSTRAINT Рей_PK PRIMARY KEY ( Ид ) ;
ALTER TABLE Аэр ADD CONSTRAINT Аэр_Гор_FK FOREIGN KEY ( Гор ) REFERENCES Гор ( Кодгор ) ;
ALTER TABLE Зак ADD CONSTRAINT Зак_Гор_FK FOREIGN KEY ( Г_выл ) REFERENCES Гор ( Кодгор ) ;
ALTER TABLE Зак ADD CONSTRAINT Зак_Гор_FKv1 FOREIGN KEY ( Г_прил ) REFERENCES Гор ( Кодгор ) ;
ALTER TABLE Зак ADD CONSTRAINT Зак_Кл_FK FOREIGN KEY ( Клиент ) REFERENCES Кл ( Кодпут ) ;
ALTER TABLE Рей ADD CONSTRAINT Рей_Аэр_FK FOREIGN KEY ( А_выл ) REFERENCES Аэр ( Ид ) ;
ALTER TABLE Рей ADD CONSTRAINT Рей_Аэр_FKv1 FOREIGN KEY ( А_прил ) REFERENCES Аэр ( Ид ) ;
ALTER TABLE Рей ADD CONSTRAINT Рей_Пер_FK FOREIGN KEY ( Код_пер ) REFERENCES Пер ( Код_пер ) ;
CREATE SEQUENCE Аэр_Ид_SEQ START WITH 1 MINVALUE 1 MAXVALUE 1000 NOCACHE ORDER ;
CREATE OR REPLACE TRIGGER Аэр_Ид_TRG BEFORE
INSERT ON Аэр FOR EACH ROW WHEN (NEW.Ид IS NULL) BEGIN :NEW.Ид := Аэр_Ид_SEQ.NEXTVAL;
END;
/
CREATE SEQUENCE Гор_Кодгор_SEQ START WITH 1 MINVALUE 1 MAXVALUE 1000 NOCACHE ORDER ;
CREATE OR REPLACE TRIGGER Гор_Кодгор_TRG BEFORE
INSERT ON Гор FOR EACH ROW WHEN (NEW.Кодгор IS NULL) BEGIN :NEW.Кодгор := Гор_Кодгор_SEQ.NEXTVAL;
END;
/
CREATE SEQUENCE Зак_Кодзак_SEQ START WITH 1 MINVALUE 1 MAXVALUE 1000 NOCACHE ORDER ;
CREATE OR REPLACE TRIGGER Зак_Кодзак_TRG BEFORE
INSERT ON Зак FOR EACH ROW WHEN (NEW.Кодзак IS NULL) BEGIN :NEW.Кодзак := Зак_Кодзак_SEQ.NEXTVAL;
END;
/
CREATE SEQUENCE Кл_Кодпут_SEQ START WITH 1 MINVALUE 1 MAXVALUE 1000 NOCACHE ORDER ;
CREATE OR REPLACE TRIGGER Кл_Кодпут_TRG BEFORE
INSERT ON Кл FOR EACH ROW WHEN (NEW.Кодпут IS NULL) BEGIN :NEW.Кодпут := Кл_Кодпут_SEQ.NEXTVAL;
END;
/
CREATE SEQUENCE Рей_Ид_SEQ START WITH 1 MINVALUE 1 MAXVALUE 1000 NOCACHE ORDER ;
CREATE OR REPLACE TRIGGER Рей_Ид_TRG BEFORE
INSERT ON Рей FOR EACH ROW WHEN (NEW.Ид IS NULL) BEGIN :NEW.Ид := Рей_Ид_SEQ.NEXTVAL;
END;
/
CREATE SEQUENCE Рей_Рейс_SEQ START WITH 1000 MINVALUE 1000 MAXVALUE 9999 NOCACHE ORDER ;
CREATE OR REPLACE TRIGGER Рей_Рейс_TRG BEFORE
INSERT ON Рей FOR EACH ROW WHEN (NEW.Рейс IS NULL) BEGIN :NEW.Рейс := Рей_Рейс_SEQ.NEXTVAL;
END;
/
