Initial commit
This commit is contained in:
15
.claude-plugin/plugin.json
Normal file
15
.claude-plugin/plugin.json
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
{
|
||||||
|
"name": "database-schema-designer",
|
||||||
|
"description": "Design and visualize database schemas with normalization guidance, relationship mapping, and ERD generation",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"author": {
|
||||||
|
"name": "Claude Code Plugins",
|
||||||
|
"email": "[email protected]"
|
||||||
|
},
|
||||||
|
"skills": [
|
||||||
|
"./skills"
|
||||||
|
],
|
||||||
|
"commands": [
|
||||||
|
"./commands"
|
||||||
|
]
|
||||||
|
}
|
||||||
3
README.md
Normal file
3
README.md
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
# database-schema-designer
|
||||||
|
|
||||||
|
Design and visualize database schemas with normalization guidance, relationship mapping, and ERD generation
|
||||||
161
commands/design-schema.md
Normal file
161
commands/design-schema.md
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
---
|
||||||
|
description: Design database schemas with best practices
|
||||||
|
---
|
||||||
|
|
||||||
|
# Database Schema Designer
|
||||||
|
|
||||||
|
You are a database schema design expert. Help users create normalized, efficient database schemas.
|
||||||
|
|
||||||
|
## Design Principles
|
||||||
|
|
||||||
|
1. **Normalization**
|
||||||
|
- First Normal Form (1NF): Atomic values
|
||||||
|
- Second Normal Form (2NF): No partial dependencies
|
||||||
|
- Third Normal Form (3NF): No transitive dependencies
|
||||||
|
- BCNF: Boyce-Codd Normal Form
|
||||||
|
- When to denormalize for performance
|
||||||
|
|
||||||
|
2. **Relationships**
|
||||||
|
- One-to-One: User ↔ Profile
|
||||||
|
- One-to-Many: User → Posts
|
||||||
|
- Many-to-Many: Students ↔ Courses (join table)
|
||||||
|
- Self-referential: Employee → Manager
|
||||||
|
|
||||||
|
3. **Data Types**
|
||||||
|
- Choose appropriate types
|
||||||
|
- Consider storage efficiency
|
||||||
|
- Plan for scalability
|
||||||
|
- Use constraints effectively
|
||||||
|
|
||||||
|
4. **Indexing Strategy**
|
||||||
|
- Primary keys
|
||||||
|
- Foreign keys
|
||||||
|
- Unique constraints
|
||||||
|
- Composite indexes
|
||||||
|
- Covering indexes
|
||||||
|
|
||||||
|
## Schema Design Checklist
|
||||||
|
|
||||||
|
- [ ] All tables have primary keys
|
||||||
|
- [ ] Foreign keys are indexed
|
||||||
|
- [ ] Appropriate data types used
|
||||||
|
- [ ] NULL handling considered
|
||||||
|
- [ ] Unique constraints where needed
|
||||||
|
- [ ] Default values defined
|
||||||
|
- [ ] Timestamps (created_at, updated_at)
|
||||||
|
- [ ] Soft delete support (deleted_at)
|
||||||
|
- [ ] Proper normalization level
|
||||||
|
- [ ] Performance indexes identified
|
||||||
|
|
||||||
|
## Example Schema (E-commerce)
|
||||||
|
|
||||||
|
```sql
|
||||||
|
-- Users table
|
||||||
|
CREATE TABLE users (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
email VARCHAR(255) UNIQUE NOT NULL,
|
||||||
|
password_hash VARCHAR(255) NOT NULL,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
|
||||||
|
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Products table
|
||||||
|
CREATE TABLE products (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
name VARCHAR(255) NOT NULL,
|
||||||
|
description TEXT,
|
||||||
|
price DECIMAL(10, 2) NOT NULL,
|
||||||
|
stock_quantity INTEGER DEFAULT 0,
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Orders table
|
||||||
|
CREATE TABLE orders (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
user_id INTEGER REFERENCES users(id),
|
||||||
|
total DECIMAL(10, 2) NOT NULL,
|
||||||
|
status VARCHAR(50) DEFAULT 'pending',
|
||||||
|
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Order items (Many-to-Many join table)
|
||||||
|
CREATE TABLE order_items (
|
||||||
|
id SERIAL PRIMARY KEY,
|
||||||
|
order_id INTEGER REFERENCES orders(id) ON DELETE CASCADE,
|
||||||
|
product_id INTEGER REFERENCES products(id),
|
||||||
|
quantity INTEGER NOT NULL,
|
||||||
|
price DECIMAL(10, 2) NOT NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
-- Indexes
|
||||||
|
CREATE INDEX idx_orders_user_id ON orders(user_id);
|
||||||
|
CREATE INDEX idx_order_items_order_id ON order_items(order_id);
|
||||||
|
CREATE INDEX idx_order_items_product_id ON order_items(product_id);
|
||||||
|
```
|
||||||
|
|
||||||
|
## ERD Representation (Mermaid)
|
||||||
|
|
||||||
|
```mermaid
|
||||||
|
erDiagram
|
||||||
|
USERS ||--o{ ORDERS : places
|
||||||
|
ORDERS ||--|{ ORDER_ITEMS : contains
|
||||||
|
PRODUCTS ||--o{ ORDER_ITEMS : included_in
|
||||||
|
|
||||||
|
USERS {
|
||||||
|
int id PK
|
||||||
|
string email UK
|
||||||
|
string password_hash
|
||||||
|
timestamp created_at
|
||||||
|
}
|
||||||
|
|
||||||
|
PRODUCTS {
|
||||||
|
int id PK
|
||||||
|
string name
|
||||||
|
decimal price
|
||||||
|
int stock_quantity
|
||||||
|
}
|
||||||
|
|
||||||
|
ORDERS {
|
||||||
|
int id PK
|
||||||
|
int user_id FK
|
||||||
|
decimal total
|
||||||
|
string status
|
||||||
|
timestamp created_at
|
||||||
|
}
|
||||||
|
|
||||||
|
ORDER_ITEMS {
|
||||||
|
int id PK
|
||||||
|
int order_id FK
|
||||||
|
int product_id FK
|
||||||
|
int quantity
|
||||||
|
decimal price
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Common Patterns
|
||||||
|
|
||||||
|
### Audit Trail
|
||||||
|
```sql
|
||||||
|
ALTER TABLE table_name ADD COLUMN created_by INTEGER REFERENCES users(id);
|
||||||
|
ALTER TABLE table_name ADD COLUMN updated_by INTEGER REFERENCES users(id);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Soft Delete
|
||||||
|
```sql
|
||||||
|
ALTER TABLE table_name ADD COLUMN deleted_at TIMESTAMP NULL;
|
||||||
|
CREATE INDEX idx_table_deleted_at ON table_name(deleted_at);
|
||||||
|
```
|
||||||
|
|
||||||
|
### Versioning
|
||||||
|
```sql
|
||||||
|
ALTER TABLE table_name ADD COLUMN version INTEGER DEFAULT 1;
|
||||||
|
```
|
||||||
|
|
||||||
|
## Output Format
|
||||||
|
|
||||||
|
Provide:
|
||||||
|
1. SQL CREATE TABLE statements
|
||||||
|
2. Relationship diagram (mermaid ERD)
|
||||||
|
3. Index recommendations
|
||||||
|
4. Normalization analysis
|
||||||
|
5. Potential issues and solutions
|
||||||
61
plugin.lock.json
Normal file
61
plugin.lock.json
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
{
|
||||||
|
"$schema": "internal://schemas/plugin.lock.v1.json",
|
||||||
|
"pluginId": "gh:jeremylongshore/claude-code-plugins-plus:plugins/database/database-schema-designer",
|
||||||
|
"normalized": {
|
||||||
|
"repo": null,
|
||||||
|
"ref": "refs/tags/v20251128.0",
|
||||||
|
"commit": "39a6d7913e32e01f1691022768589173bb421231",
|
||||||
|
"treeHash": "6f2c3416171c6fc8f03ec05e25631ca7aba51e13baf3c668537e724a68450488",
|
||||||
|
"generatedAt": "2025-11-28T10:18:21.401403Z",
|
||||||
|
"toolVersion": "publish_plugins.py@0.2.0"
|
||||||
|
},
|
||||||
|
"origin": {
|
||||||
|
"remote": "git@github.com:zhongweili/42plugin-data.git",
|
||||||
|
"branch": "master",
|
||||||
|
"commit": "aa1497ed0949fd50e99e70d6324a29c5b34f9390",
|
||||||
|
"repoRoot": "/Users/zhongweili/projects/openmind/42plugin-data"
|
||||||
|
},
|
||||||
|
"manifest": {
|
||||||
|
"name": "database-schema-designer",
|
||||||
|
"description": "Design and visualize database schemas with normalization guidance, relationship mapping, and ERD generation",
|
||||||
|
"version": "1.0.0"
|
||||||
|
},
|
||||||
|
"content": {
|
||||||
|
"files": [
|
||||||
|
{
|
||||||
|
"path": "README.md",
|
||||||
|
"sha256": "1dae624a626b4557d6d645817ea2d77b888e47d04b22ac3d73b26a40c43bb4c7"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": ".claude-plugin/plugin.json",
|
||||||
|
"sha256": "0b43a029e5239f7d8d80482868fbd4590de7f21d6407aeea54a7542bf58646e5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "commands/design-schema.md",
|
||||||
|
"sha256": "770e38c94e91b9ca20fe22b584ef19a4dcd06be0be3bda0033fea72eaf2d57aa"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/database-schema-designer/SKILL.md",
|
||||||
|
"sha256": "7a1135c372dc70947652fa5071db62add5122603b53ef105800dcb5d4bfd880d"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/database-schema-designer/references/README.md",
|
||||||
|
"sha256": "4439b331aea5c9b4edaa449287b5bcf50c56c764e930f79f18a03c600ec38502"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/database-schema-designer/scripts/README.md",
|
||||||
|
"sha256": "079453ac94a2643b5db5714cac805126174a0ad7758f73ef965750e50c06b544"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"path": "skills/database-schema-designer/assets/README.md",
|
||||||
|
"sha256": "fe5b684daacdb520c38fd39dfd1f64ff12868d59c2f0d1a48efdbfc6482adfef"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"dirSha256": "6f2c3416171c6fc8f03ec05e25631ca7aba51e13baf3c668537e724a68450488"
|
||||||
|
},
|
||||||
|
"security": {
|
||||||
|
"scannedAt": null,
|
||||||
|
"scannerVersion": null,
|
||||||
|
"flags": []
|
||||||
|
}
|
||||||
|
}
|
||||||
58
skills/database-schema-designer/SKILL.md
Normal file
58
skills/database-schema-designer/SKILL.md
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
---
|
||||||
|
name: designing-database-schemas
|
||||||
|
description: |
|
||||||
|
This skill enables Claude to design and visualize database schemas. It leverages normalization guidance (1NF through BCNF), relationship mapping, and ERD generation to create efficient and well-structured databases. Use this skill when the user requests to "design a database schema", "create a database model", "generate an ERD", "normalize a database", or needs help with "database design best practices". The skill is triggered by terms like "database schema", "ERD diagram", "database normalization", and "relational database design".
|
||||||
|
allowed-tools: Read, Write, Edit, Grep, Glob, Bash
|
||||||
|
version: 1.0.0
|
||||||
|
---
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
|
||||||
|
This skill assists in designing robust and normalized database schemas. It provides guidance on normalization principles, helps map relationships between entities, generates ERD diagrams for visualization, and ultimately produces SQL CREATE statements.
|
||||||
|
|
||||||
|
## How It Works
|
||||||
|
|
||||||
|
1. **Schema Definition**: Claude analyzes the user's request to understand the application's data requirements.
|
||||||
|
2. **Normalization & Relationship Mapping**: Claude applies normalization principles (1NF to BCNF) and defines relationships between entities (one-to-one, one-to-many, many-to-many).
|
||||||
|
3. **ERD Generation**: Claude generates a Mermaid diagram representing the Entity-Relationship Diagram.
|
||||||
|
4. **SQL Generation**: Claude creates SQL CREATE statements for the tables, columns, indexes, and constraints.
|
||||||
|
|
||||||
|
## When to Use This Skill
|
||||||
|
|
||||||
|
This skill activates when you need to:
|
||||||
|
- Design a new database schema from scratch.
|
||||||
|
- Normalize an existing database schema.
|
||||||
|
- Generate an ERD diagram for a database.
|
||||||
|
- Create SQL CREATE statements for a database.
|
||||||
|
|
||||||
|
## Examples
|
||||||
|
|
||||||
|
### Example 1: Designing a Social Media Database
|
||||||
|
|
||||||
|
User request: "Design a database schema for a social media application with users, posts, and comments."
|
||||||
|
|
||||||
|
The skill will:
|
||||||
|
1. Design tables for users, posts, and comments, including relevant attributes (e.g., user_id, username, post_id, content, timestamp).
|
||||||
|
2. Define relationships between the tables (e.g., one user can have many posts, one post can have many comments).
|
||||||
|
3. Generate an ERD diagram visualizing the relationships.
|
||||||
|
4. Create SQL CREATE TABLE statements for the tables, including primary keys, foreign keys, and indexes.
|
||||||
|
|
||||||
|
### Example 2: Normalizing an E-commerce Database
|
||||||
|
|
||||||
|
User request: "Normalize a database schema for an e-commerce application with customers, orders, and products."
|
||||||
|
|
||||||
|
The skill will:
|
||||||
|
1. Analyze the existing schema for normalization violations.
|
||||||
|
2. Decompose tables to eliminate redundancy and improve data integrity.
|
||||||
|
3. Create new tables and relationships to achieve a normalized schema (e.g., separating product details into a separate table).
|
||||||
|
4. Generate SQL CREATE TABLE statements for the new tables and ALTER TABLE statements to modify existing tables.
|
||||||
|
|
||||||
|
## Best Practices
|
||||||
|
|
||||||
|
- **Normalization**: Always aim for at least 3NF to minimize data redundancy and improve data integrity. Consider BCNF for more complex scenarios.
|
||||||
|
- **Indexing**: Add indexes to frequently queried columns to improve query performance.
|
||||||
|
- **Relationship Integrity**: Use foreign keys to enforce referential integrity and prevent orphaned records.
|
||||||
|
|
||||||
|
## Integration
|
||||||
|
|
||||||
|
This skill can be integrated with other Claude Code plugins, such as a SQL execution plugin, to automatically create the database schema in a database server. It can also work with a documentation plugin to generate documentation for the database schema.
|
||||||
7
skills/database-schema-designer/assets/README.md
Normal file
7
skills/database-schema-designer/assets/README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Assets
|
||||||
|
|
||||||
|
Bundled resources for database-schema-designer skill
|
||||||
|
|
||||||
|
- [ ] schema_template.json: A JSON template for defining database schemas.
|
||||||
|
- [ ] example_schemas/: Directory containing example database schemas for various applications (e.g., e-commerce, social media, CRM).
|
||||||
|
- [ ] erd_examples/: Directory containing example ERD diagrams in Mermaid syntax.
|
||||||
8
skills/database-schema-designer/references/README.md
Normal file
8
skills/database-schema-designer/references/README.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# References
|
||||||
|
|
||||||
|
Bundled resources for database-schema-designer skill
|
||||||
|
|
||||||
|
- [ ] normalization_rules.md: Detailed explanation of database normalization rules (1NF through BCNF).
|
||||||
|
- [ ] erd_syntax.md: Documentation on Mermaid ERD syntax.
|
||||||
|
- [ ] database_design_best_practices.md: Industry-standard database design patterns and anti-patterns.
|
||||||
|
- [ ] sql_dialect_differences.md: Highlights differences in SQL syntax across different database systems (e.g., PostgreSQL, MySQL, SQLite).
|
||||||
7
skills/database-schema-designer/scripts/README.md
Normal file
7
skills/database-schema-designer/scripts/README.md
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
# Scripts
|
||||||
|
|
||||||
|
Bundled resources for database-schema-designer skill
|
||||||
|
|
||||||
|
- [ ] schema_validation.py: Validates a database schema against best practices and normalization rules.
|
||||||
|
- [ ] erd_generator.py: Generates a Mermaid ERD diagram from a database schema definition.
|
||||||
|
- [ ] sql_generator.py: Generates SQL CREATE statements from a database schema definition.
|
||||||
Reference in New Issue
Block a user