10. Написать командный файл (*.bat) для определения параметров соединения и запуска mysql.exe. Запустить mysql.exe при помощи созданного командного файла.
11. Написать сценарий (набор SQL-команд) для создания базы данных «Предприятие». Концептуальное описание БД «Предприятие»:
База данных «Предприятие» содержит информацию о работе некоторого промышленного предприятия, которое осуществляет сборку изделий (проектов) из деталей. В базе данных присутствуют следующие сущности: Детали, Проекты, Поставщики, Поставки, Города. Таблица «Детали» содержит описания деталей. Поля: Номер_детали[1], Наименование, Материал, Вес. Таблица «Поставщики» содержит описания организаций, поставляющих детали. Поля: Номер_поставщика, Наименование, Номер_города. Таблица «Проекты» содержит описание проектов (сборочных изделий). Поля: Номер_проекта, Наименование, Номер_города. Таблица «Города» содержит описание городов, в которых могут находиться проекты и поставщики. Поля: Номер_города, Наименование. Каждый проект содержит некоторое количество различных деталей, поставляемых различными поставщиками в определенном количестве. Проект рассматривается как совокупность поставок. Таблица «Поставки» содержит записи о типе, количестве деталей и цене одной детали, поставляемых определенным поставщиком для определенного проекта. Поля: Номер_проекта, Номер_поставщика, Номер_детали, Количество, Цена, Дата_начала, Дата_конца.
В сценарии необходимо определить первичные и внешние ключи в таблицах. Для генерации значений первичных ключей использовать спецификатор AUTO_INCREMENT. Задать для первичных ключей требование обязательности данных NOT NULL. Задать для полей ВЕС, КОЛИЧЕСТВО и ЦЕНА беззнаковый целочисленный тип.
1. Добавить в начало сценария команды очистки базы данных. Внести в сценарий операторы заполнения таблиц тестовыми данными (не менее 5-и строк в каждой таблице). Запустить сценарий в пакетном режиме. При необходимости произвести отладку (устранение ошибок).
2. Проверить работу ограничений целостности CHECK и ограничений целостности внешних ключей путем добавления в таблицы некорректных данных.
use 1201_oav;
CREATE TABLE ДЕТАЛИ
(НОМЕР_ДЕТАЛИ INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
НАИМЕНОВАНИЕ VARCHAR(80),
МАТЕРИАЛ VARCHAR(80),
ВЕС INTEGER NOT NULL CHECK (ВЕС>0));
CREATE TABLE ГОРОДА
(НОМЕР_ГОРОДА INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
НАИМЕНОВАНИЕ VARCHAR(80));
CREATE TABLE ПОСТАВЩИКИ
(НОМЕР_ПОСТАВЩИКА INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
НАИМЕНОВАНИЕ VARCHAR(80),
НОМЕР_ГОРОДА INTEGER UNSIGNED,
FOREIGN KEY (НОМЕР_ГОРОДА) REFERENCES ГОРОДА (НОМЕР_ГОРОДА));
CREATE TABLE ПРОЕКТЫ
(НОМЕР_ПРОЕКТА INTEGER UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT,
НАИМЕНОВАНИЕ VARCHAR(80),
НОМЕР_ГОРОДА INTEGER UNSIGNED,
FOREIGN KEY (НОМЕР_ГОРОДА) REFERENCES ГОРОДА (НОМЕР_ГОРОДА));
CREATE TABLE ПОСТАВКИ
(НОМЕР_ПРОЕКТА integer unsigned not null,
НОМЕР_ПОСТАВЩИКА integer unsigned not null,
НОМЕР_ДЕТАЛИ integer unsigned not null,
КОЛИЧЕСТВО INTEGER NOT NULL CHECK (КОЛИЧЕСТВО >0),
Добавить в начало сценария команды очистки базы данных. Внести в сценарий операторы заполнения таблиц тестовыми данными (не менее 5-и строк в каждой таблице). Запустить сценарий в пакетном режиме. При необходимости произвести отладку (устранение ошибок).
INSERT INTO ДЕТАЛИ VALUES (1, 'РУЧКА', 'ЖЕЛЕЗО', 100);
INSERT INTO ДЕТАЛИ VALUES (2, 'ПАЛКА', 'ДЕРЕВО', 30);
INSERT INTO ДЕТАЛИ VALUES (3, 'БРУС', 'ДЕРЕВО', 30);
INSERT INTO ДЕТАЛИ VALUES (4, 'ТРУБА', 'СТАЛЬ', 400);
INSERT INTO ДЕТАЛИ VALUES (5, 'РУЧКА', 'СТАЛЬ', 150);
SELECT*FROM ДЕТАЛИ;
INSERT INTO ГОРОДА VALUES (1, 'СУРГУТ');
INSERT INTO ГОРОДА VALUES (2, 'ОРЕЛ');
INSERT INTO ГОРОДА VALUES (3, 'МОСКВА');
INSERT INTO ГОРОДА VALUES (4, 'ПИТЕР');
INSERT INTO ГОРОДА VALUES (5, 'МОСКВА');
SELECT*FROM ГОРОДА;
INSERT INTO ПРОЕКТЫ VALUES (1, ' ПРОЕКТ_1', '1');
INSERT INTO ПРОЕКТЫ VALUES (2, ' ПРОЕКТ_2', '2');
INSERT INTO ПРОЕКТЫ VALUES (3, ' ПРОЕКТ_3', '3');
INSERT INTO ПРОЕКТЫ VALUES (4, ' ПРОЕКТ_4', '4');
INSERT INTO ПРОЕКТЫ VALUES (5, ' ПРОЕКТ_5', '5');
SELECT*FROM ПРОЕКТЫ;
INSERT INTO ПОСТАВЩИКИ VALUES (1, 'ПОСТАВЩИК_1', '1');
INSERT INTO ПОСТАВЩИКИ VALUES (2, 'ПОСТАВЩИК_2', '2');
INSERT INTO ПОСТАВЩИКИ VALUES (3, 'ПОСТАВЩИК_3', '3');
INSERT INTO ПОСТАВЩИКИ VALUES (4, 'ПОСТАВЩИК_4', '4');
INSERT INTO ПОСТАВЩИКИ VALUES (5, 'ПОСТАВЩИК_5', '5');