データベースとは
このトピックを修了すると
データベースがなぜ必要なのかを説明できるようになり、CRUDの意味とSQL/NoSQLの違いを理解できるようになります。
ファイルでは不十分な理由
プログラムがデータを保存する必要がある場合、最も単純な方法はファイルです。JSONファイルにユーザーリストを保存するようなものです。
[
{"id": 1, "name": "キム・フン", "email": "hoon@example.com"},
{"id": 2, "name": "イ・ス", "email": "su@example.com"}
]この方法は最初は問題ありませんが、すぐに問題が発生します。
- ユーザーが1万人に達すると、検索が遅くなる—ファイル全体を読み込む必要があるため
- 2人が同時に修正すると、データが上書きされる
- 「メールアドレスが'naver.com'のユーザーだけを探して」のような複雑な質問には、自分でコードを書く必要がある
データベース(DB)は、これらの問題を解決するために作られた専門的なデータ保存・検索システムです。
CRUD — データの4つの操作
データベースで行うことは、結局のところ4つです。
| 操作 | 意味 | SQLキーワード |
|---|---|---|
| Create | 新しいデータを作成 | INSERT |
| Read | データを読み取る/検索する | SELECT |
| Update | 既存のデータを修正 | UPDATE |
| Delete | データを削除 | DELETE |
Webアプリケーションのほぼすべての機能は、CRUDの組み合わせです。会員登録(C)、掲示板のリスト(R)、プロフィールの修正(U)、アカウントの削除(D)。
関係データベース — 表(Table)で整理
最も古く、広く使われている方法は関係データベース(RDBMS)です。データを表の形式で保存します。
usersテーブル:
+----+--------+---------------------+
| id | name | email |
+----+--------+---------------------+
| 1 | キム・フン | hoon@example.com |
| 2 | イ・ス | su@example.com |
+----+--------+---------------------+各行(row)が1つのデータ、各列(column)が属性です。この表に対して質問する言語がSQLです。
-- メールアドレスがnaver.comのユーザーを検索
SELECT name, email FROM users WHERE email LIKE '%@naver.com';代表的なRDBMS:MySQL、PostgreSQL、SQLite、Oracle。
NoSQL — 表形式ではないデータベース
すべてのデータがきれいな表に収まるわけではありません。ユーザーごとに異なる属性を持っていたり、データ構造が頻繁に変化する場合は、NoSQLを使用します。
// MongoDBドキュメントの例
{
"_id": "abc123",
"name": "キム・フン",
"skills": ["Python", "JavaScript"],
"address": {
"city": "ソウル",
"district": "江南"
}
}SQLなしで、JSONのような構造で保存します。柔軟ですが、複雑な関係(JOIN)は不便です。
代表的なNoSQL:MongoDB、Redis、Firebase、Supabase(PostgreSQLベースですがBaaS)。
何を学ぶべきか
| 状況 | 推奨 |
|---|---|
| Web開発の基礎 | MySQLまたはPostgreSQL(SQL必須) |
| 迅速なプロトタイプ | Supabase、Firebase(設定を最小限に) |
| 大規模な非構造化データ | MongoDB |
最初はSQLを先に学ぶのが良いでしょう。SQLは、どのようなデータベースを使用しても基礎となり、データを扱う思考力を訓練してくれます。
→プロフィールに適用:DevBench — データベース基礎