Claude-skill-registry database-standard
Database design standards defining primary keys, foreign keys, audit fields, soft delete, junction tables. PostgreSQL style preferred, SQL lowercase without comments.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/database-standard" ~/.claude/skills/majiayu000-claude-skill-registry-database-standard && rm -rf "$T"
manifest:
skills/data/database-standard/SKILL.mdsource content
Database Preferences
- Forbidden: MySQL
- Recommended: PostgreSQL or other modern databases
- Required: Foreign key constraints for data integrity
SQL Code Style
- All lowercase
- SQL files have no comments
Primary Key Standard
| Field | Type | Description |
|---|---|---|
| bigint | Primary key, required for all regular tables |
Audit Fields
All tables except junction tables MUST include:
| Field | Full Name | Type | Default | Description |
|---|---|---|---|---|
| create row datetime | timestamp | current_timestamp | Row creation time, timezone-independent |
| modify row datetime | timestamp | null | Last modification time, timezone-independent, nullable |
| row lock version | integer | 0 | Optimistic lock version |
Soft Delete Field
| Field | Full Name | Type | Default | Description |
|---|---|---|---|---|
| logic delete field | timestamp | null | Soft delete time, timezone-independent, null means active |
Junction Table Standard
Tables linking two entities:
- No primary key
- No audit fields
- Only foreign key IDs from both tables
Tree Structure
Tables with upward lookup (e.g., address) use
pid for parent link:
| Field | Type | Description |
|---|---|---|
| bigint | Parent primary key, nullable |
Examples
Regular Table
create table user ( id bigint primary key, name varchar(255) not null, email varchar(255), ldf timestamp, crd timestamp not null default current_timestamp, mrd timestamp, rlv integer not null default 0 );
Junction Table
create table user_role ( user_id bigint not null references user(id), role_id bigint not null references role(id) );
Tree Table
create table address ( id bigint primary key, pid bigint references address(id), name varchar(255) not null, crd timestamp not null default current_timestamp, mrd timestamp, rlv integer not null default 0 );