第 1 章
リレーショナルデータベースの基本概念
データベースとは
データベース(DB)は、体系的に整理された大量のデータを効率よく保存・管理・検索するためのシステムです。ブログ、SNS、Eコマース、銀行システムなど、現代のほぼすべてのアプリケーションはデータベースを活用しています。
リレーショナルデータベース(RDB)とは
リレーショナルデータベースは、データを「表(テーブル)」形式で管理するデータベースの標準的なモデルです。Excelのスプレッドシートのような構造で、行と列にデータが整理されます。
graph LR
A["📊 テーブル(表)"] --> B["行:1件のレコード"]
A --> C["列:データ属性"]
B --> D["例: 顧客ID=1, 名前=太郎"]
C --> E["例: 顧客ID, 名前, メール"]
テーブルの基本用語
| 用語 | 説明 | 例 |
|---|---|---|
| テーブル | データを行と列で管理する表 | usersテーブル |
| 行(レコード) | 1件のデータ | 太郎さんの情報 |
| 列(カラム) | 特定の属性を表す | name、email |
| 主キー(PK) | 各レコードを一意に識別するカラム | user_id |
| スキーマ | テーブルの構造定義 | 各カラムの型・制約 |
users テーブル
┌─────────┬────────┬──────────────────┬─────────────────┐
│ user_id │ name │ email │ created_at │
├─────────┼────────┼──────────────────┼─────────────────┤
│ 1 │ 太郎 │ taro@example.com │ 2026-01-15 │
│ 2 │ 花子 │ hanako@ex.com │ 2026-02-10 │
│ 3 │ 次郎 │ jiro@example.com │ 2026-03-05 │
└─────────┴────────┴──────────────────┴─────────────────┘
データ型(型付け)
データベースは各カラムに「どんな形式のデータが入るか」を事前に定義します。主なデータ型は以下の通りです:
graph TB
A["🔤 データ型"] --> B["数値"]
A --> C["文字列"]
A --> D["日付時刻"]
A --> E["その他"]
B --> B1["INTEGER: 整数"]
B --> B2["DECIMAL: 小数"]
B --> B3["FLOAT: 浮動小数点"]
C --> C1["VARCHAR: 可変長文字列"]
C --> C2["TEXT: 長いテキスト"]
C --> C3["CHAR: 固定長文字列"]
D --> D1["DATE: 日付"]
D --> D2["TIMESTAMP: 日時"]
E --> E1["BOOLEAN: 真偽値"]
E --> E2["JSON: JSON形式"]
リレーション(関連性)
リレーショナルデータベースの名称の由来は、複数のテーブル間に関連性(リレーション)を作れる ことにあります。
例:ユーザーと注文の関係
users テーブル
┌─────────┬────────┐
│ user_id │ name │
├─────────┼────────┤
│ 1 │ 太郎 │
│ 2 │ 花子 │
└─────────┴────────┘
orders テーブル
┌──────────┬─────────┬──────────────┐
│ order_id │ user_id │ product_name │
├──────────┼─────────┼──────────────┤
│ 101 │ 1 │ りんご │
│ 102 │ 1 │ みかん │
│ 103 │ 2 │ バナナ │
└──────────┴─────────┴──────────────┘
orders.user_id と users.user_id を紐付けることで、「どのユーザーがどの商品を注文したか」を効率的に管理 できます。このリレーションが、複雑なビジネスロジックを支える強力な機能です。
graph LR
A["users テーブル"] -->|主キー: user_id| B["user_id = 1"]
C["orders テーブル"] -->|外部キー: user_id| B
B -->|紐付け| D["太郎の注文一覧"]
主要なRDBMS(データベース管理システム)
Excelと同じように、RDBMSも複数のソフトウェアから選べます:
| DBMS | 特徴 | 用途 |
|---|---|---|
| PostgreSQL | オープンソース、高機能、信頼性高 | 中~大規模システム |
| MySQL | 高速、軽量、シンプル | Webアプリ、スタートアップ |
| SQLite | ファイルベース、セットアップ不要 | モバイルアプリ、組込 |
| Oracle Database | エンタープライズ向け、超大規模対応 | 金融機関、大企業 |
| Microsoft SQL Server | Windows統合、ビジネス向け | Windowsサーバー環境 |
なぜリレーショナルデータベースなのか?
graph TB
A["リレーショナルデータベースの強み"] --> B["🎯 データの一貫性"]
A --> C["🚀 高速検索"]
A --> D["🔒 トランザクション"]
A --> E["📈 拡張性"]
B --> B1["重複データを排除(正規化)"]
B --> B2["データの矛盾を防ぐ"]
C --> C1["インデックスで高速検索"]
C --> C2["複雑な条件検索も効率的"]
D --> D1["複数操作の原子性確保"]
D --> D2["データの安全性向上"]
E --> E1["テーブルの拡張が容易"]
E --> E2["新しい関係性の追加が簡単"]
まとめ
- リレーショナルデータベースは、行と列からなるテーブルでデータを管理します
- 複数テーブル間のリレーションにより、複雑なデータ関係を効率的に表現できます
- スキーマでデータ型と構造を事前に定義し、データの一貫性を保ちます
- 高速検索とトランザクションにより、大規模システムでも信頼できる運用が可能です
次の章では、効率的で一貫性のあるテーブル設計に不可欠な 正規化 について学びます。