- 更新日: 2017年04月05日
- 公開日: 2016年02月12日
作って学ぶRuby on Rails Vol.10 データベースを学ぼう!
データベースとは
本項以降では、データベースを用いて、より動的なWebアプリケーションの実装を行っていきます。
まずはデータベースについての基礎的な学習から行います。
テーマに沿ったデータの入った箱 かつ 簡単にデータを取り出し可能にしたソフトウェアをデータベースと呼びます。広義の意味では電話番号帳もデータベースと言えるでしょう。
本カリキュラムで学習するデータベース(ソフトウェア)の具体的な使用例や利点については、次に説明致します。
データベースの使用例
Webサービスを行う上でデータベースはなくてはならないものであり、様々なサービスで情報の保存と取り出しにデータベースが利用されています。
Twitterのようなコミュニケーションツールの場合
- ユーザ認証(ID、パスワード)
- プロフィール(アカウント名、本名、生年月日)
- ツイート(本文、日時)
- フォロー/フォロワー(相手のアカウント名)
- リスト(リスト名、相手のアカウント名)
AmazonのようなECサイトの場合
- ユーザ認証(ID、パスワード)
- プロフィール(アカウント名、本名、住所、)
- 購入履歴(商品名、値段、数量、日時)
- 欲しいものリスト(商品名、追加日、優先度) 上記はほんの一部の例であり、実際にはより多くの情報がデータベースに保存されています。
データベースの利点
データの保存方法には、様々な方法があります。
- 人間(脳)
- 紙
- PC内のファイル
- データベース
- etc 普段何かデータの保存をする場合、些細なことなら自身の記憶だけに頼ったり、他人との共有やできるだけ忘れたくないことはPC内のファイルに残すなど、用途によって使い分けをしていると思います。
ではどういう用途でデータベースが使われているかを説明するため、これら保存方法の特徴を「正確さ」「速度」「容量」「複数人の書き込み」「コスト」の5つ観点からまとめると、次のようになります。
データ保存の種類と特徴
正確さ | 速度 | 容量 | 複数人の書き込み | コスト | |
---|---|---|---|---|---|
人間( 脳 ) | × | ? | ? | × | ◯ |
紙 | △ | × | × | × | △ |
PC内のファイル | ◯ | △ | △ | △ | △ |
データベース | ◯ | ◯ | ◯ | ◯ | × |
※コストは人的コストやサーバ費用、ライセンス費用など、多数の意味を含んでいます。
人の記憶はかなり曖昧で正確さにかけ、また自分以外が利用することはできません。紙は書くのに時間がかかり、たくさん書くのも大変です。ファイルは通常、複数人の同時書き込みに向いておらず、容量にも限界があります。
データベースはこれらと比べて、「大容量・高速・整合性」という特徴がデータベースにはあります。
Webサービスでは何百万や何千万といったデータを扱うことも珍しくなく、このような膨大なデータをPC内のファイルで扱うと、速度や整合性に問題が発生してきます。
最も分かりやすい例はExcelを利用したデータ管理との比較で、Excelの場合、複数人でファイルを編集した際にデータの整合性が破綻したり、行数が膨大になると動作スピードが低下したりと色々な問題が発生しますが、データベースではこれらの問題が大幅に改善されます。
使用例で紹介したユーザのIDやパスワードといった情報を保存する場合「大容量・高速・整合性」という3つの利点から、データベースの利用は必須です。
リレーショナルデータベース
データベースといってもその種類はたくさんあり、データを扱う手法として「階層型」「ネットワーク型」「リレーショナル型」があります。
本カリキュラムでは最も一般的に使用されているリレーショナル型に沿ったデータベース(リレーショナルデータベース)を使用します。
リレーショナルデータベースには主に2つの特徴があります。
- データは2次元(行×列)の表形式で表現
- 複数の表を結合(リレーション)して利用可能 データを2次元の表に分割し、また表を様々な手法で結合して使うことで、複雑なデータを柔軟に扱うことができます。
文章だけだとなかなか理解しづらいと思いますので、この2つの特徴について、図を交えながら説明していきます。
・データは二次元(行 × 列)の形式で表現
リレーショナルデータベースでは、データを表形式で表現します。例えば商品のデータを「商品ID」「商品名」「価格」・・・のように項目を分け、これを商品の数だけ集めると、次のようになります。
1件のデータを「レコード(行)」、項目を「カラム(列)」、そしてレコードの集まりを「テーブル(表)」と呼びます。
商品が増えた場合はレコードを追加し、項目が増えた場合はカラムを追加することで、商品の情報を一つのテーブル(表)で表現します。
複数の表を結合(リレーション)
もう1つの大きな特徴は、複数の表を結合(リレーション)して利用できることです。
このように表を結合することで、1つのテーブルとして扱うことができます。
そもそもなぜテーブルを分ける必要があるのかという点については後述するため、ここでは解説致しませんが、リレーショナル型データベースの基本的な構成は「2次元(行×列)の表」であり、この作成方法やレコードの追加・変更・削除の方法等を学んでいきます。
・RDBMS
リレーショナル型のデータベースを管理するシステムのことを、RDBMS(Relational DataBase Management System)といいます。
世界中ではたくさんのRDBMSが利用されており、主なものは以下です。
- Oracle…商用RDBMSとして、世界で最も多く使われている。
- Access…Microsoft社のOffice系列のRDBMS
- MySQL…世界で最も使われているオープンソースRDBMS
- PostgreSQL…日本で比較的人気のあるオープンソースRDBMS
- SQLite…Ruby on Railsがデフォルトでサポートする比較的軽量なRDBMS 本項では、SQLiteというRuby on Railsでデフォルトでサポートする、SQLiteを利用して進めていきます。
NEXT LESSON ☛ Modelをつかってみよう!
PREV LESSON☛ Viewをつかって出し分けをしよう!
目次 - Ruby & Ruby on Rails テキスト目次 -
- この記事を書いた人
- CodeCampus編集部