初学者向け DB作成


データベース設計は、アプリ全体の仕様を決める上でとても大切な作業です。
ここでは、Ruby on railsを使ったアプリケーション作成におけるDB設計について、細かい部分の知識を自分の復習も兼ねて記載します。

開発環境

・Mac OS Big Sur 11.2
・Ruby 2.6.5
・Rails 6.0.0

DB(データベース)とは

データベースとは、情報の集合体、すなわちデータの集まりのことです。
データベースには、そのデータ自体の保存や検索を可能にし、それらを迅速に実行する役割があるため、ユーザーにストレスをかけない僅かな時間で、データの保存や取得が可能です。

コマンドによるDB作成

ターミナルにコマンドを打ち込むことで、アプリケーションのDBを作成することができます。
DBを作成するにあたり、DB設定の変更が必要な場合があります。DBの設定は、database.ymlというファイルに記載してあります。
database.ymlは、RailsアプリケーションのDB設定ファイルです。
Ruby on Railsは、このdatabase.ymlを編集することで、DBの設定を運用環境ごとに変更できる仕組みになっています。

*補足 運用環境とは、システムをどこで使用するか定められている環境のことを言い、開発環境、テスト環境、本番環境の3つに分けることができます。このように環境が分かれている理由としては、環境ごとに設定の変更が必要なケースが多く存在する、といった事情があります。
例) 開発環境であれば「バグを探しやすいツール」などを導入した方が便利だが、本番環境ではWebアプリケーションのパフォーマンスを上げるために、余分なツールは使わない方が適切、など。

それでは、database.ymlファイルを編集します。今回は、データの保存形式を変更するため、encoding: utf8mb4という記述を、encoding: utf8に変更します。

config/database.yml
default: &default
  adapter: mysql2
  # encoding: utf8mb4
  encoding: utf8
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  password:
  socket: /tmp/mysql.sock

encoding: utf8mb4とencoding: utf8は、MySQLで扱うための文字コードと呼ばれるものであり、utf-8は3バイトの文字まで扱うのに対し、utf8mb4は4バイトまで扱うことができます。難解な漢字や絵文字の多くは4バイトとして扱われるので、そうした場合にはencoding: utf8mb4を使う必要があります。そうでない場合には、基本的にutf8を使って問題ないようです。
ここまで出来たら、ターミナルでアプリケーションのディレクトリへ移動し、以下のコマンドを実行します。

rails db:create

これでDBの作成ができました。

DBに関して知っておきたい基礎知識

  • RDB(リレーショナル・データベース)
    表形式でデータを管理するデータベースのこと。行と列を持っており、DBにおいては、行を「レコード」、列を「カラム」という。

  • RDBMS(RDB・マネジメント・システム)
    RDBを使用する際、それを管理するシステムのこと。

  • MySQL
    RDBMSの1つ。
    RDBMS各種には大きな差がなく、他にも同じようなRDBMSがある。

    • PostgreSQL...オープンソースのRDBMS
    • DB2...IBM社のRDBMS
    • Oracle Database...Oracle社のRDBMS
    • SQL Server...Microsoft社のRDBMS