<DAY81>データーベースの構築と関連するメソッドまとめ
学習状況
●学習日数 81日
●学習時間(本日) 9時間
●累計学習時間 283.0時間
●一日あたりの平均学習時間 3.49時間
RDBについて
リレーショナルデーターベースと呼ぶ。 学習しているデーターベースの型である。(カラム、レコードの形) 特徴は、テーブル同士を結合する事で、複雑なデーターが構築できる点。 他には階層型、ネットワーク型と形が異なるデーターベースの設計がある。
DDLとDLM
何をさしているのか把握した。 どちらもSQLの言語の総称である。 DDLがテーブル作成、削除などを指示する言語。 DLMがテーブルにあるカラムやレコードに対して指示する言語。
Railsのモデル操作との関係
●DDL CREATE rale:db migrateコマンド
ALTER add_column,drop_table
●DLM
INSERT :saveメソッド、createメソッド等
UPDATE :updateメソッドやupdate_allメソッド等
DELETE :destroyメソッド等(http://railsdoc.com/references/destroy)
SELECT :whereメソッド、findメソッド等(https://railsguides.jp/active_record_querying.html)
SQLの各種メソッド
SQLは書ける必要はないと考える。ただ、読める必要はある。 読む際に、重要ななのが実行順序と、メソッドが何をしているのかを把握する事。
制約について
railsではマイグレーションファイルにて、記載を追加する事で可能となる。
データがないと弾かれる。NOT NULL制約
def change create_table :users do |t| t.string :name, null: false end
一意制約 重複するデータを禁止する制約。
def change add_index :users, :email, unique: true end
外部キー制約。 関連する外部キーがないと弾かれる。
def change create_table :scores do |t| t.references :user, foreign_key: true end
インデックスとは
指定したカラムテーブル内のデータ検索を高速化すること。 データーのやり取りが増えるため、やりすぎは禁物。よく検索されるデーターに対して貼り付けよう。
●一つのカラムに対して設定
def change add_index :scores, :name end
●複数のカラムに対して設定
def change add_index :users, [:name, :email] end
この方法でインデックスを貼るとき、emailカラム単体で検索する場合には検索速度は向上しないので注意。
正規化とは
データーベースの構造を整理し、シンプルかつ無駄のない構造にする。 まず、テーブル内で繰り返されるカラムをなくす。 属性ごとに分ける。