ふくふくHukuhuku Inc.
EP.11CS Basics対象: 中2以上 10分公開: 2026-05-10

データベースの基礎:SQL と関係モデルの考え方

Excel との違い、関係モデルの 3 大要素 (テーブル・主キー・外部キー)、SQL の基本 4 句 (SELECT/INSERT/UPDATE/DELETE)、トランザクションと ACID。Python と SQLite で実演。

#データベース#SQL#SQLite#関係モデル
CO📔 Google Colab で開く(上から順にセルを実行)
シェア

データベース は、「複数のデータが関連し合い、複数人が同時に使い、整合性を保ち、長期間保存される」状況の標準解。Excel の限界を超える瞬間に必要になります。

1. 関係モデルの 3 大要素

  • テーブル (リレーション): 行と列の表
  • 主キー (Primary Key): 各行を一意に識別する列 (例: user_id)
  • 外部キー (Foreign Key): 別テーブルの主キーを参照する列

2. シンプルな例: ECサイト

users テーブル
user_id (PK)nameemail
1佐藤sato@example.com
2田中tanaka@example.com
orders テーブル
order_id (PK)user_id (FK)productamount
1011ノート PC120000
1021マウス3000
1032キーボード8000

3. SQL の基本 4 句

CRUD の基本
SQL
-- 取得 (SELECT)SELECT name, email FROM users WHERE user_id = 1;
-- 追加 (INSERT)INSERT INTO users (name, email) VALUES ('鈴木', 'suzuki@example.com');
-- 更新 (UPDATE)UPDATE users SET email = 'new@example.com' WHERE user_id = 1;
-- 削除 (DELETE)DELETE FROM users WHERE user_id = 1;
-- 結合 (JOIN) — テーブルをまたいで取得SELECT u.name, o.product, o.amountFROM users uJOIN orders o ON u.user_id = o.user_idWHERE u.user_id = 1;
-- 集計 (GROUP BY)SELECT user_id, COUNT(*) as order_count, SUM(amount) as totalFROM ordersGROUP BY user_id;

4. SQLite で実演 (Python)

Python 標準ライブラリで DB 操作
Python
import sqlite3
# DB 接続 (なければ新規作成)conn = sqlite3.connect('shop.db')cur = conn.cursor()
# テーブル作成cur.execute('''    CREATE TABLE IF NOT EXISTS users (        user_id INTEGER PRIMARY KEY,        name TEXT NOT NULL,        email TEXT UNIQUE    )''')
# データ追加cur.execute("INSERT INTO users (name, email) VALUES (?, ?)",            ('佐藤', 'sato@example.com'))conn.commit()
# 取得cur.execute("SELECT * FROM users")for row in cur.fetchall():    print(row)
conn.close()

5. インデックスの威力

インデックス = 検索高速化のための内部データ構造 (B ツリーが主流)。「100 万行から 1 件探す」が インデックスなしで 1 秒、インデックスありで 1ms のような桁違いの差が出ます。

インデックス作成
SQL
-- email 列で頻繁に検索するならインデックスをCREATE INDEX idx_users_email ON users(email);
-- WHERE で使うとインデックスが効くSELECT * FROM users WHERE email = 'sato@example.com';-- → インデックスを使った高速検索 O(log n)
-- インデックスは書込み時にコストがかかる-- 全列にインデックス張ると書込みが遅くなる ← 落とし穴

6. トランザクションと ACID

  • Atomicity (原子性): 「A から B への送金」のような複数操作を、全部成功 or 全部キャンセル
  • Consistency (一貫性): 制約 (主キー・外部キー) が常に守られる
  • Isolation (独立性): 同時実行時、互いに干渉しない (READ COMMITTED 等のレベル)
  • Durability (永続性): 一度 commit したらクラッシュしても残る

7. 次の話

EP.12 (最終回) では AI 時代の CS として、なぜ今もこれらの基礎が重要かをまとめます。

シェア

この記事の感想を教えてください

あなたの 1 クリックで、本当にこの記事は更新されます。「もっと詳しく」「続編希望」が一定数集まった記事は、 ふくふくが 実際に内容を拡充したり続編記事を公開 します。 送信したリアクションはお使いのブラウザに記録され、再カウントされません。

シリーズの外も探す:

まずは、現状を聞かせてください。

要件が固まっていなくて大丈夫です。現状診断と方針提案までを無料でお手伝いします。

無料相談フォームへ hello [at] hukuhuku [dot] co [dot] jp