From bb-spec-backend
Relational database schema and access conventions — UUIDv7 primary keys generated at the application layer, soft delete via a `deleted` microsecond-timestamp column with composite UNIQUE keys, DB-managed created_at/updated_at, UTC across the whole chain, explicit charset; dialect-agnostic principles plus MySQL / PostgreSQL implementation tables. | 关系型数据库 schema 与访问约定:应用层生成 UUIDv7 主键、`deleted` 微秒时间戳软删除 + 联合 UNIQUE、DB 自动管理 created_at/updated_at、全链路 UTC、显式字符集;方言无关通用原则 + MySQL / PostgreSQL 落地对照表。
How this skill is triggered — by the user, by Claude, or both
Slash command
/bb-spec-backend:database-constraintsThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
适用于:关系型数据库的表结构设计、migration / DDL 编写,以及文档 / PRD / 设计 / review 中涉及数据模型的部分。只约束 DB 侧,语言无关。
适用于:关系型数据库的表结构设计、migration / DDL 编写,以及文档 / PRD / 设计 / review 中涉及数据模型的部分。只约束 DB 侧,语言无关。
TRIGGER:编写 / 修改 .sql、migration 文件、DDL;设计表结构 / 数据模型;文档 / PRD / 设计 / review 涉及持久层 schema。
SKIP:非关系型存储(Redis / MongoDB / ES 等)、不动 schema 的纯查询调优、代码生成物。
deleted BIGINT NOT NULL DEFAULT 0,删除标记 = UTC 微秒时间戳。所有 UNIQUE KEY 必须与 deleted 联合;常规查询必须带 WHERE deleted = 0。created_at / updated_at 由数据库自动维护。禁止 INSERT / UPDATE 显式写入、禁止应用层手动赋值;写入后必须回读获取 DB 生成值。禁止的软删除变体:is_deleted BOOL(同一自然键只能软删一次,第二次撞联合 UNIQUE)/ deleted_at DATETIME NULL(NULL 不参与唯一性比较,活跃行约束失效)。必须用非空微秒时间戳整型。
| 约定 | MySQL | PostgreSQL |
|---|---|---|
| UUIDv7 主键列 | BINARY(16) | uuid |
| 时间戳列 | DATETIME(6) | timestamptz(6) |
| created_at | DEFAULT CURRENT_TIMESTAMP(6) | DEFAULT now() |
| updated_at | DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) | moddatetime trigger(见下) |
| 会话时区 | time_zone = '+00:00' | TimeZone = 'UTC' |
| SQL 取当前 UTC | UTC_TIMESTAMP(6) | now()(timestamptz 存储即瞬时值) |
| 字符集 | 库表声明 utf8mb4 + utf8mb4_0900_ai_ci | 建库声明 ENCODING 'UTF8' |
PostgreSQL 维护 updated_at(PG 无 ON UPDATE 等价物,统一用 contrib 扩展 moddatetime):
CREATE EXTENSION IF NOT EXISTS moddatetime;
CREATE TRIGGER set_updated_at BEFORE UPDATE ON <table>
FOR EACH ROW EXECUTE FUNCTION moddatetime(updated_at);
CREATE TABLE user (
id BINARY(16) NOT NULL,
email VARCHAR(255) NOT NULL,
deleted BIGINT NOT NULL DEFAULT 0,
created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),
updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6),
PRIMARY KEY (id),
UNIQUE KEY uk_email (email, deleted)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
Provides CDSS development patterns for drug interaction checking, dose validation, clinical scoring (NEWS2, qSOFA), and alert classification integrated into EMR workflows.
npx claudepluginhub 0xbb2b/bb-spec --plugin bb-spec-backend