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

Запросы

Для демонстрации основных возможностей работы с базой данных были составлены запросы:

1. Найти в базе данных все заказы со скидкой, сделанные 4 мая 2008 года, и вывести на экран их номера.

Результат:

  1. Найти все свободные столики в некурящей зоне.

Результат:

  1. Вывести количество заказов, сделанных 5 мая 2008 года.

Результат:

4. Вывести меню ресторана. Блюда отсортированы по виду и внутри групп - по номеру.

Результат:

5. Выбрать из меню алкогольные напитки, кроме пива. Вина вывести отдельно. Напитки выводить, начиная с самых дорогих.

\

6. Найти в меню блюда дешевле 100 рублей и вывести, начиная с самых дешевых.

Результат:

7. Выбрать из меню фирменные блюда ресторана. Отсортировать по виду.

Результат:

8. Найти в меню самое дорогое горячее блюдо.

Результат:

9. Подсчитать среднюю цену каждого вида блюда.

Результат:

10. Вывести личные данные официантки, обслуживающей 12 столик.

Результат:

11. Вывести номер столика, за которым закреплен 12 заказ, тип столика, курящая зона либо нет, был ли зарезервирован столик, есть ли скидка на заказ.

Результат:

12. Вывести заказ №12, а именно: номер блюда, название, цену, количество.

Результат:

Хранимые процедуры и функции.

Для базы данных было написано 5 процедур.

  1. Процедура add_dish.

Create procedure add_dish(

In n varchar(100),

in d text,

in p int unsigned,

in k varchar(20))

insert into dishes values(null, n, d, p, k);

Добавляет новое блюдо в таблицу «dishes»:

Рис. 2. Блок-схема процедуры add_dish;

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

……………………………………………………………….

  1. Процедура add_order.

Create procedure add_order(

In d date,

in i int unsigned,

in r varchar(10),

in dis varchar(10))

insert into orders values(null, d, i, r, dis);

Добавляет новый заказ в таблицу «orders».

Рис. 3. Блок-схема процедуры add_order;

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

  1. Процедура del_order.

Удаляет заказ под номером ID_o из таблицы «orders».

Create procedure del_order(

In ID_o int unsigned)

delete from orders where ID_order=ID_o;

Рис. 4. Блок-схема процедуры del_order;

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

  1. Процедура add_order_dishes;

Добавляет блюдо ID_d к заказу ID_o в количестве q штук.

Create procedure add_order_dishes(

In ID_o int unsigned,

in ID_d int unsigned,

in q int unsigned)

insert into order_dishes values(ID_o, ID_d, q);

Рис. 5. Блок-схема процедурыadd_order_dishes;

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

  1. Процедура del_order_dishes.

Удаляет из заказа под номером ID_o блюдо под номером ID_d.

Create procedure del_order_dishes(

In ID_o int unsigned,

in ID_d int unsigned)

delete from order_dishes where ID_order=ID_o and ID_dish=ID_d;

Рис. 6. Блок-схема процедуры del_order_dishes.

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

Функция sum_order.

Функция подсчитывает сумму заказа, с учетом резервирования столика различного типа (обычный – 200 руб., vip – 350 руб.) и скидки 10% , если такая имеется.

drop function if exists sum_order;

delimiter |

create function sum_order (id int unsigned)

returns real

begin

DECLARE bill real;

DECLARE res int;

DECLARE summa int;

DECLARE dis real;

DECLARE r varchar(10);

DECLARE t varchar(10);

DECLARE d varchar(10);

set res=0;

set dis=0.0;

set r=( select reserve from orders where ID_order=id);

set t=( select tables.type from tables, orders where orders.ID_table=tables.ID_table and orders.ID_order=id);

set d=( select discount from orders where ID_order=id);

set summa=( select sum( dishes.price * order_dishes.quantity) from dishes, order_dishes where order_dishes.ID_order=id and order_dishes.ID_dish=dishes.ID_dish);

if r="yes" and t="ord" then set res=200;

elseif r="yes" and t="vip" then set res=350;

end if;

if d="yes" then set dis = summa * 0.1;

end if;

set bill = summa + res - dis;

return bill;

end;

delimiter|

Рис. 9. Блок-схема функции sum_order.

Пример выполнения: подсчет суммы заказа №5.