一键导入
database-design
General database design principles: modeling, normalization, indexing, naming conventions, migrations, and query optimization. Trigger: Database design, data modeling, schema design, table design, or migration planning.
菜单
General database design principles: modeling, normalization, indexing, naming conventions, migrations, and query optimization. Trigger: Database design, data modeling, schema design, table design, or migration planning.
| name | database-design |
| description | General database design principles: modeling, normalization, indexing, naming conventions, migrations, and query optimization. Trigger: Database design, data modeling, schema design, table design, or migration planning. |
| license | Apache-2.0 |
| metadata | {"author":"vekzz-dev","version":"1.1"} |
Before writing any DDL, map the business entities and their relationships. Use the conceptual → logical → physical flow:
| Element | Convention | Example |
|---|---|---|
| Tables | snake_case, plural | users, order_items |
| Columns | snake_case, singular | created_at, email |
| PK | id | id BIGSERIAL PRIMARY KEY |
| FK | {singular_table}_id | user_id, order_id |
| Join table | {table1}_{table2} | users_roles |
| Indexes | idx_{table}_{column(s)} | idx_users_email |
| Unique constraint | uq_{table}_{column(s)} | uq_users_email |
TIMESTAMPTZ over TIMESTAMP, UUID or IDENTITY over natural keysTEXT/VARCHAR(255) as a default — size columns appropriatelyDECIMAL for money, not FLOATWHERE, JOIN, ORDER BY, not arbitrary columnsPrefer database constraints over application-level validation:
CHECK (price > 0) -- domain integrity
NOT NULL -- required fields
UNIQUE -- uniqueness
FOREIGN KEY ... ON DELETE -- referential integrity
down/rollback)20250531_create_users.sqlSELECT * — always name columnsLIMIT / OFFSET for pagination, but prefer keyset pagination for large datasets| Need | Approach |
|---|---|
| Simple CRUD | Normalized relational model |
| Reporting / analytics | Star schema (fact + dimension tables) |
| Time-series data | Partition by time, consider specialized DB |
| Full-text search | Dedicated index (GIN, or external search) |
| Hierarchical data | Adjacency list, nested sets, or LTREE |
| Multi-tenant | Row-level security or tenant discriminator column |
# Generate migration
migrate create -ext sql -dir migrations create_users
# Run migrations
migrate -database "$DATABASE_URL" up
# Rollback last migration
migrate -database "$DATABASE_URL" down 1
# Review dry-run
migrate -database "$DATABASE_URL" up 1 --dry-run
| Database | File | Key Differentiators |
|---|---|---|
| PostgreSQL | references/postgresql.md | Arrays, JSONB, GIN/GIST, CTEs, window functions, extensions, MVCC |
| MySQL | references/mysql.md | Storage engines, AUTO_INCREMENT, locking quirks, EXPLAIN variants |
| MariaDB | references/mariadb.md | Sequences, WITH optimizations, JSON vs LONGTEXT, thread pool |
| SQLite | references/sqlite.md | Type affinity, no ALTER COLUMN, WAL mode, embedded constraints |
| Requirement | Recommended DB |
|---|---|
| Complex queries, analytics, JSON | PostgreSQL |
| High-traffic web app, read-heavy | MySQL / MariaDB |
| Embedded, mobile, testing, local | SQLite |
| Need MariaDB-specific features (sequences, thread pool) | MariaDB |
| Full ACID with advanced indexing | PostgreSQL |
| Minimum ops overhead | SQLite (embedded) or managed MySQL/PostgreSQL |
Pre-built UI component libraries for server-rendered HTML: Preline UI, HyperUI, Flowbite. Modals, tables, forms, navbars, dropdowns — no React, no build step. Trigger: UI components, component library, Preline, HyperUI, Flowbite, Tailwind CSS components, pre-built UI.
Server-side web UI with Spring Boot: Thymeleaf templates, HTMX for dynamic interactions, Alpine.js for client-side behavior. No React, no webpack. Trigger: Thymeleaf, HTMX, Alpine.js, Spring MVC template, server-side rendering, web UI.
REST API design best practices: resource naming, versioning, error handling, pagination, HATEOAS, rate limiting, OpenAPI documentation. Trigger: API design, REST API, endpoint, OpenAPI, RESTful, API versioning, or API documentation.
Docker and containerization best practices: multi-stage builds, docker-compose, networking, volumes, security, and image optimization. Trigger: Docker, Dockerfile, docker-compose, container, image build, or containerization.
Comprehensive best practices for developing high-quality Spring Boot applications with production-ready patterns. Trigger: When developing Spring Boot applications, need best practices, or working with Spring framework.
Expert Spring Boot testing specialist that selects the best testing techniques for your situation with JUnit and AssertJ. Trigger: When writing Spring Boot tests, need testing patterns, or working with test slices.