Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курсовик «разработка Базы Данных Для Ресторана» По Базам Данных (Марков А. А.).doc
Скачиваний:
63
Добавлен:
07.10.2014
Размер:
666.11 Кб
Скачать

Триггеры

Для базы данных были разработаны 2 триггера.

1. Триггер after_del.

create trigger after_del

after delete on orders

for each row

delete from order_dishes where ID_order=old.ID_order;

Триггер срабатывает при удалении записи из таблицы «orders» и удаляет все записи под этим номером заказа из таблицы «order_dishes».

удаление записей из таблицы «order_dishes»

Рис. 7. Блок-схема триггера after_del.

Пример выполнения:

2. Триггер busy.

Триггер срабатывает после добавления нового заказа в таблицу «orders» и устанавливает значение атрибута busy=«yes» (столик занят) в таблице «tables».

create trigger busy

after insert on orders

for each row

update tables set tables.busy='yes' where tables.ID_table=new.ID_table;

Рис. 8. Блок-схема триггера busy.

Пример выполнения:

Литература

1. MySQL. Полное и исчерпывающее руководство по применению и администрированию баз данных, а также программированию приложений. Второе издание. П. Дюбуа, Москва — Санкт-Петербург — Киев, 2004

2. Практическое введение в базы данных, часть 1-3, А. А. Марков; Москва – 2004

3. Базы и банки данных. Методические указания по выполнению курсовой работы. Лазутченко О. В., МГУП, 2007.

4. MySQL. Учебное пособие. Л. Веллинг, Л. Томсон; Москва — Санкт-Петербург — Киев, 2004

5. Системы баз данных. Г. Гарсиа-Молина, Дж. Д. Ульман, Д. Уидом; Москва — Санкт-Петербург — Киев, 2003.

Приложение №1. ER – Модель базы данных

Приложение №2. Исходный код создания таблиц

create database restourant;

use restourant;

drop table if exists dishes;

create table dishes

( ID_dish int unsigned not null auto_increment primary key,

name varchar(100) not null,

descr text,

price int unsigned not null,

kind varchar(20) not null);

drop table if exists firm;

create table firm

( ID_firm int unsigned not null primary key);

drop table if exists orders;

create table orders

( ID_order int unsigned not null auto_increment primary key,

date date not null,

ID_table int unsigned not null,

reserve varchar(10) not null,

discount varchar(10) not null);

drop table if exists order_dishes;

create table order_dishes

( ID_order int unsigned not null,

ID_dish int unsigned not null,

primary key (ID_order, ID_dish),

quantity int unsigned not null);

drop table if exists tables;

create table tables

( ID_table int unsigned not null auto_increment primary key,

type varchar(10) not null,

smoking varchar(20) not null,

busy varchar(10) not null);

drop table if exists waiters;

create table waiters

( ID_waiter int unsigned not null auto_increment primary key,

name varchar(50) not null,

surname varchar(50) not null,

address varchar(100) not null,

tel varchar(50));

drop table if exists waiter_tables;

create table waiter_tables

(ID_waiter int unsigned not null,

ID_table int unsigned not null,

primary key (ID_waiter, ID_table));

Приложение №3. Исходный код занесения данных

load data local infile 'D:/xampp/mysql/bin/dishes.txt' into table dishes;

load data local infile 'D:/xampp/mysql/bin/orders.txt' into table orders;

load data local infile 'D:/xampp/mysql/bin/orders_dishes.txt' into table order_dishes;

load data local infile 'D:/xampp/mysql/bin/tables.txt' into table tables;

load data local infile 'D:/xampp/mysql/bin/waiters.txt' into table waiters;

load data local infile 'D:/xampp/mysql/bin/waiter_tables.txt' into table waiter_tables;

load data local infile 'D:/xampp/mysql/bin/firm.txt' into table firm;