28 lines
1.6 KiB
SQL
28 lines
1.6 KiB
SQL
-- ============================================================
|
||||
|
|
-- 断链焊接:系谱锚点 + 遗传力落库
|
|||
|
|
-- 幂等:全部 IF NOT EXISTS。
|
|||
|
|
-- 1) bre_tree 加 母本 dam_id / 父本 sire_id(FK→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;
|