こんにちは。miyoshiです。
AWSクラウドプラクティショナー試験の学習メモです。
今回は、「スキーマ(Schema)」とは何か? を整理します。
特にRailsのマイグレーションとの関係をイメージしながら理解します。
✅ スキーマとは?
● 一言でいうと
「データベースの設計図」 です。
- どんなテーブルがあるか
- テーブルにどんなカラム(列)があるか
- カラムのデータ型(文字列・数値・日付など)
- テーブル同士の関係(外部キーなど)
つまり、データベースの構造を決めるルールのことです。
✅ Railsとの関係(schema.rbとの比較)
Railsでは、マイグレーションを実行するたびにdb/schema.rbが更新されます。
| 項目 | DBのスキーマ | Railsのschema.rb |
|---|---|---|
| 役割 | DB構造の定義そのもの | マイグレーション結果を反映した設計図ファイル |
| 更新方法 | CREATE TABLEなどSQLで直接変更 |
rails generate migration → rails db:migrate
|
| 実態 | DB内部に保持される | ソースコード上のファイル(設計図のコピー) |
✅ イメージ図
マイグレーションファイル(変更指示書)
↓ rails db:migrate
DB内部のスキーマ(本物の設計図)
↓
schema.rb(設計図のコピー)
つまり、スキーマ = DBの設計図であり、Railsではschema.rbがその写しというイメージです。
✅ AWSの文脈でのスキーマ
AWSでも、スキーマの概念は同じです。
-
RDS(リレーショナルDB)
→ しっかりスキーマを定義してからデータを保存(スキーマ・オン・ライト) -
Redshift(DWH)
→ 分析用にテーブル構造(スキーマ)を設計する必要あり -
S3(データレイク)
→ 保存時にはスキーマ不要(スキーマ・オン・リード、読み出すときに定義)
✅ スキーマの種類
- 物理スキーマ:実際にどのようにデータが保存されるか(物理的な構造)
- 論理スキーマ:テーブルやカラム、リレーションなどアプリから見える構造
AWSの試験では、基本的に「論理スキーマ(テーブル構造)」の意味で使われます。
✅ たとえ話で整理
- スキーマ = ビルの設計図
- テーブル = 各部屋
- カラム = 部屋の家具や設備
- マイグレーション(Rails) = 設計変更の申請書
- schema.rb = 設計図の最新版コピー
✅ 結論
- スキーマはDBの設計図そのもの
- RDSやRedshiftは保存前にスキーマをしっかり決める必要がある
- S3はスキーマを気にせず何でも保存できる(ただし分析時に必要になる)
✍️ 次回予告
次回は 「OLTPとOLAPの違い」 です。
✅ あわせて読みたい
💬 コメント・フィードバック歓迎
AWS学習メモとして、初学者の方の理解に役立つように書いています。
「ここもっと詳しく!」などあればぜひ教えてください。