29 lines
1.7 KiB
PL/PgSQL
29 lines
1.7 KiB
PL/PgSQL
-- 已有库完成 004/005 后执行;最新空库基线已经包含此结构,不执行本文件。
|
|
-- 保留旧 worksheets.grade,不自动回填;经审核的年级映射由导入/管理业务显式写入。
|
|
BEGIN;
|
|
SET LOCAL TIME ZONE 'UTC';
|
|
SET LOCAL lock_timeout = '5s';
|
|
SET LOCAL search_path = public, pg_catalog;
|
|
|
|
-- 年级与内容分类独立;同一 worksheet 可适用于多个(含不连续)年级。
|
|
-- 不从年龄或旧 grade 自动生成关系,避免把推算值当作已核实的适用范围。
|
|
CREATE TABLE public.worksheet_grades (
|
|
worksheet_id varchar(128) COLLATE "C" NOT NULL,
|
|
grade smallint NOT NULL,
|
|
CONSTRAINT worksheet_grades_pkey PRIMARY KEY (worksheet_id, grade),
|
|
CONSTRAINT worksheet_grades_worksheet_id_fkey FOREIGN KEY (worksheet_id)
|
|
REFERENCES public.worksheets (id) ON UPDATE RESTRICT ON DELETE RESTRICT,
|
|
CONSTRAINT worksheet_grades_grade_check CHECK (grade BETWEEN -4 AND 6)
|
|
);
|
|
|
|
-- 联合主键支持查询功能的适用年级;反向索引用于年级菜单及筛选。
|
|
CREATE INDEX worksheet_grades_grade_worksheet_idx
|
|
ON public.worksheet_grades (grade, worksheet_id);
|
|
|
|
COMMENT ON TABLE public.worksheet_grades IS '功能适用年级的唯一权威关系;与内容分类独立,不从年龄自动推算';
|
|
COMMENT ON COLUMN public.worksheet_grades.grade IS '-4 托班、-3 小班、-2 中班、-1 大班、0 幼小衔接、1至6 小学年级;无关系表示未配置,不表示全年级';
|
|
COMMENT ON COLUMN public.worksheets.grade IS '旧版单年级兼容值;可能由年龄推算;保留原值,新年级筛选使用 worksheet_grades';
|
|
COMMENT ON TABLE public.categories IS '内容分类树,与适用年级独立;多层循环需由服务端事务检查';
|
|
|
|
COMMIT;
|