14
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

posted at

updated at

Organization

sqlalchemyによるRDB入門 Ⅰ

データベース

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を利用していきます。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
14
Help us understand the problem. What are the problem?