Загрузка данных


-- Создание таблиц

-- 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, 'Петрова Анна Сергеевна');