com um clique
database-schema-design
Design database schema for the project
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Design database schema for the project
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
Use when creating pages under src/app/(site)/(authorized)/admin/. Covers list/detail/edit/create page patterns with DataTable/DataView/DataForm, repositories under src/repositories/, request schemas under src/requests/admin/, and AdminPageHeader breadcrumbs.
Use when modifying Better Auth + Prisma authentication: src/libraries/auth.ts, src/libraries/auth-client.ts, src/proxy.ts, src/services/auth_service.ts, auth-related actions.ts, or prisma/schema.prisma auth models (User/Session/Account/Verification). Covers session helpers, URL/secret env resolution, DB TLS, and PUBLIC_PATHS.
Use when creating or modifying files under src/repositories/, src/models/, or src/requests/. Covers BaseRepository inheritance (Prisma/API/Local/Airtable/Dify), Zod schema placement, and separation between repository and schema files.
Use when changing this template's mail delivery backend, reviewing email env setup, switching between `ses` and `smtp`, or adding a new provider such as Resend, SendGrid, Postmark, or Mailgun. Covers EMAIL_PROVIDER routing, EMAIL_FROM priority, dynamic import for Node-only SDKs, and test coverage for both email.test.ts and Better Auth callback smoke.
Use when adding or changing translations in messages/ja.json or messages/en.json, using getTranslations/useTranslations, or updating next-intl configuration under src/i18n/. Covers message key hierarchy, Server/Client Component APIs, dynamic and rich-text patterns, and JSON duplicate-key pitfalls.
Use when adding or modifying pages under src/app, or components under src/components (atoms/molecules/organisms) in this Next.js App Router project. Covers Server/Client Component boundary, Atomic Design placement, Server Actions in actions.ts, URL-based state management, sidebar active-state, and shadcn-only atoms rule.
| name | database-schema-design |
| description | Design database schema for the project |
ããã¯ãRDBã®ããŒã¿ã¹ããŒããèšèšããéã«ãå®ãã¹ãã«ãŒã«ãèšãããã®ã§ããã
ãã®ãããªã«ãŒã«ãèšããçç±ã¯ãã«ãŒã«ã®çµ±äžã«ãã£ãŠã¡ã³ããã³ã¹ããããã§ããããããšããã ãã§ãªããDB Schemaãã¶ã€ã³ã®éã«ãè¿·ã£ãããå²åŠã®éãããæãããããããšããªãããããã§ããã
ãããã£ãŠãããã«æžãããŠããã«ãŒã«ããèªåã®å²åŠãšéã£ãŠããããšæããéçºè ãããã¯ãã§ããããããããã®ãããžã§ã¯ããšããŠèšèšãéçºãããã®ã«é¢ããŠã¯ãããã§ç€ºãããã«ãŒã«ã«åã£ãŠèšèšãè¡ãããã«ã
RDB(Relational Database)ãšããŠãPostgreSQLãå©çšããããšãåæãšããã
data ã¯è€æ°åœ¢ã§ãããããããã¥ããããå©çšããªããã©ã€ããªãŒããŒã®ã«ã©ã å㯠id ãšãããuser_id ã®ããã«ããŒãã«åã®åæ°åœ¢ãã€ããæµåãããããããã§ã¯ãã¹ãŠ id ã§çµ±äžããã
ãã©ã€ããªãŒããŒã®åœ¢åŒã§ããããUUID v4 ããã㯠BigIntã®å€ãšããããã©ã€ããªãŒããŒã®åœ¢åŒã¯ããããžã§ã¯ãå šäœã§çµ±äžãããUUID ãšé£ç¶ããæ°å€ã®ã©ã¡ãã䜿ãã¹ããã¯ããããžã§ã¯ãã®æ§æ Œã«ãã£ãŠç°ãªãããIDãã€ãã£ãŠçæé ã«ãœãŒãããå¿ èŠãããããŒãã«ãæãå Žåã«ã¯ BigIntããããã§ãªããã° UUIDãå©çšãããšããã
ãªããæ°å€ã䜿ãå ŽåãInt (32bit) ã§ã¯ãªããBigInt (64bit) ãå©çšãããããã¯ãå°æ¥æ¡ããµããçºçãããªã¹ã¯ãå°ãã§ãæããããã§ããã
ã«ã©ã åã¯Snake Caseã«ãããuser_id ã access_token ãšãã£ã圢åŒã«ãªãã
ã«ã©ã åã¯ããããèŠãã ãã§äœãæ ŒçŽãããŠããã®ããããããæ³åã§ãããã®ãæãŸããããããã£ãŠããªãã¹ãäžè¬çãªåç§°ãçšããããããžã§ã¯ãå ã§åãæå³ã®ã«ã©ã ã¯å¿ ãåãååã«ããããããããããæå€§ééèŠèŠããã
æ¥æã衚ãã«ã©ã ã¯ãcreated_at ã registered_at ã®ããã«ãéå»åœ¢ã®åŸã« _at ã®Prefixãã€ããã
ããŒã¿å㯠BigInt ãå©çšããUnix Timestampã§å€ãæ±ãããã®çç±ã¯ãparseãç°¡åã§ãã¿ã€ã ãŸãŒã³ã«ãã圱é¿ãåãããã»ãšãã©ã®èšèªã®æéãæ±ãã©ã€ãã©ãªã§æšæºã§ãµããŒããããŠããããã§ãããRDBMSã¯DateTimeãæ±ãå°çšã®åãçšæããŠããããã¿ã€ã ãŸãŒã³ã®åãæ±ãã«å·®ç°ãããããŸãã¿ã€ã ãŸãŒã³ã®å€ãããã®DBã®èšå®ïŒãOSã®èšå®ïŒã«äŸåãããããããŒã¿ããªãã£ãäžããæããããããã§ããã
ãã ããã¿ã€ã ãŸãŒã³ã®é¢ä¿ã®ãªãããæ¥ä»ãã®ããŒã¿ã«é¢ããŠã¯ãDateåãå©çšãããããããã®æ
å ±ããæ¬åœã«æ¥ä»ã ãã§å°æ¥ã«æž¡ã£ãŠäºè¶³ããŠããã®ãã¯ãããåå³ããå¿
èŠããããããšãã°ãç»é²æ¥ããä¿åããŠããããã£ãå Žåã§ããå°æ¥æéãå¿
èŠã«ãªããããããªãã®ã§ãUnixTimestamp ã«ããŠãããã»ããè¯ããããããªãã
ããã¹ãã«ã©ã 㯠VARCHAR ã§ã¯ãªããTEXTãå©çšãããããã¯ãPostgreSQLã«ãããŠã¯ã2ã€ã®ã¿ã€ãã®éãã¯ãVARCHAR ãæååã®é·ãããã§ãã¯ããããšã ãã§ããããã以å€ã¯åãã§ããããã§ããã
ãã¹ãŠã®ããŒãã«ã«ã¯ãã¬ã³ãŒãã®äœææ¥æã衚ã created_at ãšãæçµæŽæ°æ¥æã衚ã updated_at ãçšæããäœææãæŽæ°æã«èªåã§ãã®æéãã»ãããããããã«ããã
ãã®2ã€ã®ã«ã©ã ã«é¢ããŠã¯ãæ¥æã衚ããŠããã UnixTimestampã§ã¯ãªããTIMESTAMPåãå©çšããã
ãã®çç±ã¯ããããã®ããŒã¿ããã¬ãŒã ã¯ãŒã¯ã«ãã£ãŠã¯èªåçã«æ±ãããããããã®ä»æ§ã«åãããããã§ããã
ãªãããã®2ã€ã®æ å ±ã¯ãçŽç²ã«ãã®ã³ã°ãšãã©ãã«æã®åé¡åãåãã«å©çšããã«ãšã©ãããµãŒãã¹ãã·ã¹ãã ã®ããžãã¹ããžãã¯äžã«ãããŠããã®å€ã䜿ã£ãŠäœãã倿ããŠã¯ãªããªãã
ããšãã°ãusers ã® created_atãå©çšããŠããŠãŒã¶ãŒã®ç»é²æ¥æã倿ããŠã¯ãªããªãããããŠãŒã¶ãŒã®ç»é²æ¥æãå©çšããå Žåã¯ããã®ä»£ããã«ãregistered_atãšããå¥ã®ã«ã©ã ïŒIntåïŒãçšæããŠå©çšããã
ããã¯ãcreated_atãšupdated_atã®ã«ã©ã ããããŒã¿ã®ç§»è¡ãªã©æå³ããªãã¿ã€ãã³ã°ã§å€æŽãããå¯èœæ§ãããããã§ããã
ãã©ã°ã衚ãã«ã©ã ã¯ãis_ ãhas_ ãªã©ã®Prefixãã€ããããšã§ããããã¯ã£ãããšãã©ã°ã§ãããboolean ã§ããããšããããããã«ãããPrefixãis_ ãªã®ãhas_ãªã®ãããã以å€ãªã®ãã¯ããã©ã°ã®æå³ã«ãã£ãŠé©åãªãã®ãéžæããã
ã«ã©ã ã«æ ŒçŽããããŒã¿ãšããŠãããžãã¯ãã³ããŒã®å©çšã¯çµ¶å¯Ÿã«é¿ããã
ããšãã° orders ãšããããŒãã«ã«ã泚æã®ç¶æ³ã衚ã status ãšããã«ã©ã ããã£ããšããããã®å Žåããã®ã«ã©ã ã®ããŒã¿åãIntã«ããŠã1ã ã£ããæ³šæå®äºã2ã ã£ããé
éåŠçå®äºãã®ãããªèšèšãããããšã¯çµ¶å¯Ÿã«ããŠã¯ãªããªãã
ãªããªãããã®å Žåãããããã®æ°å€ãäœã衚ããŠããããç¥ããªããã°ãå 容ãçè§£ããããšãã§ããªãããã§ããããããŒãã«ã ããèŠãŠãæå³ãããããçè§£ã§ããããšããååã«åããããšã«ãªãã
ãããã£ãŠãstatusã®ã«ã©ã ã¯æåååãšããŠãordered ã delivered ãšãã£ãæååãæ ŒçŽããããã«ããã
ååãšããŠNULLã¯èš±å®¹ããªãèšèšãšãããNULLã蚱容ããå Žåã¯ãNULLã«æå³ãããå Žåã®ã¿ãšãããNULLã«æå³ãããå Žåãšã¯ãNULLã§ããããšã§æç€ºçã«ããã®ã«ã©ã ã®ããŒã¿ãååšããªãããšã衚ãå Žåã§ããã
ãªã©ã§ãããNULLã蚱容ããå Žåã¯ãã³ã¡ã³ãã§ãã®çç±ãèšè¿°ããã
ããžãã¹èŠä»¶çã«æãããªåæå€ãšããŠèšå®å¯èœãªæ å ±ãååšããå Žåã¯ããã®å€ãèšå®ããã
ãã ããåæå€å€ãäžæã§ãæç€ºçã«ã¬ã³ãŒãäœææã«å€ãèšå®ããããšãããžãã¹èŠä»¶äžå¿ é ãªå Žåã¯ãããã©ã«ãå€ãèšå®ããªããããšãã°ãå»çç³»ã®ã·ã¹ãã ã§ãæ£è ã®äœæž©ãèšé²ããããŒãã«ãããå Žåããã®ããŒãã«ã«ã¯ããã©ã«ãå€ãèšå®ãããšãééã£ãæ å ±ãèšé²ãããæããããã®ã§ãèšé²ããªãã
ååãšããŠãããžãã¹äžã®è¿œè·¡å¯èœæ§ïŒãã¬ãŒãµããªãã£ïŒãå¿ èŠãªããŒã¿ã«ã¯è«çåé€ãæ¡çšããããæäœéã«ãšã©ããã
è«çåé€ãè¡ãå Žå㯠deleted_at ãšããã«ã©ã ãçšæãããã®ã«ã©ã ã«åé€ãè¡ãããæ¥æãæ ŒçŽãããNULLã§ããã°åé€ãããŠããªãããšããããã ãããã¬ãŒã ã¯ãŒã¯ã«ãã£ãŠç°ãªãæ¹æ³ãåãããŠããå Žåã¯ãããã«æºããæ§é ãšããã
ããŒãã«å士ã®Relationã衚çŸããå Žåã¯ãå€éšããŒãèšå®ãããããã®ååã¯ãäŸãã° users ããŒãã«ã® id ã«ã©ã ãå¥ã®ããŒãã«ããæå®ããå Žåã«ã¯ user_id ãšããæãã§ãããŒãã«åã®åæ°åœ¢ã«ã«ã©ã åãé£çµããŠè¡šãã
Many to many ã®Relationã衚ãå Žåã¯ãRelation Tableãå®çŸ©ãããããã®å Žåã¯ãäŸãã° users ãš roles ã®å Žåã§ããã°ãuser_roles ã®ããã«ãçæ¹ã®åæ°åœ¢ã«ä»æ¹ã®è€æ°åœ¢ãé£çµãã圢ãšããŠãå
éšã«ã¯ user_id ãš role_id ãå«ãŸããããã«ãããã©ã¡ããåæ°åœ¢ã«ãããã¯ãããŒãã«å士ã®é¢ä¿æ§ãèæ
®ããããéèŠãšæãããããŒã¿ãéžæããã