-- ============================================================ -- Модуль питания: категории, блюда, счета, заказы -- ============================================================ SET NAMES utf8mb4; -- ---------- Компания-оператор питания ---------- CREATE TABLE IF NOT EXISTS food_companies ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL, is_active TINYINT(1) NOT NULL DEFAULT 1 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- ---------- Категории (Горячее, Напитки, Закуски, Суп...) ---------- CREATE TABLE IF NOT EXISTS food_categories ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) NOT NULL, emoji VARCHAR(16) DEFAULT NULL, sort_order INT NOT NULL DEFAULT 0, is_active TINYINT(1) NOT NULL DEFAULT 1 ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- ---------- Блюда ---------- CREATE TABLE IF NOT EXISTS food_items ( id INT AUTO_INCREMENT PRIMARY KEY, category_id INT NOT NULL, name VARCHAR(255) NOT NULL, description VARCHAR(500) DEFAULT NULL, price DECIMAL(10,2) NOT NULL DEFAULT 0, image_url VARCHAR(500) DEFAULT NULL, weight_grams INT DEFAULT NULL, is_active TINYINT(1) NOT NULL DEFAULT 1, sort_order INT NOT NULL DEFAULT 0, KEY idx_food_items_cat (category_id), CONSTRAINT fk_item_cat FOREIGN KEY (category_id) REFERENCES food_categories(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- ---------- Счета питания сотрудников (по табельному) ---------- CREATE TABLE IF NOT EXISTS food_accounts ( id INT AUTO_INCREMENT PRIMARY KEY, tnom VARCHAR(20) NOT NULL UNIQUE, balance DECIMAL(10,2) NOT NULL DEFAULT 0, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- ---------- Заказы ---------- CREATE TABLE IF NOT EXISTS food_orders ( id INT AUTO_INCREMENT PRIMARY KEY, tnom VARCHAR(20) NOT NULL, total_amount DECIMAL(10,2) NOT NULL, status ENUM('new','accepted','done','cancelled') NOT NULL DEFAULT 'new', created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, KEY idx_food_orders_status (status), KEY idx_food_orders_tnom (tnom), KEY idx_food_orders_date (created_at) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; -- ---------- Позиции заказа ---------- CREATE TABLE IF NOT EXISTS food_order_items ( id INT AUTO_INCREMENT PRIMARY KEY, order_id INT NOT NULL, item_id INT NOT NULL, item_name VARCHAR(255) NOT NULL, -- фиксируем имя на момент заказа unit_price DECIMAL(10,2) NOT NULL, -- и цену quantity INT NOT NULL, subtotal DECIMAL(10,2) NOT NULL, KEY idx_order_items_order (order_id), KEY idx_order_items_item (item_id), CONSTRAINT fk_oi_order FOREIGN KEY (order_id) REFERENCES food_orders(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;