Задания на лабораторную работу

(I)

Создать базу данных с произвольным именем.

Учесть тот факт, что все БД хранятся на одном сервере и, следовательно, их имена не должны повторяться.

В целях корректной работы и выполнения полного объема заданий всех лабораторных работ не изменяйте содержимое других БД.

(II)

Создать и заполнить таблицы ИЗДЕЛИЕ, ЗАКАЗ, ПОСТАВКА.

ИЗДЕЛИЕ (Код_ модели, Наименование, Тех_характеристики, Цена)

ЗАКАЗ (Номер_заказа, Заказчик, Адрес(город), Дата_заказа)

ПОСТАВКА (Код_модели, Номер_заказа, Количество),

Типы и свойства полей

ИЗДЕЛИЕ

Код_модели – int, Primary Key;

Наименование – char(50);

Тех_характеристики – char(30);

Цена – money, Check: Цена < 10000.

ЗАКАЗ

Номер_заказа – int, Primary Key;

Заказчик – char(20);

Адрес(город) - char(15);

Дата_заказа – datetime.

ПОСТАВКА

Код_модели – int, Primary Key, Foreign Key;

Номер_заказа – int, Primary Key, Foreign Key;

Количество – int, Check: Количество > 2.

 

Шаблон заполнение таблиц

ИЗДЕЛИЕ

Код_модели Наименование Тех_характеристика Цена
Эл. двигатель 220 V
Труба 300 мм
Печь электрическая 220 V
Телефон многоканальный 10 каналов

 

ЗАКАЗ

Номер_заказа Заказчик Адрес(город) Дата_заказа
ЖЭУ 177 Харьков 12/05/03
СМУ 1 Киев 05/10/04
ОАО «Турбоатом» Харьков 26/03/03
НПО «Укртрасгаз» Харьков 23/07/04
ООО «РОС» Кривой рог 06/04/02
СМУ 1 Киев 12/05/05

 

ПОСТАВКА

Код_модели Номер_заказа Количество

 

(III)

 

Создать диаграмму данных по схеме связей между таблицами

ИЗДЕЛИЕ - ПОСТАВКА (1:M)

ЗАКАЗ - ПОСТАВКА (1:M).

 

(IV)

 

Для таблиц ИЗДЕЛИЕ, ЗАКАЗ, ПОСТАВКА реализовать запросы на выборку, используя SQL:

- Получить список изделий, поставляемых в Киев или Кривой рог (поля: код модели, заказчик, город);

- Получить значения общего количества заказанных изделий каждой модели, если это количество превышает 20 (поля: наименование, количество);

- Получить список суммарной стоимости каждого заказа (поля: наименование, сумма заказа (вычисляемое поле));

- Получить список заказчиков, не заказавших заданного изделия (код модели задается как константа). Причем эта модель должна существовать среди заказанных изделий в таблице ПОСТАВКА) (поля: номер заказа, заказчик).

 

(V)

Создать представление.

Представление должно содержать сведения о поставках изделий по каждому из заказов с расшифровкой наименования заказчика,наименования изделия и указанием стоимости всей поставки (Цена * Количество).

 

(VI)

1) Создать триггер запрещающий удалять информацию о поставках изделий “Эл. двигатель” и “Многоканальный телефон”.

2) Создать триггер, который запрещает производить заказы во втором полугодии текущего года. Если вводится любая дата второго полугодия текущего года, то поменять ее на 30/06/<текущий год>.

Примечание. Для определения текущей даты можно использовать функцию GetDate (), использующуюся без параметров и возвращающую полную ткущую дату и время. Для определения текущий года эту функцию можно использовать как параметр для функции DatePart (), например DatePart (month, GetDate ()). Для преобразования типов данных можно использовать функцию CONVERT(новый тип данных, переменная). Например, CONVERT(char,DatePart (month, GetDate ())).

 

3) Создать триггер запрещающий изменять количество поставок, если новая стоимость не превышает 5000.

4) Создать триггер, который при изменении Цены контролирует, чтобы разница между новой и старой суммой поставок не превышал 300, в противном случае действие отменяется.

Примечание. Для проверки правильности работы триггера необходимо после удаления строки в режиме просмотра содержимого таблицы (Open Table ® Return all rows) выполнить команду Run, нажав кнопку . Если удаленная строка содержащая “запрещенную” для удаления информацию осталась в таблице – триггер работает правильно.