4 Выполнение лабораторной работы
После установки MySQL 8.0.41 проверяем существующие базы данных
Рисунок 1 – Просмотр существующих баз данных
Далее создаём новую базу данных сargo_transportation и проверяем то, что оператор выполнил задачу.
Рисунок 2 – Создание новой БД
Теперь имеется пустая БД, ожидающая создания таблиц. Прежде чем работать с БД, выбираем эту БД с помощью оператора USE сargo_transportation; Теперь все действия по умолчанию будут применяться именно к этой БД. Далее, используя оператор CREATE TABLE создаем таблицы. Создаём таблицы БД по полученной модели данных в Лабораторной работе №1 (представлена на рисунке 3).
Рисунок 3 – Физическая модель базы данных
При создании таблиц учитываем все имена столбцов, их типы и индексы, описанные ранее в Лабораторной работе №1. Также обеспечиваем ссылочную целостность с помощью конструкции FOREIGN KEY [name_key] (col1, ... ) REFERENCES tbl (tbl_col, ... ), которая позволяет задать внешний ключ и указать соответствующую таблицу на которую ссылается внешний ключ. Необязательные конструкции ON DELETE и ON UPDATE позволяют задать поведение СУБД при удалении и обновлении строк из таблицы-предка.
Получаем, что в таблице payment устанавливается связь с таблицами transportation и drivers (за счёт FOREIGN KEY (p_trans_id) REFERENCES TRANSPORTATIONS(trans_id) и FOREIGN KEY (p_driver_id) REFERENCES DRIVERS(driver_id)). В таблице transportation устанавливается связь с таблицей routs (за счет FOREIGN KEY (t_rout_id) REFERENCES ROUTES(rout_id)).
После создания всех таблиц проверим созданную БД и существование таблиц.
Рисунок 4 – Проверка БД сargo_transportation и существования таблиц
Листинг 1. Процесс Выполнения задания
Enter password: **** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 8.0.41 MySQL Community Server - GPL
Copyright (c) 2000, 2025, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> SHOW DATABASES; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sakila | | sys | | world | +--------------------+ 6 rows in set (0.04 sec)
mysql> CREATE DATABASE сargo_transportation; Query OK, 1 row affected (0.01 sec)
mysql> SHOW DATABASES; +-----------------------+ | Database | +-----------------------+ | information_schema | | mysql | | performance_schema | | sakila | | sys | | world | | сargo_transportation | +-----------------------+ 7 rows in set (0.00 sec)
mysql> USE сargo_transportation; Database changed
mysql> CREATE TABLE ROUTES ( -> rout_id int(6) NOT NULL AUTO_INCREMENT, -> r_name varchar(100) NOT NULL, -> r_mileage int(6) NOT NULL default '0', -> r_rate decimal(7,2) NOT NULL default '0.00', -> PRIMARY KEY (rout_id) -> ) ENGINE=InnoDB; Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> CREATE TABLE DRIVERS ( -> driver_id int(6) NOT NULL AUTO_INCREMENT, -> d_surname varchar(20) NOT NULL, -> d_name varchar(20) NOT NULL, -> d_patronymic varchar(20) NULL, -> d_experiens int(6) NOT NULL default '0', -> PRIMARY KEY (driver_id) -> ) ENGINE=InnoDB; Query OK, 0 rows affected, 2 warnings (0.02 sec)
mysql> CREATE TABLE TRANSPORTATIONS ( -> trans_id INT NOT NULL AUTO_INCREMENT, -> t_rout_id INT NOT NULL, -> t_departure DATE NOT NULL, -> t_arrival DATE NOT NULL, -> PRIMARY KEY (trans_id), -> FOREIGN KEY (t_rout_id) REFERENCES ROUTES(rout_id) ON DELETE CASCADE ON UPDATE CASCADE -> ) ENGINE=InnoDB; Query OK, 0 rows affected (0.02 sec)
mysql> CREATE TABLE PAYMENT ( -> pay_id INT NOT NULL AUTO_INCREMENT, -> p_trans_id INT NOT NULL, -> p_driver_id INT NOT NULL, -> p_bonus DECIMAL(7,2) NOT NULL DEFAULT 0.00, -> PRIMARY KEY (pay_id), -> FOREIGN KEY (p_trans_id) REFERENCES TRANSPORTATIONS(trans_id) ON DELETE CASCADE ON UPDATE CASCADE, -> FOREIGN KEY (p_driver_id) REFERENCES DRIVERS(driver_id) ON DELETE CASCADE ON UPDATE CASCADE -> ) ENGINE=InnoDB; Query OK, 0 rows affected (0.03 sec)
mysql> SHOW DATABASES; +-----------------------+ | Database | +-----------------------+ | information_schema | | mysql | | performance_schema | | sakila | | sys | | world | | сargo_transportation | +-----------------------+ 7 rows in set (0.00 sec)
mysql> USE сargo_transportation; Database changed
mysql> SHOW TABLES; +---------------------------------+ | Tables_in_сargo_transportation | +---------------------------------+ | drivers | | payment | | routes | | transportations | +---------------------------------+ 4 rows in set (0.00 sec) |
