こんにちは、かつコーチです。
前回の記事でデータベースの全体像を説明しましたが、今回はその中でも最も普及しているRDBMS(リレーショナルデータベース管理システム)について解説します。
「リレーショナル」という言葉の意味がわからず、なんとなく使っている人も多いのではないでしょうか。
私も学習を始めた頃は、この「リレーション(関係)」という概念がピンとこず、しばらく理解に苦労しました。
RDBMSとは?
リレーショナルデータベースの定義
RDBMS(Relational Database Management System)とは、データを表(テーブル)の形式で管理し、テーブル同士を関連づけて扱えるデータベース管理システムのことです。
MySQL、PostgreSQL、Oracle Database、SQL Serverなど、現在広く使われているDBMSの多くはRDBMSに分類されます。
なぜ「リレーショナル(関係)」と呼ぶのか
「リレーショナル」という名前は、複数のテーブル同士を関係づけて扱えることに由来します。
例えば、ECサイトでは以下のようなテーブルが存在します。
usersテーブル:会員情報(会員ID、名前、メールアドレスなど)ordersテーブル:注文情報(注文ID、会員ID、商品ID、注文日など)
ordersテーブルの「会員ID」は、usersテーブルの会員IDと紐づいています。
このように、複数の表を「ID」を通じて関連づけることで、重複のない効率的なデータ管理が可能になります。
テーブル形式でデータを管理する仕組み
テーブル・行・列という基本構造
RDBMSでは、データは以下の3つの単位で構成されます。
| 用語 | 意味 | Excelでのイメージ |
|---|---|---|
| テーブル(表) | データの集合体。1つのテーマごとに1つのテーブルを作る | シート1枚 |
| 行(レコード) | 1件分のデータ | 1行分のデータ |
| 列(カラム) | データの項目 | 列見出し |
例えばusersテーブルなら、以下のようなイメージです。
id | name | email
---+----------+-------------------
1 | 田中太郎 | tanaka@example.com
2 | 佐藤花子 | sato@example.com
この1行1行が「1人の会員」を表すレコード、idやnameといった項目がカラムです。
なぜテーブルを分けるのか
「会員情報も注文情報も1つのテーブルにまとめればいいのでは?」と思うかもしれません。
しかし、それをやると次のような問題が起きます。
- 同じ会員が何度も注文すると、会員の名前やメールアドレスが何度も重複して記録される
- 会員情報を変更したいとき、すべての注文レコードを1件ずつ修正しないといけない
- データ量が無駄に増え、検索も遅くなる
こうした無駄をなくすために、RDBMSでは情報の種類ごとにテーブルを分け、IDで関連づける設計が基本になります。
この設計手法は正規化と呼ばれ、SQL基礎編の後半(テーブル設計・DDLのカテゴリ)で詳しく扱います。
RDBMS以外のデータベースとの違い
NoSQLとの比較
近年は、RDBMS以外にもNoSQLと呼ばれるデータベース(MongoDBなど)が使われることもあります。
| 種類 | データの形式 | 特徴 |
|---|---|---|
| RDBMS | テーブル(行と列) | データの整合性を厳密に保てる。複雑な関連データの管理が得意 |
| NoSQL | ドキュメント・キーバリューなど | 柔軟な構造を扱いやすい。大規模データの高速処理が得意な場合がある |
初中級のうちは「RDBMSがデータベースの王道であり基本」という理解で問題ありません。
NoSQLとの詳しい違いは、次回のSB04でDBMSの選び方として比較します。
まとめ
この記事のポイント
- RDBMSはデータをテーブル(表)形式で管理し、テーブル同士を関連づけられるデータベース管理システム
- データはテーブル・行(レコード)・列(カラム)という単位で構成される
- 情報の種類ごとにテーブルを分け、IDで関連づけることでデータの重複や矛盾を防げる
- MySQLやPostgreSQLなど、現在主流のDBMSの多くはRDBMSに分類される
次に読むべき記事
- データベースとは?なぜアプリ開発にDBが必要なのか
- SQLとは?データベース操作言語の基本を理解する
タグ: SQL, 初心者向け, 入門