[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-954d0e34-def3-4e18-b07b-30ad60b1f8ba":3,"$f_l82Yf9tG70DWTjXasJP8bk3hKppbYk7JaCYE68ot-E":42},{"id":4,"title":5,"description":6,"categoryId":7,"moduleId":8,"tags":9,"prompt":10,"icon":11,"source":12,"sourceUrl":13,"authorId":14,"authorName":15,"isPublic":16,"stars":17,"runs":18,"createdAt":19,"updatedAt":19,"module":20,"category":27,"packages":33},"954d0e34-def3-4e18-b07b-30ad60b1f8ba","database-design","数据库设计原则与决策。模式设计、索引策略、ORM选择、无服务器数据库。","cat_coding_backend","mod_coding","sickn33,coding","---\nname: database-design\ndescription: \"Database design principles and decision-making. Schema design, indexing strategy, ORM selection, serverless databases.\"\nrisk: safe\nsource: community\ndate_added: \"2026-02-27\"\n---\n\n# Database Design\n\n> **Learn to THINK, not copy SQL patterns.**\n\n## 🎯 Selective Reading Rule\n\n**Read ONLY files relevant to the request!** Check the content map, find what you need.\n\n| File | Description | When to Read |\n|------|-------------|--------------|\n| `database-selection.md` | PostgreSQL vs Neon vs Turso vs SQLite | Choosing database |\n| `orm-selection.md` | Drizzle vs Prisma vs Kysely | Choosing ORM |\n| `schema-design.md` | Normalization, PKs, relationships | Designing schema |\n| `indexing.md` | Index types, composite indexes | Performance tuning |\n| `optimization.md` | N+1, EXPLAIN ANALYZE | Query optimization |\n| `migrations.md` | Safe migrations, serverless DBs | Schema changes |\n\n---\n\n## ⚠️ Core Principle\n\n- ASK user for database preferences when unclear\n- Choose database\u002FORM based on CONTEXT\n- Don't default to PostgreSQL for everything\n\n---\n\n## Decision Checklist\n\nBefore designing schema:\n\n- [ ] Asked user about database preference?\n- [ ] Chosen database for THIS context?\n- [ ] Considered deployment environment?\n- [ ] Planned index strategy?\n- [ ] Defined relationship types?\n\n---\n\n## Anti-Patterns\n\n❌ Default to PostgreSQL for simple apps (SQLite may suffice)\n❌ Skip indexing\n❌ Use SELECT * in production\n❌ Store JSON when structured data is better\n❌ Ignore N+1 queries\n\n## When to Use\nThis skill is applicable to execute the workflow or actions described in the overview.\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.\n","","imported","https:\u002F\u002Fgithub.com\u002Fsickn33\u002Fantigravity-awesome-skills","user_system_seed","SkillOPIC",true,109,1167,"2026-05-16 13:14:16",{"id":8,"name":21,"slug":22,"icon":23,"description":24,"sort":25,"createdAt":26},"编程开发","coding","mdi-code-braces","代码生成、调试、审查，提升开发效率",2,"2026-05-16 12:53:40",{"id":7,"name":28,"slug":29,"icon":30,"description":31,"moduleId":8,"sort":25,"skillCount":32,"createdAt":26},"后端开发","backend","mdi-server","API、数据库、服务端架构",296,[34],{"id":35,"skillId":4,"version":36,"fileName":37,"fileSize":38,"filePath":39,"fileHash":40,"manifest":41,"createdAt":19},"3c36a318-d7b9-4720-9428-b8eee6d97727","1.0.0","database-design.zip",7054,"uploads\u002Fskills\u002F954d0e34-def3-4e18-b07b-30ad60b1f8ba\u002Fdatabase-design.zip","7ebe5516ebfb973c6518de97e4a55cecf2c33a8472ed0487fc2a8cb9cf6a9cd1","[{\"path\":\"SKILL.md\",\"isDirectory\":false,\"size\":1960},{\"path\":\"database-selection.md\",\"isDirectory\":false,\"size\":1137},{\"path\":\"indexing.md\",\"isDirectory\":false,\"size\":892},{\"path\":\"migrations.md\",\"isDirectory\":false,\"size\":1107},{\"path\":\"optimization.md\",\"isDirectory\":false,\"size\":902},{\"path\":\"orm-selection.md\",\"isDirectory\":false,\"size\":771},{\"path\":\"schema-design.md\",\"isDirectory\":false,\"size\":1470},{\"path\":\"scripts\u002Fschema_validator.py\",\"isDirectory\":false,\"size\":5375}]",{"code":43,"message":44,"data":45},200,"success",{"items":46,"stats":47,"page":50},[],{"averageRating":48,"totalRatings":48,"ratingCounts":49},0,[48,48,48,48,48],{"limit":51,"offset":48,"hasMore":52,"nextOffset":51,"ratedOnly":16},15,false]