作って学ぶRuby on Rails Vol.10 データベースを学ぼう!



作って学ぶRuby on Rails Vol.10 データベースを学ぼう!
目次
  1. データベースとは
  2. データベースの使用例
  3. データベースの利点
  4. リレーショナルデータベース
  5. 複数の表を結合(リレーション)

データベースとは

本項以降では、データベースを用いて、より動的なWebアプリケーションの実装を行っていきます。

まずはデータベースについての基礎的な学習から行います。

テーマに沿ったデータの入った箱 かつ 簡単にデータを取り出し可能にしたソフトウェアをデータベースと呼びます。広義の意味では電話番号帳もデータベースと言えるでしょう。

Ruby_on_Rails_DB1

本カリキュラムで学習するデータベース(ソフトウェア)の具体的な使用例や利点については、次に説明致します。

データベースの使用例

Webサービスを行う上でデータベースはなくてはならないものであり、様々なサービスで情報の保存と取り出しにデータベースが利用されています。

Twitterのようなコミュニケーションツールの場合

  • ユーザ認証(ID、パスワード)
  • プロフィール(アカウント名、本名、生年月日)
  • ツイート(本文、日時)
  • フォロー/フォロワー(相手のアカウント名)
  • リスト(リスト名、相手のアカウント名)

AmazonのようなECサイトの場合

  • ユーザ認証(ID、パスワード)
  • プロフィール(アカウント名、本名、住所、)
  • 購入履歴(商品名、値段、数量、日時)
  • 欲しいものリスト(商品名、追加日、優先度) 上記はほんの一部の例であり、実際にはより多くの情報がデータベースに保存されています。

データベースの利点

データの保存方法には、様々な方法があります。

  • 人間(脳)
  • PC内のファイル
  • データベース
  • etc 普段何かデータの保存をする場合、些細なことなら自身の記憶だけに頼ったり、他人との共有やできるだけ忘れたくないことはPC内のファイルに残すなど、用途によって使い分けをしていると思います。

ではどういう用途でデータベースが使われているかを説明するため、これら保存方法の特徴を「正確さ」「速度」「容量」「複数人の書き込み」「コスト」の5つ観点からまとめると、次のようになります。

データ保存の種類と特徴

  正確さ 速度 容量 複数人の書き込み コスト
人間( 脳 ) × ×
× × ×
PC内のファイル
データベース ×

※コストは人的コストやサーバ費用、ライセンス費用など、多数の意味を含んでいます。

人の記憶はかなり曖昧で正確さにかけ、また自分以外が利用することはできません。紙は書くのに時間がかかり、たくさん書くのも大変です。ファイルは通常、複数人の同時書き込みに向いておらず、容量にも限界があります。

データベースはこれらと比べて、「大容量・高速・整合性」という特徴がデータベースにはあります。

Ruby_on_Rails_DB2

Webサービスでは何百万や何千万といったデータを扱うことも珍しくなく、このような膨大なデータをPC内のファイルで扱うと、速度や整合性に問題が発生してきます。

最も分かりやすい例はExcelを利用したデータ管理との比較で、Excelの場合、複数人でファイルを編集した際にデータの整合性が破綻したり、行数が膨大になると動作スピードが低下したりと色々な問題が発生しますが、データベースではこれらの問題が大幅に改善されます。

使用例で紹介したユーザのIDやパスワードといった情報を保存する場合「大容量・高速・整合性」という3つの利点から、データベースの利用は必須です。

リレーショナルデータベース

データベースといってもその種類はたくさんあり、データを扱う手法として「階層型」「ネットワーク型」「リレーショナル型」があります。

本カリキュラムでは最も一般的に使用されているリレーショナル型に沿ったデータベース(リレーショナルデータベース)を使用します。

リレーショナルデータベースには主に2つの特徴があります。

  • データは2次元(行×列)の表形式で表現
  • 複数の表を結合(リレーション)して利用可能 データを2次元の表に分割し、また表を様々な手法で結合して使うことで、複雑なデータを柔軟に扱うことができます。

文章だけだとなかなか理解しづらいと思いますので、この2つの特徴について、図を交えながら説明していきます。

・データは二次元(行 × 列)の形式で表現

リレーショナルデータベースでは、データを表形式で表現します。例えば商品のデータを「商品ID」「商品名」「価格」・・・のように項目を分け、これを商品の数だけ集めると、次のようになります。

Ruby_on_Rails_DB3

1件のデータを「レコード(行)」、項目を「カラム(列)」、そしてレコードの集まりを「テーブル(表)」と呼びます。

商品が増えた場合はレコードを追加し、項目が増えた場合はカラムを追加することで、商品の情報を一つのテーブル(表)で表現します。

複数の表を結合(リレーション)

もう1つの大きな特徴は、複数の表を結合(リレーション)して利用できることです。

Ruby_on_Rails_DB4

このように表を結合することで、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編集部
この記事を書いた人
CodeCampus編集部
\ 無料体験開催中!/自分のペースで確実に習得!
オンライン・プログラミングレッスンNo.1のCodeCamp