Files
dpb/backend/sql/weld_pedigree_ablup.sql
T

28 lines
1.6 KiB
SQL
Raw Normal View History

-- ============================================================
-- 断链焊接:系谱锚点 + 遗传力落库
-- 幂等:全部 IF NOT EXISTS。
-- 1) bre_tree 加 母本 dam_id / 父本 sire_idFK→bre_germplasm
-- —— A 矩阵的系谱锚点(单株为子代、种质为亲本)
-- 2) 按杂交组合回填现有单株的 dam/sire(组合无亲本的保持 NULL → founder
-- 3) bre_prediction 加 遗传力 heritability(§3.12
-- 注:SQLAlchemy create_all 只建新表、不改已有表,故已有库需执行本脚本一次。
-- ============================================================
-- ── 1) bre_tree:母本/父本 ──────────────────────────────
ALTER TABLE bre_tree ADD COLUMN IF NOT EXISTS dam_id INTEGER REFERENCES bre_germplasm(id) ON DELETE SET NULL;
ALTER TABLE bre_tree ADD COLUMN IF NOT EXISTS sire_id INTEGER REFERENCES bre_germplasm(id) ON DELETE SET NULL;
CREATE INDEX IF NOT EXISTS ix_bre_tree_dam ON bre_tree(dam_id);
CREATE INDEX IF NOT EXISTS ix_bre_tree_sire ON bre_tree(sire_id);
-- ── 2) 回填现有单株(组合 female/male 亲本 → 树 dam/sire)────
-- 重复执行安全:再次回填与组合同步(覆盖早期手工/旧值)。
UPDATE bre_tree t
SET dam_id = c.female_parent_id,
sire_id = c.male_parent_id
FROM bre_cross_combination c
WHERE t.combination_id = c.id
AND t.is_deleted = false;
-- ── 3) bre_prediction:遗传力 h² ─────────────────────────
ALTER TABLE bre_prediction ADD COLUMN IF NOT EXISTS heritability NUMERIC;