-- Создание таблиц
-- 1. Состав блюд (справочник продуктов)
CREATE TABLE СоставБлюд (
КодПродукта INT PRIMARY KEY,
НазваниеПродукта VARCHAR(100) NOT NULL
);
-- 2. Блюда (справочник блюд)
CREATE TABLE Блюда (
КодБлюда INT PRIMARY KEY,
Название VARCHAR(100) NOT NULL,
Количество INT NOT NULL, -- например, выход в граммах или количество порций
Категория VARCHAR(50),
Цена DECIMAL(10,2) NOT NULL
);
-- 3. Столы
CREATE TABLE Столы (
КодСтола INT PRIMARY KEY,
Описание VARCHAR(100)
);
-- 4. Сотрудники (официанты)
CREATE TABLE Сотрудники (
КодСотрудника INT PRIMARY KEY,
ФИО VARCHAR(150) NOT NULL
);
-- 5. Заказы (шапка заказа)
CREATE TABLE Заказы (
КодЗаказа INT PRIMARY KEY,
Дата DATE NOT NULL,
Время TIME NOT NULL,
Стол INT NOT NULL,
Официант INT NOT NULL,
Выполнен BOOLEAN DEFAULT FALSE, -- TRUE = выполнен, FALSE = нет
СуммаЗаказа DECIMAL(10,2) DEFAULT 0,
FOREIGN KEY (Стол) REFERENCES Столы(КодСтола),
FOREIGN KEY (Официант) REFERENCES Сотрудники(КодСотрудника)
);
-- 6. Что заказано (позиции в заказе)
CREATE TABLE ЧтоЗаказано (
НомерПП INT NOT NULL, -- номер позиции в пределах заказа
КодЗаказа INT NOT NULL,
КодБлюда INT NOT NULL,
PRIMARY KEY (КодЗаказа, НомерПП),
FOREIGN KEY (КодЗаказа) REFERENCES Заказы(КодЗаказа),
FOREIGN KEY (КодБлюда) REFERENCES Блюда(КодБлюда)
);
-- Пример вставки тестовых данных (можно пропустить или дополнить)
INSERT INTO СоставБлюд (КодПродукта, НазваниеПродукта) VALUES
(1, 'Мука пшеничная'),
(2, 'Сахар'),
(3, 'Говядина');
INSERT INTO Блюда (КодБлюда, Название, Количество, Категория, Цена) VALUES
(101, 'Борщ', 250, 'Первое блюдо', 180.00),
(102, 'Стейк из говядины', 200, 'Второе блюдо', 350.00);
INSERT INTO Столы (КодСтола, Описание) VALUES
(1, 'У окна'),
(2, 'В зале');
INSERT INTO Сотрудники (КодСотрудника, ФИО) VALUES
(1001, 'Иванов Иван Иванович'),
(1002, 'Петрова Анна Сергеевна');