Files
dpb/backend/sql/weld_pollen.sql
34047007@qq.com b95053c52c init: 初始化 dpb 桃育种系统代码库
前后端 + 后端 FastAPI 全量源码、部署脚本与文档。
2026-08-06 00:17:49 +08:00

60 lines
4.5 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.
-- ============================================================
-- 桃育种·花粉档案(bre_pollen)+ 授粉表花粉批次外键
-- 背景:桃花期仅 3–7 天,父本花粉是杂交季命脉。花粉需采集、贮藏、测活力,
-- 授粉窗口(采集日→失效日)校验支撑"当前花期可用批次"与复盘坐果率。
-- 幂等:CREATE TABLE IF NOT EXISTS / ADD COLUMN IF NOT EXISTS,可重复执行。
-- 说明:bre_pollen 表可由 create_all 建,此处显式落库保证先于后端重启存在;
-- bre_pollination 已存在,新列必须 ALTER。
-- ============================================================
CREATE TABLE IF NOT EXISTS bre_pollen (
id SERIAL PRIMARY KEY,
uuid varchar(64) NOT NULL UNIQUE,
is_deleted boolean NOT NULL DEFAULT false,
created_time timestamptz NOT NULL DEFAULT now(),
updated_time timestamptz NOT NULL DEFAULT now(),
deleted_time timestamptz,
created_id integer REFERENCES sys_user(id) ON DELETE SET NULL,
updated_id integer REFERENCES sys_user(id) ON DELETE SET NULL,
deleted_id integer REFERENCES sys_user(id) ON DELETE SET NULL,
-- 领域字段
lot_code varchar(64) NOT NULL UNIQUE, -- 花粉批次号(如 PL-2026-0001
male_tree_id integer REFERENCES bre_tree(id) ON DELETE SET NULL, -- 采集父本树(混合/外地可空)
source_type varchar(16) NOT NULL DEFAULT 'tree', -- tree父本树 / mixed混合花粉 / external外地采集
source_desc varchar(128), -- 来源说明(混合配比/外地品种)
collect_date date, -- 花粉采集日期
collect_method varchar(32), -- 采集方式(采花取粉/振动收集…)
quantity varchar(32), -- 采集量(如 50g / 花药数)
storage_method varchar(16) NOT NULL DEFAULT 'fridge',-- 贮藏方式 fridge4℃ / minus20 / minus80 / liquid_n2液氮
viability_method varchar(16), -- 活力测定 ttc(TTC染色率) / germination(离体萌发率%)
viability_pct double precision, -- 花粉活力 %
viability_test_date date, -- 活力测定日期
expiry_date date, -- 有效期/失效日期(授粉窗口上界)
remark text
);
CREATE INDEX IF NOT EXISTS ix_bre_pollen_created_deleted ON bre_pollen (created_time, is_deleted);
CREATE INDEX IF NOT EXISTS ix_bre_pollen_male_tree_id ON bre_pollen (male_tree_id);
COMMENT ON TABLE bre_pollen IS '花粉档案:采集父本/日期/贮藏/活力/有效期,授粉窗口计划地基';
COMMENT ON COLUMN bre_pollen.lot_code IS '花粉批次号(唯一,如 PL-2026-0001';
COMMENT ON COLUMN bre_pollen.male_tree_id IS '采集父本树 FK→bre_tree(混合/外地采集可空)';
COMMENT ON COLUMN bre_pollen.source_type IS '来源类型 tree父本树/mixed混合花粉/external外地采集';
COMMENT ON COLUMN bre_pollen.collect_date IS '花粉采集日期';
COMMENT ON COLUMN bre_pollen.collect_method IS '采集方式(采花取粉/振动收集…)';
COMMENT ON COLUMN bre_pollen.storage_method IS '贮藏方式 fridge4℃/minus20/minus80/liquid_n2液氮';
COMMENT ON COLUMN bre_pollen.viability_method IS '活力测定方法 ttc(TTC染色率)/germination(离体萌发率%)';
COMMENT ON COLUMN bre_pollen.viability_pct IS '花粉活力 %';
COMMENT ON COLUMN bre_pollen.viability_test_date IS '活力测定日期';
COMMENT ON COLUMN bre_pollen.expiry_date IS '有效期/失效日期(授粉窗口上界)';
-- 授粉表补花粉批次外键(窗口校验:授粉日期须在 [采集日, 失效日] 内)
ALTER TABLE bre_pollination ADD COLUMN IF NOT EXISTS pollen_lot_id integer NULL REFERENCES bre_pollen(id) ON DELETE SET NULL;
CREATE INDEX IF NOT EXISTS ix_bre_pollination_pollen_lot_id ON bre_pollination (pollen_lot_id);
COMMENT ON COLUMN bre_pollination.pollen_lot_id IS '花粉批次 FK→bre_pollen(授粉所用花粉,支撑父本效力分析与窗口校验)';
-- 授粉表补授粉方式(一期文档规划,此前遗漏)
ALTER TABLE bre_pollination ADD COLUMN IF NOT EXISTS pollination_method varchar(32);
COMMENT ON COLUMN bre_pollination.pollination_method IS '授粉方式(人工点授/喷粉/涂抹…)';