food
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
-- ============================================================
|
||||
-- Модуль питания: категории, блюда, счета, заказы
|
||||
-- ============================================================
|
||||
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;
|
||||
Reference in New Issue
Block a user