はじめに
こないだ、面接でデータベースに関しての質問に対して惨敗したので、データベースの学習をしっかりやってこうと思いました。
手始めにRailsでデータベースを操作するために用いられるModelとデータベースについてまとめてみました。
ORM
まずはこの用語ORMですが Object Relational Mappingの略でリレーショナルデータベースのデータをオブジェクト思考のプログラミング言語でオブジェクトとして使用するために変換する技術のことです。
RailsのActiviRecordのメソッド(createとかdestroyとか)もORMです。
そして、例えばdestroyを使ったときにはその裏ではSQLという言語が実行されています。
私はこの時点でリレーショナルデータベースってなんだっけとなりました。
RDB(リレーショナルデータベース)
リレーショナルデータベースはデータを複数の表(テーブル)として管理し、様々な表(テーブル)同士の関係を定義をすることで、複雑なデータの関連性を扱えるデータベースのことです。
SQL(Structured Query Language)
SQLはデータベースを操作するための言語で、もっと言えば、リレーショナルデータベースを操作するための言語になります。ActiveRecordのメソッドは実際には実行されるときSQLに変換されています。
このSQLという言語は大きく三つの命令に分類されます。
データを定義 DDL (Data Definition Language)
データを操作 DML (Data Manipulation Language)
テータを制御 DCL (Data Control Language)
そしてそれぞれの命令の代表的なものを紹介します。
DDL
命令 | 機能 |
---|---|
CREATE | データベースやテーブルの作成 |
ALTER | データベースやテーブルの更新 |
DROP | データベースやテーブルの削除 |
DML(ちなみに私はこれを面接で突っ込まれて一つも答えることができませんでした。)
命令 | 機能 |
---|---|
INSERT | データの登録 |
UPDATE | データの更新 |
DELETE | データの削除 |
SELECT | データの検索 |
DCL
命令 | 機能 |
---|---|
COMMIT | DBの変更の確定 |
ROLLBACK | DBの変更の取り消し |
GRANT | ユーザーに操作権限を付与 |
REBOKE | ユーザーの操作権限を無効化 |
またSQLはどの種類のリレーショナルデータベースであったとしても基本的に使うことができます。
なぜならSQLはISO(国際基準化機構)で規格化が行われているからです。
私はまだリレーショナルデータベースはMySQLしか使ったことはないですが、他のPostgreSQLやSQLiteという他のリレーショナルデータベースでも利用可能ということです。
最後に
データベースの扱いは学習していたつもりでしたが、今まで記述として書くことがほとんどなかったため、ほとんど覚えていませんでした。
サーバーサイドにおいてデータベースの知識と理解は必要不可欠になるので、しっかり復習と新たな学習は継続して行なっていきたいです。