- For PKs, use
int8 ... generated always as identity instead of int4/serial - Prefer
timestamptz over timestamp - Prefer
text over varchar - Use UUIDv7 when applicable (function
uuidv7(), PG18+) - Never use
money data type - store as cents/smallest unit instead - Avoid SQL reserved words in names
- Ensure names are unique and under 63 characters
- Use snake_case for all identifiers
- Prefer plurals for table names:
users, blog_posts - Prefer singular names for columns:
email, status - Use
comment to add comments to columns, tables, and other database objects - DB object comments must be short and precise, maximum 1024 characters
- Explain purpose in comments, not implementation
- Include valid values for enums or constrained fields
- If needed, add inline comments using
/* ... */ (C style); these comments may be detailed - Use lowercase SQL keywords (not uppercase)
- Add spaces and line breaks for readability in complex statements