まとめと練習
重要なポイント
- ほとんどのアプリは3つの保存形態 — リレーショナル、ドキュメント、キーバリュー — のうち1つしか必要とせず、リレーショナルが安全なデフォルトだ。
- マネージドデータベースから始めよう。データとスキーマの判断はあなたが、サーバーの稼働はプラットフォームが担う。
- 良いスキーマ設計とは、正直な型、外部キーと制約、妥当なインデックス、そして重複のないデータを意味する。
- すべてのマイグレーションを一方通行の扉として扱え: dropやリネームの前にバックアップし、AIが書いたマイグレーションは入念にレビューする。
- ユーザー入力がにそのまま連結されないよう、常にパラメータ化クエリを要求せよ。
やってみよう
小さなアプリのアイデアを1つ選び、そのエンティティと関係をまず普通の日本語で書き出そう。次にその説明をAIに渡してスキーマと前進マイグレーションを依頼し — 何かを実行する前に、この章のチェックリストで結果をレビューしよう。
Design a relational schema for a personal bookmarks app.
Entities and relationships:
- A user has many bookmarks.
- A bookmark belongs to one user, has a URL, a title, and many tags.
- A tag can apply to many bookmarks.
Requirements:
- Use UUID primary keys and created_at timestamps.
- Enforce relationships with foreign keys.
- Add indexes for the columns we'll filter on.
- Give me the schema as SQL plus a forward migration file.
- Flag any migration step that drops or renames so I can back up first.