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.md
source 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

FieldTypeDescription
id
bigintPrimary key, required for all regular tables

Audit Fields

All tables except junction tables MUST include:

FieldFull NameTypeDefaultDescription
crd
create row datetimetimestampcurrent_timestampRow creation time, timezone-independent
mrd
modify row datetimetimestampnullLast modification time, timezone-independent, nullable
rlv
row lock versioninteger0Optimistic lock version

Soft Delete Field

FieldFull NameTypeDefaultDescription
ldf
logic delete fieldtimestampnullSoft 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:

FieldTypeDescription
pid
bigintParent 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
);