01 / IT FOUNDATION
この講座で、何をできるようにするか。
顧客・商品・注文を別の表へ設計し、整合性を保ちながら登録・検索・結合・集計を行う。
目安24時間。説明・調査・演習・成果物作成・レビューを含む学習計画です。本文を読むだけでこの時間の実習を完了したことにはなりません。進み方と経験に応じて調整します。
学習目標と確認ポイント詳しく見る
- テーブル・型・キーを説明し、ER図と項目定義を作る。
- 正規化と更新の矛盾を説明し、正規化の前後比較を作る。
- SELECT・WHERE・ORDER BYを説明し、検索SQLと期待結果を作る。
- JOIN・集計・重複を説明し、集計SQLと検算表を作る。
- 更新・トランザクションを説明し、更新・取消の記録を作る。
- インデックスと安全な入力を説明し、性能比較と安全なSQL例を作る。
ブラウザーで本文・アニメ・問題を確認できます。実機演習は会社が用意した学習環境を使い、Python・Linux・Git・DB等の準備状況を確認してから進めます。
Python・SQL・ログ・架空パケット表・テスト・APIのスターターと説明書を同梱しています。APIは認証・認可等を受講者が追加する未完成の学習用で、公開用完成品ではありません。
共通演習キットをダウンロード
02 / IT FOUNDATION
仕組みを理解し、手を動かして確かめる。
テーブル・型・キー
詳しく見る
学習ブロック 1 / 目安4時間(説明・調査・演習・記録・レビュー)
テーブルは行と列でデータを表します。主キーは行を識別し、外部キーは別表との関係を表します。NULLは値がない状態等を表し、空文字や0と同一ではありません。DB製品によって型や制約の扱いが違うため、使う製品で確かめます。
customers、products、orders、order_itemsを紙に描き、主キーと参照先を付ける。
前提・操作・観察結果・理由・未確認を分けて残します。手順を他の人に説明し、同じ入力で同じ結果になるか確認してください。
正規化と更新の矛盾
詳しく見る
学習ブロック 2 / 目安4時間(説明・調査・演習・記録・レビュー)
顧客名を注文の各行へ重複させると、変更時に一部だけ古い値を残す問題が起きます。事実の持ち場所を分け、必要なとき結合する設計を考えます。一方、注文時点の価格等、履歴として残すべき情報は現在値と区別します。
商品マスターの価格と注文明細の購入単価を分け、どちらを変更しても過去の注文が変わらない設計にする。
前提・操作・観察結果・理由・未確認を分けて残します。手順を他の人に説明し、同じ入力で同じ結果になるか確認してください。
SELECT・WHERE・ORDER BY
詳しく見る
学習ブロック 3 / 目安4時間(説明・調査・演習・記録・レビュー)
SELECTで必要な列を取得し、WHEREで条件、ORDER BYで並びを指定します。条件なしの取得と条件付きの取得、NULLの比較、境界の日付などを区別します。SQLの結果に順番が必要なら、明示して確認します。
同梱のSQL演習で特定顧客の注文を検索し、日付と金額の条件を変えて件数を照合する。
前提・操作・観察結果・理由・未確認を分けて残します。手順を他の人に説明し、同じ入力で同じ結果になるか確認してください。
JOIN・集計・重複
詳しく見る
学習ブロック 4 / 目安4時間(説明・調査・演習・記録・レビュー)
JOINはキーに基づいて表をつなぎます。一対多の結合で行が増えることを考えず金額をSUMすると、二重集計になる場合があります。COUNT、SUM、GROUP BYと、どの単位で一行にしたいかを合わせます。
顧客別の注文合計を作り、件数と単価×数量を手計算でも検証する。注文なし顧客も必要かを決める。
前提・操作・観察結果・理由・未確認を分けて残します。手順を他の人に説明し、同じ入力で同じ結果になるか確認してください。
更新・トランザクション
詳しく見る
学習ブロック 5 / 目安4時間(説明・調査・演習・記録・レビュー)
INSERT、UPDATE、DELETEはデータを変えます。条件をSELECTで先に確認し、関連する更新をトランザクションとしてまとめます。途中の失敗時に一部だけ確定すると、注文と在庫等が食い違う場合があります。
メモリー上の演習DBでBEGIN、更新、ROLLBACKを試し、取り消し後の値を確認する。別にCOMMITの結果も比べる。
前提・操作・観察結果・理由・未確認を分けて残します。手順を他の人に説明し、同じ入力で同じ結果になるか確認してください。
インデックスと安全な入力
詳しく見る
学習ブロック 6 / 目安4時間(説明・調査・演習・記録・レビュー)
インデックスは検索を助けますが、保存容量や更新時の負荷もあります。遅いSQLは条件、件数、実行計画等を見て確認します。入力値を文字列連結でSQLへ埋め込まず、プレースホルダーを利用します。
EXPLAIN QUERY PLANで索引前後を比べ、Pythonの?プレースホルダーで入力値を渡す。
前提・操作・観察結果・理由・未確認を分けて残します。手順を他の人に説明し、同じ入力で同じ結果になるか確認してください。
SQLを読み、実行結果を検算する
python3 sql_lab.py 期待:Customer A=1600、Customer B=900、TOTAL=2500 ROLLBACK price: 500 RESTORED order rows: 2 SELECT c.name, SUM(i.quantity * i.unit_price) FROM customers c JOIN orders o ON o.customer_id = c.id JOIN order_items i ON i.order_id = o.id GROUP BY c.id, c.name ORDER BY c.id; 課題:注文なし顧客も表示する場合、結合とNULLの扱いをどう変えるか。 索引の前後はEXPLAIN QUERY PLANで観察する。
03 / IT FOUNDATION
仕事のアニメ:データベースとSQLを考える。
新人・アオイさんと先輩・ミナトさんの会話で、「データベースとSQL」を学びます。最初の場面は「テーブルは行と列でデータを表します。」。何を確かめ、どう対応するかを順に見ていきましょう。
テーブルは行と列でデータを表します。
約12秒ごとに場面が切り替わります。再生中も一時停止でき、「前へ」「次へ」で自分のペースで読めます。最終場面で停止します。
アニメの内容をまとめて文章で読む
1. テーブル・型・キー
アオイ:テーブルは行と列でデータを表します。
学習ポイント:ER図と項目定義
2. 正規化と更新の矛盾
ミナト:顧客名を注文の各行へ重複させると、変更時に一部だけ古い値を残す問題が起きます。
学習ポイント:正規化の前後比較
3. SELECT・WHERE・ORDER BY
アオイ:SELECTで必要な列を取得し、WHEREで条件、ORDER BYで並びを指定します。
学習ポイント:検索SQLと期待結果
4. JOIN・集計・重複
ミナト:JOINはキーに基づいて表をつなぎます。
学習ポイント:集計SQLと検算表
5. 更新・トランザクション
アオイ:INSERT、UPDATE、DELETEはデータを変えます。
学習ポイント:更新・取消の記録
6. インデックスと安全な入力
ミナト:インデックスは検索を助けますが、保存容量や更新時の負荷もあります。
学習ポイント:性能比較と安全なSQL例
04 / IT FOUNDATION
演習を完成させ、成果物をレビューする。
演習1
4表を設計し、同梱のSQLite演習へデータを登録する。
- 対象・環境・入力データ・期待結果を記録する。
- 上の解説と各ブロックの実習手順を使って作業する。
- 結果を期待と比較し、違いがあれば条件を一つずつ確かめる。
- 成果物・再現手順・分かったこと・未確認を残してレビューする。
演習2
顧客・商品・注文を結合して集計し、合計2,500円を検算する。
- 対象・環境・入力データ・期待結果を記録する。
- 上の解説と各ブロックの実習手順を使って作業する。
- 結果を期待と比較し、違いがあれば条件を一つずつ確かめる。
- 成果物・再現手順・分かったこと・未確認を残してレビューする。
演習3
更新を取り消すトランザクションと、制約違反の扱いを記録する。
- 対象・環境・入力データ・期待結果を記録する。
- 上の解説と各ブロックの実習手順を使って作業する。
- 結果を期待と比較し、違いがあれば条件を一つずつ確かめる。
- 成果物・再現手順・分かったこと・未確認を残してレビューする。
正しい用語で説明できるか/入力と結果が対応しているか/正常だけでなく失敗する条件も扱ったか/他の人が再現できるか/残る課題を隠していないか。
05 / IT FOUNDATION
確認問題:答えより、理由を説明する。
全5問。選ぶと解説が表示されます。何度でも選び直せます。
回答済み 0 / 5問
06 / IT FOUNDATION
成果物を残し、理解と未確認を分ける。
架空データを使い、根拠と結果を自分の言葉でまとめます。回答とメモは自動保存・外部送信しません。残したい内容はコピーするか、成果物ファイルへ記入してください。
07 / IT FOUNDATION
説明・実装・記録を、一つの成果へつなげる。
顧客・商品・注文を別の表へ設計し、整合性を保ちながら登録・検索・結合・集計を行う。
- ER図と項目定義
- 正規化の前後比較
- 検索SQLと期待結果
- 集計SQLと検算表
- 更新・取消の記録
- 性能比較と安全なSQL例
08 / IT FOUNDATION
