docs: 基本完成初版数据库设计
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
-- 已有库完成 004/005/006/007 后执行;最新空库基线包含此结构,不执行本文件。
|
||||
-- 旧收藏全部保持功能收藏(新列 NULL),不猜测具体底图,不改旧 likes。
|
||||
-- 删除旧唯一约束并创建两种部分唯一索引均在同一事务内完成。
|
||||
BEGIN;
|
||||
SET LOCAL TIME ZONE 'UTC';
|
||||
SET LOCAL lock_timeout = '5s';
|
||||
SET LOCAL search_path = public, pg_catalog;
|
||||
|
||||
ALTER TABLE public.favorites
|
||||
ADD COLUMN worksheet_resource_id varchar(128) COLLATE "C",
|
||||
ADD CONSTRAINT favorites_resource_id_check CHECK (
|
||||
worksheet_resource_id IS NULL OR length(btrim(worksheet_resource_id)) > 0
|
||||
);
|
||||
ALTER TABLE public.favorites DROP CONSTRAINT favorites_user_worksheet_key;
|
||||
|
||||
-- NULL 表示功能收藏;非 NULL 表示完整内容收藏,不另加 type 字段。
|
||||
-- 部分唯一索引分别去重,允许同用户收藏一个功能及其中多个资源。
|
||||
CREATE UNIQUE INDEX favorites_user_worksheet_key
|
||||
ON public.favorites (user_id, worksheet_id)
|
||||
WHERE worksheet_resource_id IS NULL;
|
||||
CREATE UNIQUE INDEX favorites_user_resource_key
|
||||
ON public.favorites (user_id, worksheet_resource_id)
|
||||
WHERE worksheet_resource_id IS NOT NULL;
|
||||
|
||||
COMMENT ON TABLE public.favorites IS '功能和完整内容的当前收藏;取消即删除;仅功能收藏增减 worksheets.likes';
|
||||
COMMENT ON COLUMN public.favorites.worksheet_id IS '稳定功能逻辑关联;内容收藏的功能归属由服务端查询确定,历史缺失时保留';
|
||||
COMMENT ON COLUMN public.favorites.worksheet_resource_id IS 'NULL 是功能收藏,非 NULL 是完整内容收藏;逻辑关联,缺失/下架不清空,不退化为功能收藏';
|
||||
|
||||
COMMIT;
|
||||
Reference in New Issue
Block a user