

и ON UPDATE позволяют задать поведение СУБД при удалении и обновлении строк из таблицы-предка.
Получаем, что в таблице books устанавливается связь с таблицей catalogs (за счёт FOREIGN KEY (b_cat_ID) REFERENCES catalogs(cat_ID)). В таблице orders устанавливается связь с таблицами users (за счет FOREIGN KEY (o_user_ID) REFERENCES users(user_ID)) и books (за счет FOREIGN KEY (o_book_ID) REFERENCES books(book_ID)).
Далее проверим созданную БД и существование таблиц.
Рисунок 8 – Проверка БД book и существования созданных таблиц.
Видим, что таблицы были созданы в соответствующей базе данных
book.
Ниже представлен листинг процесса выполнения лабораторной работы
№2.
21

Листинг 1. Процесс выполнения задания.
Enter password: ****
Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 5
Server version: 5.0.51b-community-nt MySQL Community Edition (GPL)
Type 'help;' or '\h' for help. Type '\c' to clear the buffer.
mysql> SHOW DATABASES;
+ |
-------------------- |
+ |
| Database |
| |
|
+-------------------- |
|
+ |
| information_schema | |
||
| mysql |
| |
|
| test |
| |
|
+-------------------- |
|
+ |
3 |
rows in set (0.00 sec) |
mysql> CREATE DATABASE book;
Query OK, 1 row affected (0.00 sec) mysql> SHOW DATABASES;
+-------------------- |
+ |
| Database |
| |
+-------------------- |
+ |
| information_schema |
| book |
| |
| mysql |
| |
| test |
| |
+-------------------- |
+ |
4 rows in set (0.29 sec)
mysql> USE book; Database changed
mysql> CREATE TABLE catalogs (
-> cat_ID int(6) NOT NULL AUTO_INCREMENT, -> cat_name varchar(20) NOT NULL,
-> PRIMARY KEY (cat_ID) -> ) TYPE=InnoDB;
Query OK, 0 rows affected, 1 warning (0.20 sec)
mysql> |
CREATE TABLE books ( |
-> |
book_ID int(6) NOT NULL AUTO_INCREMENT, |
-> |
b_name varchar(100) NOT NULL, |
-> |
b_author varchar(100) NOT NULL, |
-> |
b_publisher varchar(100) NOT NULL, |
-> |
b_year year NOT NULL, |
-> |
b_price decimal(7,2) NULL default '0.00', |
-> b_count int(6) NULL default '0',
22

-> |
b_cat_ID int(6) NOT NULL default '0', |
|
||
-> |
PRIMARY KEY |
(book_ID), |
|
|
-> |
FOREIGN KEY (b_cat_ID) REFERENCES catalogs(cat_ID) ON DELETE |
|||
-> |
CASCADE ON UPDATE CASCADE |
|
||
-> |
) TYPE=InnoDB; |
|
|
|
Query OK, 0 rows affected, 1 warning (0.21 sec) |
|
|||
mysql> CREATE TABLE users ( |
|
|
||
-> user_ID int(6) NOT NULL AUTO_INCREMENT, |
|
|||
-> u_name varchar(20) NOT NULL, |
|
|||
-> u_patronymic varchar(20) NOT NULL, |
|
|||
-> u_surname varchar(20) NOT NULL, |
|
|||
-> u_phone varchar(12) NULL, |
|
|||
-> u_card varchar(20) NULL, |
|
|||
-> u_email varchar(20) NULL, |
|
|||
-> |
u_status |
ENUM |
('active','passive','lock','gold') |
default |
'passive', |
|
|
|
|
-> |
PRIMARY KEY |
(user_ID) |
|
|
-> |
) TYPE=InnoDB; |
|
|
|
Query OK, 0 rows affected, 1 warning (0.17 sec) |
|
|||
mysql> CREATE TABLE orders ( |
|
|||
-> order_ID int(6) NOT NULL AUTO_INCREMENT, |
|
|||
-> o_user_ID int NOT NULL, |
|
|||
-> o_book_ID int NOT NULL, |
|
|||
-> o_time datetime NOT NULL default '0000-00-00 00:00:00', |
|
|||
-> o_number int(6) NOT NULL default '0', |
|
|||
-> PRIMARY KEY |
(order_ID), |
|
||
-> FOREIGN KEY (o_book_ID) REFERENCES books(book_ID) ON DELETE |
||||
-> CASCADE ON UPDATE CASCADE, |
|
|||
-> FOREIGN KEY (o_user_ID) REFERENCES users(user_ID) ON DELETE |
||||
CASCADE ON UP |
|
|
|
|
DATE CASCADE |
|
|
|
|
-> ) TYPE=InnoDB; |
|
|
||
Query OK, 0 rows affected, 1 warning (0.20 sec) |
|
|||
mysql> SHOW DATABASES; |
|
|
||
+--------------------+ |
|
|
||
| Database |
| |
|
|
|
+--------------------+ |
|
|
||
| information_schema | |
|
|
||
| book |
|
| |
|
|
| mysql |
| |
|
|
|
| test |
|
| |
|
|
+-------------------- |
|
+ |
|
|
4 rows in set (0.00 sec)
mysql> USE book; Database changed mysql> SHOW TABLES;
23

+---------------- |
+ |
| Tables_in_book | |
|
+---------------- |
+ |
| books |
| |
| catalogs |
| |
| orders |
| |
| users |
| |
+---------------- |
+ |
4 rows in set (0.00 sec)
5Выводы
Входе лабораторной работы была создана новая база данных “book” в MySQL 5.0.51b. Была проведена работа по созданию таблиц catalogs, books, users и orders, с соответствующими полями, типами и индексами. Были определены связи между таблицами и ограничения целостности. Также была произведена проверка созданной базы данных и соответствующих ей таблиц.
24