
CREATE TABLE element_analysis_data (
    -- ========== 主键 ==========
    id BIGSERIAL PRIMARY KEY,

    -- ========== 样品基本信息 ==========
    sample_name VARCHAR(255),
    sample_grade_id VARCHAR(100),
    sample_grade_alias VARCHAR(255),
    operator_name VARCHAR(100),
    instrument VARCHAR(100),
    method_name VARCHAR(255),
    sample_type VARCHAR(50),

    -- ========== 测量信息 ==========
    replicate_no VARCHAR(100),
    measure_datetime VARCHAR(100),
    measure_duration VARCHAR(100),
    check_type VARCHAR(50),
    check_status VARCHAR(50),
    grade_name VARCHAR(100),
    base_element VARCHAR(10),
    rsd_check VARCHAR(100),

    -- ========== 元素信息 ==========
    element_name VARCHAR(10) NOT NULL,
    element_type VARCHAR(50),

    -- ========== 测量结果（浓度值） ==========
    concentration_value VARCHAR(100),
    concentration_unit VARCHAR(20),
    std_dev_value VARCHAR(100),

    -- ========== 不确定度信息 ==========
    uncertainty_abs VARCHAR(100),
    uncertainty_rel VARCHAR(100),

    -- ========== 验收限值 ==========
    lower_acceptance_limit VARCHAR(100),
    upper_acceptance_limit VARCHAR(100),

    -- ========== 状态信息 ==========
    result_status VARCHAR(50),
    calibration_status VARCHAR(50),
    acceptance_status VARCHAR(50),
    is_deleted VARCHAR(100) DEFAULT 'false',

    -- ========== 计算字段（便于查询） ==========
    is_within_limits VARCHAR(100),
    deviation_from_center VARCHAR(100),

    -- ========== XML元数据 ==========
    xml_version VARCHAR(20),
    xml_creation_datetime VARCHAR(100),

    -- ========== 系统字段 ==========
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    data_source VARCHAR(255)
);

-- ========== 索引设计 ==========
CREATE INDEX idx_element_name ON element_analysis_data(element_name);
CREATE INDEX idx_sample_grade ON element_analysis_data(sample_grade_id);
CREATE INDEX idx_measure_datetime ON element_analysis_data(measure_datetime);
CREATE INDEX idx_calibration_status ON element_analysis_data(calibration_status);
CREATE INDEX idx_acceptance_status ON element_analysis_data(acceptance_status);
CREATE INDEX idx_operator ON element_analysis_data(operator_name);
CREATE INDEX idx_instrument ON element_analysis_data(instrument);
CREATE INDEX idx_composite_element_sample ON element_analysis_data(element_name, sample_grade_id, measure_datetime);


-- ============================================
-- 表和字段注释（使用单独的COMMENT语句）
-- ============================================

COMMENT ON TABLE element_analysis_data IS '元素分析数据扁平化表 - 存储所有元素检测结果，每行代表一个元素的一次测量';

COMMENT ON COLUMN element_analysis_data.id IS '主键ID，自增';
COMMENT ON COLUMN element_analysis_data.sample_name IS '样品名称';
COMMENT ON COLUMN element_analysis_data.sample_grade_id IS '样品材料等级标识，如SS-321';
COMMENT ON COLUMN element_analysis_data.sample_grade_alias IS '样品材料等级别名，如SA-213 Grade TP 321';
COMMENT ON COLUMN element_analysis_data.operator_name IS '执行测量的操作员姓名';
COMMENT ON COLUMN element_analysis_data.instrument IS '使用的检测仪器编号';
COMMENT ON COLUMN element_analysis_data.method_name IS '使用的检测方法名称';
COMMENT ON COLUMN element_analysis_data.sample_type IS '样品类型：Calibration（校准）、Measurement（测量）等';
COMMENT ON COLUMN element_analysis_data.replicate_no IS '重复测量的序号，从0开始';
COMMENT ON COLUMN element_analysis_data.measure_datetime IS '执行测量的日期和时间';
COMMENT ON COLUMN element_analysis_data.measure_duration IS '测量持续时间，单位：秒';
COMMENT ON COLUMN element_analysis_data.check_type IS '检查类型，如GradeAcceptance（等级验收）';
COMMENT ON COLUMN element_analysis_data.check_status IS '检查状态，如Ok（通过）';
COMMENT ON COLUMN element_analysis_data.grade_name IS '检测使用的材料等级名称';
COMMENT ON COLUMN element_analysis_data.base_element IS '基础元素符号，用于计算其他元素的相对含量';
COMMENT ON COLUMN element_analysis_data.rsd_check IS '是否进行相对标准偏差（RSD）检查';
COMMENT ON COLUMN element_analysis_data.element_name IS '化学元素符号，如Fe（铁）、Cr（铬）、Ni（镍）、Mn（锰）等';
COMMENT ON COLUMN element_analysis_data.element_type IS '元素类型，通常为Element';
COMMENT ON COLUMN element_analysis_data.concentration_value IS '元素浓度的测量值';
COMMENT ON COLUMN element_analysis_data.concentration_unit IS '浓度单位，通常为%（百分比）';
COMMENT ON COLUMN element_analysis_data.std_dev_value IS '标准偏差值，表示测量的离散程度';
COMMENT ON COLUMN element_analysis_data.uncertainty_abs IS '绝对不确定度，表示测量的绝对误差范围';
COMMENT ON COLUMN element_analysis_data.uncertainty_rel IS '相对不确定度（百分比），表示测量的相对误差';
COMMENT ON COLUMN element_analysis_data.lower_acceptance_limit IS '验收判定的下限值';
COMMENT ON COLUMN element_analysis_data.upper_acceptance_limit IS '验收判定的上限值';
COMMENT ON COLUMN element_analysis_data.result_status IS '结果状态，如OK（正常）';
COMMENT ON COLUMN element_analysis_data.calibration_status IS '校准状态：InRange（在范围内）、UnderRange（低于范围）、OverRange（超出范围）';
COMMENT ON COLUMN element_analysis_data.acceptance_status IS '验收状态：InRange（合格）、OverRange（超标）、NotUsed（不参与验收）';
COMMENT ON COLUMN element_analysis_data.is_deleted IS '该测量结果是否已被标记为删除';
COMMENT ON COLUMN element_analysis_data.is_within_limits IS '测量值是否在验收范围内（自动计算）';
COMMENT ON COLUMN element_analysis_data.deviation_from_center IS '测量值偏离验收范围中心值的程度';
COMMENT ON COLUMN element_analysis_data.xml_version IS 'XML文件版本号';
COMMENT ON COLUMN element_analysis_data.xml_creation_datetime IS 'XML文件创建时间';
COMMENT ON COLUMN element_analysis_data.created_at IS '数据库记录创建时间';
COMMENT ON COLUMN element_analysis_data.updated_at IS '数据库记录最后更新时间';
COMMENT ON COLUMN element_analysis_data.data_source IS '数据来源的XML文件名';

COMMENT ON INDEX idx_element_name IS '元素名称索引，用于按元素查询';
COMMENT ON INDEX idx_sample_grade IS '样品等级索引，用于按材料等级查询';
COMMENT ON INDEX idx_measure_datetime IS '测量时间索引，用于时间范围查询';
COMMENT ON INDEX idx_calibration_status IS '校准状态索引，用于筛选校准状态';
COMMENT ON INDEX idx_acceptance_status IS '验收状态索引，用于筛选合格/不合格数据';
COMMENT ON INDEX idx_operator IS '操作员索引，用于按操作员查询';
COMMENT ON INDEX idx_instrument IS '仪器索引，用于按仪器查询';
COMMENT ON INDEX idx_composite_element_sample IS '复合索引，用于元素-样品-时间的组合查询';
