database-designer – skill Dữ liệu & Khoa học cho agent AI
Dùng khi người dùng yêu cầu thiết kế schema cơ sở dữ liệu, lập kế hoạch migration dữ liệu, tối ưu truy vấn, chọn giữa SQL và NoSQL, hoặc mô hình hóa quan hệ dữ liệu.
Cài skill database-designer bằng một lệnh
Chọn công cụ bạn đang dùng, copy lệnh và dán vào terminal. Skill sẽ nằm trong thư mục skills của công cụ đó và sẵn sàng dùng ở phiên làm việc tiếp theo.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/database-designer-05ef3.tgz | tar xz -C ~/.claude/skills
Gọi trong Claude Code: /database-designer – rồi mô tả công việc bạn muốn làm.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/database-designer-05ef3.tgz | tar xz -C ~/.codex/skills
Gọi trong Codex: $database-designer – rồi mô tả công việc bạn muốn làm.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/database-designer-05ef3.tgz | tar xz -C ~/.hermes/skills
Gọi trong Hermes Agent: /database-designer – rồi mô tả công việc bạn muốn làm.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/database-designer-05ef3.tgz | tar xz -C ~/.deepcode/skills
Gọi trong DeepSeek: /database-designer – rồi mô tả công việc bạn muốn làm.
Nội dung SKILL.md
Nội dung SKILL.md gốc bằng tiếng Anh.
Database Designer - POWERFUL Tier Skill
Overview
A comprehensive database design skill that provides expert-level analysis, optimization, and migration capabilities for modern database systems. This skill combines theoretical principles with practical tools to help architects and developers create scalable, performant, and maintainable database schemas.
Core Competencies
Schema Design & Analysis
- Normalization Analysis: Automated detection of normalization levels (1NF through BCNF)
- Denormalization Strategy: Smart recommendations for performance optimization
- Data Type Optimization: Identification of inappropriate types and size issues
- Constraint Analysis: Missing foreign keys, unique constraints, and null checks
- Naming Convention Validation: Consistent table and column naming patterns
- ERD Generation: Automatic Mermaid diagram creation from DDL
Index Optimization
- Index Gap Analysis: Identification of missing indexes on foreign keys and query patterns
- Composite Index Strategy: Optimal column ordering for multi-column indexes
- Index Redundancy Detection: Elimination of overlapping and unused indexes
- Performance Impact Modeling: Selectivity estimation and query cost analysis
- Index Type Selection: B-tree, hash, partial, covering, and specialized indexes
Migration Management
- Zero-Downtime Migrations: Expand-contract pattern implementation
- Schema Evolution: Safe column additions, deletions, and type changes
- Data Migration Scripts: Automated data transformation and validation
- Rollback Strategy: Complete reversal capabilities with validation
- Execution Planning: Ordered migration steps with dependency resolution
Tool Workflow (run these — do not analyze schemas by hand)
All paths relative to this skill folder; sample inputs in assets/.
1. Analyze the schema
python3 schema_analyzer.py --input schema.sql --generate-erd --output-format json -o analysis.jsonAccepts SQL DDL or JSON schema (assets/sample_schema.sql / sample_schema.json). Output includes normalization findings, missing constraints, naming issues, and a Mermaid ERD — show the ERD to the user and fix flagged issues before optimizing.
2. Optimize indexes against real query patterns
python3 index_optimizer.py --schema assets/sample_schema.json --queries assets/sample_query_patterns.json --analyze-existing --format json -o indexes.jsonWrite the user's hot queries into a query-patterns JSON first (copy assets/sample_query_patterns.json). Output is a priority-ordered list of CREATE INDEX recommendations plus redundant-index removals.
3. Generate the migration
python3 migration_generator.py --current current_schema.json --target target_schema.json --zero-downtime --format sql -o migration.sql--zero-downtime emits an expand-contract plan; --validate-only checks feasibility without generating SQL.
4. Verification loop
Re-run step 1 on the *target* schema and assert the issues found in the first pass are gone; run migration_generator.py --validate-only before handing over the migration.
Database Design Principles
→ See references/database-design-reference.md for details
Best Practices
Schema Design
1. Use meaningful names: Clear, consistent naming conventions
2. Choose appropriate data types: Right-sized columns for storage efficiency
3. Define proper constraints: Foreign keys, check constraints, unique indexes
4. Consider future growth: Plan for scale from the beginning
5. Document relationships: Clear foreign key relationships and business rules
Performance Optimization
1. Index strategically: Cover common query patterns without over-indexing
2. Monitor query performance: Regular analysis of slow queries
3. Partition large tables: Improve query performance and maintenance
4. Use appropriate isolation levels: Balance consistency with performance
5. Implement connection pooling: Efficient resource utilization
Security Considerations
1. Principle of least privilege: Grant minimal necessary permissions
2. Encrypt sensitive data: At rest and in transit
3. Audit access patterns: Monitor and log database access
4. Validate inputs: Prevent SQL injection attacks
5. Regular security updates: Keep database software current
Query Generation Patterns
SELECT with JOINs
-- INNER JOIN: only matching rows
SELECT o.id, c.name, o.total
FROM orders o
INNER JOIN customers c ON c.id = o.customer_id;
-- LEFT JOIN: all left rows, NULLs for non-matches
SELECT c.name, COUNT(o.id) AS order_count
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.name;
-- Self-join: hierarchical data (employees/managers)
SELECT e.name AS employee, m.name AS manager
FROM employees e
LEFT JOIN employees m ON m.id = e.manager_id;Common Table Expressions (CTEs)
-- Recursive CTE for org chart
WITH RECURSIVE org AS (
SELECT id, name, manager_id, 1 AS depth
FROM employees WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.name, e.manager_id, o.depth + 1
FROM employees e INNER JOIN org o ON o.id = e.manager_id
)
SELECT * FROM org ORDER BY depth, name;Window Functions
-- ROW_NUMBER for pagination / dedup
SELECT *, ROW_NUMBER() OVER (PARTITION BY customer_id ORDER BY created_at DESC) AS rn
FROM orders;
-- RANK with gaps, DENSE_RANK without gaps
SELECT name, score, RANK() OVER (ORDER BY score DESC) AS rank FROM leaderboard;
-- LAG/LEAD for comparing adjacent rows
SELECT date, revenue,
revenue - LAG(revenue) OVER (ORDER BY date) AS daily_change
FROM daily_sales;Aggregation Patterns
-- FILTER clause (PostgreSQL) for conditional aggregation
SELECT
COUNT(*) AS total,
COUNT(*) FILTER (WHERE status = 'active') AS active,
AVG(amount) FILTER (WHERE amount > 0) AS avg_positive
FROM accounts;
-- GROUPING SETS for multi-level rollups
SELECT region, product, SUM(revenue)
FROM sales
GROUP BY GROUPING SETS ((region, product), (region), ());---
Migration Patterns
Up/Down Migration Scripts
Every migration must have a reversible counterpart. Name files with a timestamp prefix for ordering:
migrations/
├── 20260101_000001_create_users.up.sql
├── 20260101_000001_create_users.down.sql
├── 20260115_000002_add_users_email_index.up.sql
└── 20260115_000002_add_users_email_index.down.sqlZero-Downtime Migrations (Expand/Contract)
Use the expand-contract pattern to avoid locking or breaking running code:
1. Expand — add the new column/table (nullable, with default)
2. Migrate data — backfill in batches; dual-write from application
3. Transition — application reads from new column; stop writing to old
4. Contract — drop old column in a follow-up migration
Data Backfill Strategies
-- Batch update to avoid long-running locks
UPDATE users SET email_normalized = LOWER(email)
WHERE id IN (SELECT id FROM users WHERE email_normalized IS NULL LIMIT 5000);
-- Repeat in a loop until 0 rows affectedRollback Procedures
- Always test the
down.sqlin staging before deployingup.sqlto production - Keep rollback window short — if the contract step has run, rollback requires a new forward migration
- For irreversible changes (dropping columns with data), take a logical backup first
---
Performance Optimization
Indexing Strategies
| Index Type | Use Case | Example |
|------------|----------|---------|
| B-tree (default) | Equality, range, ORDER BY | CREATE INDEX idx_users_email ON users(email); |
| GIN | Full-text search, JSONB, arrays | CREATE INDEX idx_docs_body ON docs USING gin(to_tsvector('english', body)); |
| GiST | Geometry, range types, nearest-neighbor | CREATE INDEX idx_locations ON places USING gist(coords); |
| Partial | Subset of rows (reduce size) | CREATE INDEX idx_active ON users(email) WHERE active = true; |
| Covering | Index-only scans | CREATE INDEX idx_cov ON orders(customer_id) INCLUDE (total, created_at); |
EXPLAIN Plan Reading
EXPLAIN (ANALYZE, BUFFERS, FORMAT TEXT) SELECT ...;Key signals to watch:
- Seq Scan on large tables — missing index
- Nested Loop with high row estimates — consider hash/merge join or add index
- Buffers shared read much higher than hit — working set exceeds memory
N+1 Query Detection
Symptoms: application issues one query per row (e.g., fetching related records in a loop).
Fixes:
- Use
JOINor subquery to fetch in one round-trip - ORM eager loading (
select_related/includes/with) - DataLoader pattern for GraphQL resolvers
Connection Pooling
| Tool | Protocol | Best For |
|------|----------|----------|
| PgBouncer | PostgreSQL | Transaction/statement pooling, low overhead |
| ProxySQL | MySQL | Query routing, read/write splitting |
| Built-in pool (HikariCP, SQL
… (nội dung đầy đủ có trong gói tải về)
Skill liên quan
- database-schema-designer – Dùng khi người dùng yêu cầu tạo sơ đồ ERD, chuẩn hóa schema cơ sở dữ liệu, thiết kế quan…
- onekgpd – Truy vấn bộ dữ liệu 1000 Genomes Project (3.202 cá thể đã giải trình tự toàn bộ bộ gen…
- deep-research – Thực hiện một cuộc nghiên cứu bài bản, đa nguồn cho câu hỏi hoặc quyết định quan trọng…
- jupyter-notebook – Lặp lại việc viết Python qua kernel Jupyter đang chạy (hamelnb).
- schema – Khi người dùng muốn thêm, sửa hoặc tối ưu schema markup và dữ liệu có cấu trúc trên…
- ontology-term-resolution – Chuyển nhãn khoa học dạng văn bản tự do thành ID thuật ngữ ontology và kiểm tra các…
- lambda-labs – Các instance GPU đám mây theo yêu cầu để huấn luyện ML.
- pacsomatic – Chuẩn bị và khởi chạy quy trình genomics nf-core/pacsomatic ghép cặp khối u-bình thường…