Files
msh-system/docs/sql/v2_calculator_results_alter.sql

105 lines
4.8 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- =========================================================
-- 食谱计算器表结构变更 SQL
-- 版本v1.0
-- 日期2026-02-01
-- 说明:根据开发文档优化后,需要新增以下字段
-- =========================================================
-- 检查并添加 bmi_status 字段
ALTER TABLE `v2_calculator_results`
ADD COLUMN IF NOT EXISTS `bmi_status` VARCHAR(20) DEFAULT NULL COMMENT 'BMI状态描述体型过轻/正常/超重/肥胖'
AFTER `bmi`;
-- 检查并添加 food_list_json 字段
ALTER TABLE `v2_calculator_results`
ADD COLUMN IF NOT EXISTS `food_list_json` TEXT DEFAULT NULL COMMENT '食物份数建议 JSON'
AFTER `energy_intake`;
-- 检查并添加 tips_json 字段
ALTER TABLE `v2_calculator_results`
ADD COLUMN IF NOT EXISTS `tips_json` TEXT DEFAULT NULL COMMENT '重要提示 JSON'
AFTER `meal_plan_json`;
-- 如果表不存在,创建完整表结构
CREATE TABLE IF NOT EXISTS `v2_calculator_results` (
`result_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '计算结果ID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
-- 输入参数
`gender` VARCHAR(10) NOT NULL COMMENT '性别male/female',
`age` INT NOT NULL COMMENT '年龄(岁)',
`height` INT NOT NULL COMMENT '身高cm',
`weight` DECIMAL(5,2) DEFAULT NULL COMMENT '体重kg',
`has_dialysis` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否透析0-否 1-是',
`dialysis_type` VARCHAR(20) DEFAULT NULL COMMENT '透析类型hemodialysis/peritoneal',
`dry_weight` DECIMAL(5,2) NOT NULL COMMENT '干体重kg',
`creatinine` DECIMAL(8,2) NOT NULL COMMENT '血肌酐μmol/L',
-- 计算结果
`egfr` DECIMAL(6,2) NOT NULL COMMENT 'eGFRml/min/1.73m²)',
`standard_weight` DECIMAL(5,2) NOT NULL COMMENT '标准体重kg',
`bmi` DECIMAL(4,1) NOT NULL COMMENT 'BMI',
`bmi_status` VARCHAR(20) DEFAULT NULL COMMENT 'BMI状态描述',
`ckd_stage` VARCHAR(50) NOT NULL COMMENT 'CKD分期',
`protein_intake` DECIMAL(5,1) NOT NULL COMMENT '每日蛋白质目标g',
`energy_intake` INT NOT NULL COMMENT '每日能量目标kcal',
-- JSON 数据
`food_list_json` TEXT DEFAULT NULL COMMENT '食物份数建议 JSON',
`meal_plan_json` TEXT DEFAULT NULL COMMENT '配餐方案 JSON',
`tips_json` TEXT DEFAULT NULL COMMENT '重要提示 JSON',
-- 状态字段
`is_adopted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否已采纳0-未采纳 1-已采纳',
`adopted_at` DATETIME DEFAULT NULL COMMENT '采纳时间',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`result_id`),
INDEX `idx_user_id` (`user_id`),
INDEX `idx_created_at` (`created_at`),
INDEX `idx_is_adopted` (`is_adopted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='营养计算结果表';
-- 营养计划表(如果不存在则创建)
CREATE TABLE IF NOT EXISTS `v2_nutrition_plans` (
`plan_id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '营养计划ID',
`user_id` BIGINT NOT NULL COMMENT '用户ID',
`result_id` BIGINT DEFAULT NULL COMMENT '关联的计算结果ID',
-- 健康数据(冗余存储,便于查询)
`gender` VARCHAR(10) DEFAULT NULL COMMENT '性别',
`age` INT DEFAULT NULL COMMENT '年龄',
`height` INT DEFAULT NULL COMMENT '身高cm',
`weight` DECIMAL(5,2) DEFAULT NULL COMMENT '体重kg',
`has_dialysis` TINYINT(1) DEFAULT 0 COMMENT '是否透析',
`dialysis_type` VARCHAR(20) DEFAULT NULL COMMENT '透析类型',
`creatinine` DECIMAL(8,2) DEFAULT NULL COMMENT '血肌酐',
-- 计算结果
`egfr` DECIMAL(6,2) DEFAULT NULL COMMENT 'eGFR',
`standard_weight` DECIMAL(5,2) DEFAULT NULL COMMENT '标准体重',
`bmi` DECIMAL(4,1) DEFAULT NULL COMMENT 'BMI',
`ckd_stage` VARCHAR(50) DEFAULT NULL COMMENT 'CKD分期',
`protein_intake` DECIMAL(5,1) DEFAULT NULL COMMENT '蛋白质目标',
`energy_intake` INT DEFAULT NULL COMMENT '能量目标',
-- 配餐方案
`meal_plan_json` TEXT DEFAULT NULL COMMENT '配餐方案 JSON',
-- 计划状态
`status` VARCHAR(20) NOT NULL DEFAULT 'active' COMMENT '状态active/completed/abandoned',
`start_date` DATE NOT NULL COMMENT '开始日期',
`end_date` DATE NOT NULL COMMENT '结束日期',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
PRIMARY KEY (`plan_id`),
INDEX `idx_user_id` (`user_id`),
INDEX `idx_result_id` (`result_id`),
INDEX `idx_status` (`status`),
INDEX `idx_start_date` (`start_date`),
UNIQUE INDEX `uk_user_result` (`user_id`, `result_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='营养计划表';