
- •Разработка баз данных средствами MySql
- •Содержание
- •Введение
- •1. Основы работы в субд MySql
- •Системы управления базами данных
- •Основные характеристики MySql
- •Команда create database
- •Работа с таблицами
- •Синтаксис команды create table
- •Удаление таблиц
- •Синтаксис команды drop table
- •Типы данных
- •Числовые данные
- •Строковые данные
- •Календарные данные
- •Тип данных null
- •Выбор типа данных
- •1 Вариант.
- •2 Вариант.
- •3 Вариант.
- •2. Работа с таблицами. Ввод, извлечение, поиск и удаление данных Запись данных в таблицы
- •Заполните таблицу employee_data 5-10 записями. Запрос данных из таблицы MySql
- •Выборка данных с помощью условий
- •Операторы больше и меньше
- •Поиск текстовых данных по шаблону
- •Предложение group by и having
- •Удаление записей из таблицы
- •Задание 1
- •Задание 2
- •Задание 3
- •3. Логические операции в MySql
- •Операторы in и between
- •Упорядочивание данных
- •Ограничение количества извлекаемых данных
- •Извлечение подмножеств
- •Ключевое слово distinct
- •Изменение записей
- •Задание 1
- •Задание 2
- •Задание 3
- •Вычисление среднего значения
- •Именование столбцов
- •Подсчет числа записей
- •Группировка данных
- •5. Математические функции в MySql. Строковые функции. Работа с датой Математические функции MySql
- •Строковые функции
- •Ascii(строка)
- •Concat(строка1, строка2, ...)
- •Особенности типа данных Date
- •Операции с датами
- •Определение диапазонов
- •Использование Date для сортировки данных
- •Выбор данных с помощью Date
- •Текущие даты
- •Тип столбца Null
- •Задание 1
- •Задание 2
- •Задание 3
- •6. Переменные и временные таблицы. Многотабличные запросы
- •7. Вложенные запросы в MySql
- •8. Хранимые процедуры и функции
- •9. Курсоры в MySql. Представления. Конструкции управления потоком данных
- •10. Анализ и моделирование предметной области
- •1. Выбор и текстовое описание предметной области
- •2. Разработка концептуальной er-модели предметной области
- •3. Определение функциональных требований
- •11. Проектирование базы данных
- •1. Создание логической реляционной модели базы данных
- •2. Нормализация логической реляционной модели базы данных
- •1Нф (Первая Нормальная Форма)
- •2Нф (Вторая Нормальная Форма)
- •3Нф (Третья Нормальная Форма)
- •12. Проектирование физической модели бд и ее реализация
- •1. Создание физической модели базы данных
- •2. Реализация физической модели базы данных в коде
- •13. Наполнение и тестирование бд
- •1. Наполнение базы данных
- •2. Тестирование базы данных
- •14. Создание приложения к бд в среде delphi 7, с использованием AnyDac framework 1.7.0
- •1. Начало работы
- •2. Связь с таблицами
- •3. Отображение таблицы на форме
- •4. Компонент adQuery
- •5. Экспорт данных в Excel
- •6. Работа с внешними ключами
- •Рекомендуемая литература
- •Разработка баз данных средствами MySql
- •460844, Г. Оренбург, ул. Советская, 19
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, проверьте на ошибки и внесите исправления. |