データベース
DBってなんだろう
RDBという単語は一旦忘れて、まずはデータベースという単語を学びましょう。
DB(データベース:Database)とは、あとから利用するために、たくさんのデータをあつめたものです。例えば、住所録や電話帳などもDBと言えます。
特に、WebサービスではDBが必要不可欠です。例えば検索サイトならWebサイトを集めたDBが、twitterのようなSNSなら投稿を集めたDBが必要でしょう。
DBとDBMS
DBを利用するための、DBMS(データベース管理システム:Database Management System)という種類のソフトウェアが存在します。
DBだけではただのデータですが、DBMSを利用することで、DBにデータを追加したり、DBからデータを検索したり、という操作が容易に実行できるようになります。
DBとDBMSの関係は、ちょうどxlsxファイルとエクセルの関係のようなものです。データはxlsxファイルに保存されますが、エクセルがないと閲覧も編集できません。それと同じように、DBを操作するためにはDBMSが必要不可欠なのです。
なお、DBとDBMSをまとめてデータベースと呼ぶことも多いので注意してください。本記事では、特に断りがない限りはDBとDBMSは区別しています。
データモデル
データベースがデータを格納する方法を、「データモデル」と呼びます。
データの格納と言っても、実に様々な方法がありますが、以下に幾つか代表的なものを挙げます。
- データを木構造として格納する「階層型データモデル」
- データを束として格納する「ネットワーク型データモデル」
- データを表として格納する「関係モデル」
まとめ
- DB(Database)とは、あとから利用するために、たくさんのデータをあつめたものである。
- DBMSはDBを操作するためのソフトウェアの総称であり、DBを利用するためには不可欠である。
- DBがデータを格納する方法を「データモデル」と呼び、様々な種類がある。
関係データベース
RDBとは
RDB(関係データベース:Relational Database)とは、関係(Relational)モデルに基づいたDBであり、RDBのDBMSをRDBMSと呼びます。
リレーショナルモデルでは、データを表(Table)として格納します。想像がつきにくければ、RDBMSとはExcelのようななにかという認識で大丈夫です。
例として献立を表す表を作ります。
+----+-----------+------+
| id | name | kcal |
+----+-----------+------+
| 1 | カレーメシ | 500 |
| 2 | キビヤック | 100 |
+----+-----------+------+
行
まずは表を横方向(行:Row)に注目して見てみましょう。一行目を抜き出すと以下のようになります。一番上の行は見出しなのでデータ本体ではないことに注意してください。
+----+-----------+------+
| id | name | kcal |
+----+-----------+------+
| 1 | カレーメシ | 500 |
+----+-----------+------+
このように行は1つのデータを表しています。
次に、表を縦方向(列:Column)に注目して見てみましょう。name列を抜き出すと以下のようになります。
+-----------+
| name |
+-----------+
| カレーメシ |
| キビヤック |
+-----------+
このように、列を抜き出すことで、複数のデータ間でのある項目による比較が可能になります。
まとめ
- RDBとは関係モデルに基づいたDBであり、データを表の形で保存する。
- 行に注目すると、データを表すことができる。
- 列に注目すると、複数のデータ間での比較ができる。
RDBMSができること
テーブルに対する操作
- 新規テーブルの作成
- 既存のテーブルの削除
- 既存のテーブルの構造の変更
既存のテーブルの構造の変更とは、既存のテーブルにカラムを追加したり、逆に削除したりすることです。
データに対する操作
- データの取得
- データの新規作成
- データの削除
- データの更新
この内、新規作成以外では、更に次のような操作を行ったあとに適用することが可能です。
- 条件による絞り込み(e.g.kcalが200以下のみ)
- ソート(e.g. kcalが小さい順にソート)
- 件数の制限(e.g. 10件のみ)
これらを組み合わせることで、例えば以下のような操作が可能です。
- kcalが200以下のデータを削除
- kcalが200以下のデータをkcalが小さい順にソートして、最初の10件のkcalを100に更新
- nameがカレーメシのデータを取得
- kcalを小さい順にソートしたあと、30件目から10件を取得
このように非常に柔軟な指定が可能です。
まとめ
- RDBMSはテーブルやデータに対する操作を行えます。
- データを取得・更新・削除するときには、非常に柔軟な指定が可能です。
今回のまとめ
今回は、DB・RDBとRDBMSができることを説明しました。すべてを完璧に覚える必要はありませんが、「まとめ」の内容は重要なので、できる限り抑えるようにしてください。
次回はいよいよsqlalchemyを用いてPythonからRDBを利用していきます。