Ruby on RailsにおけるRDBMSの仕様と基礎
そもそもRDBMSとは?
RDBMSは、リレーショナルデータベース管理システムの略で、
つまりは「リレーショナルデータベース」を管理するためのシステムです。
※PostgreSQL、MySQLなど
リレーショナルデータベースは、データをカラム(列)と、レコード(行)の中に入れて、テーブル(表)に並べるものです。(※個人的には、エクセルファイルを思い浮かべるとイメージしやすいです。 )
カラムとレコードの位置で、データの抽出などが効率的におこなえます。
またテーブルが複数存在する場合でも、あらかじめ割り振られたIDや主キーとなる項目を利用して、データ同士を関連付けることにより、テーブルを内部結合してひとつのテーブルであるかのように扱うこともできます。
このときRDBMSでは、データベースとのやり取りに、SQL言語が用いられます。
データベースの正規化とは?
データが複数の箇所に散在したり、データが重複するという状況にならないよう、整合的にデータを取り扱えるようにデータベースを設計することを、データベースの正規化といいます。
正規化をおこなうことで、運用時のデータの追加・更新・削除などの作業をおこなう際に、データの不整合や喪失が起きるのを防ぐのと同時に、メンテナンス性を向上させることができます。
RailsにおけるRDBMSの使い方
database.ymlファイルに、ユーザ名とパスワードなどの情報を記載する。
↓PostgreSQLの場合の一例
上記の設定を行い、database.ymlとActiveRecordを介してRDBMSへのアクセスをおこないます。
データの参照、追加、更新、削除などの全ての作業は「SQL」にて行う。
しかしRailsでは、直接SQLを描かなくとも、ActiveRecordの機能によって、コードをSQLに翻訳し、RDBMS内で実行させることができます。
↓Ruby/Ruby on RailsのコードからSQL文への翻訳の一例
Ruby/Ruby on Rails | SQL |
rake db:create | CREATE DATABASE ・・・ |
rake db:migrate | CREATE TABLE ・・・ |
Blog.all | SELECT * FROM blogs; |
Blog.find(1) | SELECT * FROM blogs WHERE id = 1; |
・アソシエーションとは
あるテーブルのデータに紐づく別のテーブルのデータを取得したい時に、
それぞれのモデルとモデルを関連づける、アソシエーションをおこなうことで、実現することができます。
詳細については、下記のオフィシャルガイドに詳しく記載がありましたので、こちらをご参照ください。