Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
all_lab.doc
Скачиваний:
56
Добавлен:
14.11.2019
Размер:
1.42 Mб
Скачать

2. Реализация физической модели базы данных в коде

Следующим нашим шагом станет разработка SQL-скрипта создаваемой нами схемы.

Современные программы, предназначенные для проектирования баз данных, позволяют автоматически создавать этот скрипт для схемы. В программе DBDesigner, например, скрипт можно получить, воспользовавшись командой меню «File > Export > SQL Create Script».

Создаваемый скрипт нужно сохранить в файл, например Aeroport.sql.

В нашем случае мы получим следующий скрипт:

CREATE TABLE Gorod (

gorod VARCHAR(255) NOT NULL,

strana VARCHAR(255) NOT NULL,

PRIMARY KEY(gorod)

)

TYPE=InnoDB;

CREATE TABLE Kompanija (

kod INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

nazvanie VARCHAR(255) NOT NULL,

PRIMARY KEY(kod)

)

TYPE=InnoDB;

CREATE TABLE Samolet (

nomer INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

kompanija_kod INTEGER UNSIGNED NOT NULL,

model VARCHAR(255) NOT NULL,

tip ENUM('P','G') NOT NULL,

vmestimost INTEGER UNSIGNED NOT NULL,

PRIMARY KEY(nomer),

FOREIGN KEY(kompanija_kod)

REFERENCES Kompanija(kod)

ON DELETE RESTRICT

ON UPDATE CASCADE

)

TYPE=InnoDB;

CREATE TABLE Aeroport (

kod CHAR(3) NOT NULL,

nazvanie VARCHAR(255) NOT NULL,

gorod VARCHAR(255) NOT NULL,

PRIMARY KEY(kod),

FOREIGN KEY(gorod)

REFERENCES Gorod(gorod)

ON DELETE RESTRICT

ON UPDATE CASCADE

)

TYPE=InnoDB;

CREATE TABLE Rejs (

nomer INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

aeroport_vyleta CHAR(3) NOT NULL,

aeroport_prileta CHAR(3) NOT NULL,

Samolet_nomer INTEGER UNSIGNED NOT NULL,

vremya_vyleta TIME NOT NULL,

vremya_prileta TIME NOT NULL,

tip ENUM('G','P') NOT NULL DEFAULT 'P',

dalnost SMALLINT UNSIGNED NOT NULL,

chastota VARCHAR(255) NOT NULL,

PRIMARY KEY(nomer),

FOREIGN KEY(samolet_nomer)

REFERENCES Samolet(nomer)

ON DELETE SET NULL

ON UPDATE CASCADE,

FOREIGN KEY(aeroport_vyleta)

REFERENCES Aeroport(kod)

ON DELETE RESTRICT

ON UPDATE CASCADE,

FOREIGN KEY(aeroport_prileta)

REFERENCES Aeroport(kod)

ON DELETE RESTRICT

ON UPDATE CASCADE

)

TYPE=InnoDB;

CREATE TABLE Polet (

nomer INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

Rejs_nomer INTEGER UNSIGNED NOT NULL,

data_vyleta DATE NULL,

sostojanie

ENUM('Planned','InTheAir','Delayed','Finished')

NOT NULL,

PRIMARY KEY(nomer),

FOREIGN KEY(Rejs_nomer)

REFERENCES Rejs(nomer)

ON DELETE RESTRICT

ON UPDATE CASCADE

)

TYPE=InnoDB;

CREATE TABLE Ekipazh (

kod INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

Rejs_nomer INTEGER UNSIGNED NOT NULL,

PRIMARY KEY(kod),

FOREIGN KEY(Rejs_nomer)

REFERENCES Rejs(nomer)

ON DELETE SET NULL

ON UPDATE CASCADE

)

TYPE=InnoDB;

CREATE TABLE Sotrudnik (

kod INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

Ekipazh_kod INTEGER UNSIGNED NOT NULL,

familija VARCHAR(255) NOT NULL,

imya VARCHAR(255) NOT NULL,

dolzhnost VARCHAR(255) NOT NULL,

stazh TINYINT UNSIGNED NOT NULL,

PRIMARY KEY(kod),

FOREIGN KEY(Ekipazh_kod)

REFERENCES Ekipazh(kod)

ON DELETE SET NULL

ON UPDATE CASCADE

)

TYPE=InnoDB;

Получив скрипт, отработаем его в СУБД.

Для этого создадим новую БД, выберем её и выполним команду вызова внешнего скрипта:

CREATE DATABASE Aeroport;

USE Aeroport;

SOURCE D:\Aeroport.sql

В случае возникновения ошибок необходимо внести исправления в код и повторно создать БД и отработать скрипт:

DROP DATABASE Aeroport;

CREATE DATABASE Aeroport;

USE Aeroport;

SOURCE D:\Aeroport.sql

Задание: Создайте SQL-скрипт своей базы данных, отработайте его в СУБД MySQL, проверьте на ошибки и внесите исправления.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]