Проект БД по ресторанам МТ 301
База Ресторанов: - Рестораны - Наборы кухонь - Наборы скидок - Другое - Кухни - Блюда - Способы оплаты - Корпоративы
DISH CUISINE CUIS_ID CUIS_NAME Европейска 1 я 2 Русская 3 Японская ALL_CUIS_ID DISH_NAME 100 Мясной бульон 101 Осетрина с винным соусом 102 Пельмени с грибами 103 Русский борщ 104 Манная каша 105 Роллы Филадельфия классическая 106 Роллы Филадельфия с икрой 107 Суши с креветкой ALL_CUISINE SECOND_CUIS FIRST_CUIS 200 201 1 3 THIRD_CUIS 2 null ALL_SALES SECOND_SALES ALL_SALES_ID FIRST_SALES При заказе от 3000 руб. 300 бутылка Вина в подарок null При заказе от 3000 руб. 301 Кофе до 12: 00 бесплатно бутылка Вина в подарок DISH_MONEY DISH_CUIS 300 1 500 1 150 1 100 2 50 2 250 3 300 3 100 3 FOURTH_CUIS 3 null THIRD_SALES FOURTH_SALES null
ALL_OTHERS_ID FIRST_OTHERS 400 Караоке 401 Кальян SECOND_OTHERS Детский клуб Нарды PAY_ID PAY_MONEY PAY_KARD PAY_CHECK 500 1 1 1 501 1 1 0 RES_ID RES_NAME 1000 Космос 1001 Васаби RES_OTHER null THIRD_OTHERS FOURTH_OTHERS Шоу-программа null PARTY_ID PARTY_NAME PARTY_MONEY PARTY_PAY 600 Банкет 10000 501 601 Свадьба 13000 500 602 Фуршет 15000 501 RESTAURANTS RES_AD RES_SITE RES_PHONE RES_OWNER RES_CUIS RES_SALE Белинского 22 null 2124422 Иванов П. И. 200 301 Малышева 13 vasabi. ru 3765090 Кузьмин Р. О. 201 300 RES_PAY RES_HOME 400 501 RES_WIFI 1 1 RES_MUSIC 1 0 RES_PARTY 0 1 RES_SUPPER 1 0 550 700
Пользователи Конечный пользователь — customer Права: делать выборку по всем таблицам use restaurants create login customer with password = 'qwer' /*Создаём имя входа для покупателя*/ create user customer for login customer /*Создаём пользователя "покупатель"*/ grant select on ALL_CUISINE to customer grant select on ALL_OTHERS to customer grant select on ALL_SALES to customer grant select on CUISINE to customer grant select on DISH to customer grant select on PARTY to customer grant select on PAY to customer grant select on RESTAURANTS to customer
Пользователи Разработчик — redactor Права: добавлять, удалять или изменять данные во всех пользовательских таблицах. use restaurants create login redactor with password = 'qwerty' /*Создаём имя входа для редактора*/ create user redactor for login redactor /*Создаём пользователя "редактор"*/ grant insert, delete, alter on ALL_CUISINE to redactor grant insert, delete, alter on ALL_OTHERS to redactor grant insert, delete, alter on ALL_SALES to redactor grant insert, delete, alter on CUISINE to redactor grant insert, delete, alter on DISH to redactor grant insert, delete, alter on PARTY to redactor grant insert, delete, alter on PAY to redactor grant insert, delete, alter on RESTAURANTS to redactor
Пользователи Суперпользователь — S_user Права: контроль над БД use restaurants create login S_user with password = 'qwerty 123' /*Создаём имя входа для суперпользователя*/ create user S_user for login almighty /*Создаём пользователя "суперпользователь"*/ grant control on ALL_CUISINE to S_user grant control on ALL_OTHERS to S_user grant control on ALL_SALES to S_user grant control on CUISINE to S_user grant control on DISH to S_user grant control on PARTY to S_user grant control on PAY to S_user grant control on RESTAURANTS to S_user
Триггеры use restaurants CREATE TRIGGER Filter. Pay. Data ON PAY AFTER INSERT, UPDATE AS IF EXISTS (SELECT * FROM PAY WHERE (PAY. PAY_MONEY > 1) or (PAY. PAY_MONEY < 0) or (PAY. KARD > 1) or (PAY. PAY_KARD < 0) or (PAY. PAY_CHECK > 1) or (PAY. PAY_CHECK < 0) ) BEGIN RAISERROR ('Столбцы MONEY, KARD, CHECK могут принимать только значения 0 или 1. ', 16, 1); ROLLBACK TRANSACTION; RETURN END; GO
Триггеры CREATE TRIGGER Filter. Restaurants. Data ON RESTAURANTS AFTER INSERT, UPDATE AS IF EXISTS (SELECT * FROM RESTAURANTS WHERE (RESTAURANTS. RES_HOME > 1) or (RESTAURANTS. RES_HOME < 0) or (RESTAURANTS. RES_WIFI > 1) or (RESTAURANTS. RES_WIFI < 0) or (RESTAURANTS. RES_MUSIC > 1) or (RESTAURANTS. RES_MUSIC < 0) or (RESTAURANTS. RES_PARTY > 1) or (RESTAURANTS. RES_PARTY < 0) ) BEGIN RAISERROR ('Столбцы RES_HOME, RES_WIFI, RES_MUSIC, RES_PARTY могут принимать только значения 0 или 1. ', 16, 1); ROLLBACK TRANSACTION; RETURN END; GO
Триггеры CREATE TRIGGER Filter. All. Cuisine. Data ON ALL_CUISINE AFTER INSERT, UPDATE AS IF EXISTS (SELECT* FROM ALL_CUISINE WHERE (ALL_CUISINE. FIRST_CUIS = ALL_CUISINE. SECOND_CUIS) or (ALL_CUISINE. FIRST_CUIS = ALL_CUISINE. THIRD_CUIS) or (ALL_CUISINE. FIRST_CUIS = ALL_CUISINE. FOURTH_CUIS) or (ALL_CUISINE. SECOND_CUIS = ALL_CUISINE. THIRD_CUIS) or (ALL_CUISINE. SECOND_CUIS = ALL_CUISINE. FOURTH_CUIS) or (ALL_CUISINE. THIRD_CUIS = ALL_CUISINE. FOURTH_CUIS) ) BEGIN RAISERROR ('Произошло повторение кухонь для одного ресторана. ', 16, 1); ROLLBACK TRANSACTION; RETURN END; GO
Работу выполняли: Базу проектировали и заполняли: Жильцова, Гусев; Безопасность: Семёнова, Леонова, Березин; Триггеры: Ушенин.