![](/user_photo/2090_9Vy88.png)
Модель ansi-sparc
Модель ANSI – SPARC определяет три уровня абстракции: внешний, концептуальный и внутренний. Внешний уровень — уровень, на котором данные воспринимаются пользователями (интерфейсная часть). Внутренний уровень — уровень, на котором воспринимают данные операционная система и СУБД (данные в виде структур и таблиц сохраняются с использованием файлов). Концептуальный уровень представления данных предназначен для отображения внешнего уровня на внутренний и обеспечения независимости друг от друга.
Внешний уровень
База данных ресторана
Нормализованные таблицы ID_order date ID_table reserve discount Уникальный
идентификатор дата
Уникальный идентификатор
Резерви- рование Скидка
ID_order ID_dish quantity Уникальный
идентификатор Уникальный
идентификатор Количество
ID_dish name descr price kind Уникальный
идентификатор Название
Описание Цена вид
ID_firm Уникальный
идентификатор
ID_table type smoking busy Уникальный
идентификатор Тип Зона занятость
ID_waiter name surname address tel Уникальный
идентификатор Имя Фамилия адрес телефон
ID_waiter ID_table
Уникальный
идентификатор Уникальный
идентификатор
Концептуальный
уровень
Внутренний уровень
Реализация таблиц базы данных
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);
Физическая организация данных
Рис. 1. Модель ANSI-SPARC.
На внешнем уровне находится единый интерфейс пользователя — «База данных ресторана».
На концептуальном уровне хранятся нормализованные таблицы:
orders (ID_order, date, ID_table, reserve, discount);
order_dishes (ID_order, ID_dish, quantity);
dishes (ID_dish, name, descr, price, kind);
firm (ID_firm);
tables (ID_tables, type, smoking, busy);
waiters (ID_waiter, name, surname, address, tel);
waiter_tables (ID_waiter, ID_table);
Внутренний уровень содержит таблицы, реализованные в БД, которые будут подробно описаны ниже в разделе «Описание структуры таблиц».
Описание структуры таблиц
Разработанная ER-диаграмма была преобразована в набор таблиц. В результате множества сущностей и связи были представлены отношениями. Каждой сущности или связи на ER-диаграмме соответствует таблица, всего таблиц 7. Ниже приводится описание таблиц.
Таблица «orders» («Заказы»)
ID_order |
date |
ID_table |
reserve |
discount |
Уникальный идентификатор |
дата |
Уникальный идентификатор |
Резерви- рование |
Скидка |
Таблица содержит информацию о заказах — номер заказа, дата, номер занятого столика, информация о резервировании и о скидке.
Таблица «dishes» («Блюда»)
ID_dish |
name |
descr |
price |
kind |
Уникальный идентификатор |
Название
|
Описание |
Цена |
вид |
Таблица содержит информацию о блюдах ресторана (меню) – номер блюда, его название, описание, цена и вид. Атрибут «kind» может принимать значения: «drink» – безалкогольный напиток, «beer» - пиво, «wine» - вино, «alcohol» - др. алкогольный напиток, «dessert» - десерт, «shashlick» - шашлык, «cold snack» - холодная закуска, «hot snack» - горячая закуска, «for_beer» - закуска к пиву, «salad» - салат, «soup» - суп, «dish» - горячее блюдо, «garnish» - гарнир, «sauce» - соус.
Таблица «order_dishes» («состав заказа»)
ID_order |
ID_dish |
quantity |
Уникальный идентификатор |
Уникальный идентификатор |
Количество |
Таблица реализует связь заказа с номерами блюд, входящих в заказ в определенном количестве.
Таблица «firm» («Фирменные блюда»)
ID_firm |
Уникальный идентификатор |
Таблица содержит номера фирменных блюд. Остальная информация об этих блюдах содержится в таблице «dishes» («Блюда») под теми же номерами.
Таблица «tables» («места»)
ID_table |
type |
smoking |
busy |
Уникальный идентификатор |
Тип |
Зона |
занятость |
Таблица содержит информацию о местах – номера столиков, тип (обычный или vip), зона (курящая или некурящая), занятость столика (занят или зарезервирован, или свободен).
Таблица «waiters» («Официанты»)
ID_waiter |
name |
surname |
address |
tel |
Уникальный идентификатор |
Имя |
Фамилия |
адрес |
телефон |
Таблица содержит информацию об официантах – имя, фамилия, адрес и телефон.
Таблица «waiter_tables» («официант_столики»)
ID_waiter |
ID_table |
Уникальный идентификатор |
Уникальный идентификатор |
Таблица содержит определяет связь между официантами и столиками, которые они обслуживают. Один официант обслуживает 4 столика.
Исходные коды для создания таблиц находятся в приложении №2.