Files
Neo-ZQYY/db/CLAUDE.md
Neo 82c321ef0a chore: 更新 CLAUDE.md — 补充 demo-miniprogram、更新 db/ 描述
- 子系统表新增 apps/demo-miniprogram/(MOCK 小程序标杆校对)
- db/ 描述从 "DDL/迁移/种子" 更新为 "权威DDL/迁移归档/FDW配置"
- db/CLAUDE.md 目录结构对齐实际(schemas/ 为主、migrations 留空、种子已合并)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-06 00:48:07 +08:00

61 lines
2.2 KiB
Markdown
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.
# CLAUDE.md — Database (DDL / Migrations / Seeds)
进入本目录时自动加载。
## Schema 变更规则
修改任何影响 PostgreSQL schema 的内容(迁移脚本/DDL/表定义)时,必须同步更新 `docs/database/`
1. **变更说明**:新增/修改/删除的表、字段、约束、索引
2. **兼容性**:对 ETL、后端 API、小程序字段映射的影响
3. **回滚策略**如何撤销DDL 回滚 / 数据回填)
4. **验证步骤**:至少 3 条校验 SQL
## RLS 视图双 Schema 规则
新建 DWS/DWD 表的 RLS 视图必须同时在原 schema`dws`)和 `app` schema 创建:
```sql
-- 1. 原 schema
CREATE VIEW dws.v_xxx AS SELECT ... WHERE site_id = current_setting('app.current_site_id')::int;
-- 2. app schema后端通过此路径访问
CREATE VIEW app.v_xxx AS SELECT ... WHERE site_id = current_setting('app.current_site_id')::int;
```
回滚需逆序 DROP 两个 schema 的视图。只在原 schema 创建会导致后端查询失败。
## 目录结构
```
db/
├── etl_feiqiu/
│ ├── schemas/ # 权威 DDL — 六层完整定义meta/ods/dwd/core/dws/app
│ ├── migrations/ # 未来增量迁移v1 已全部归档)
│ ├── ods/ # ODS 补充脚本
│ └── scripts/ # 测试数据库脚本
├── zqyy_app/
│ ├── schemas/ # 权威 DDL — 三层完整定义public/auth/biz
│ ├── migrations/ # 未来增量迁移v1 已全部归档)
│ └── scripts/ # 测试数据库脚本
├── fdw/ # FDW 跨库只读映射(正向 + 反向 + 测试环境)
└── _archived/ # 归档v1 迁移 39 个、旧基线)
```
v1 阶段种子数据已合并进 `schemas/` 对应 DDL 文件末尾,不再单独维护。
## DDL 刷新
修改 schema 后,重新生成完整 DDL
```bash
PYTHONUTF8=1 python tools/db/gen_consolidated_ddl.py
```
输出到 `docs/database/ddl/`,然后复制到 `db/*/schemas/` 保持同步。
## 测试规范
- 数据库操作使用测试库(`TEST_DB_DSN` / `TEST_APP_DB_DSN`),禁止连正式库
- 迁移脚本在测试库执行后需验证表结构