データベース設計は、アプリ全体の仕様を決める上でとても大切な作業です。
ここでは、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に変更します。
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