ほとんどの場合、サービスはデータベースを持っている。
データを得るために派手な見た目やインターフェースを使っているので
データベースそのものがサービスのメイン。
いつ
データベース設計は開発の最初の段階で行う。
データベース設計は基本的には現実世界の要素をデータに落としこむ作業。
客商売での顧客という概念がエンティティ。
顧客の情報が属性。
顧客と他の情報との関係性がリレーション。
概念
エンティティを定めて、
定めたエンティティに属性を定めて、
エンティティ同士のリレーションを定めて
データベース定義
データベース上では、エンティティ = テーブル
テーブルは2次元表で表す。
テーブルの行がレコード。テーブルの列がカラム。
レコードがデータ。カラムが属性
テーブル同士の関係性がリレーション
キー
テーブルにおけるキーとはレコードを識別するための特別なカラム。レコード毎にただ一つの値を持っていて被らないようにする。
主キーと外部キーの2種類がある。
外部キーは異なるテーブルのレコードと関係性(リレーション)を持つ場合に必要なカラム。異なるテーブルにおける主キー。
制約
制約を設けて安全なデータベースにする
- NOT NULL制約 空の値を受け付けない
- 一意性制約 登録済みの値を受け付けない
- 主キー制約
- 外部キー制約
上記4件の制約をうまく使う。
インデックス
インデックスをつけて検索スピードを上げる。度々検索する主キー、外部キーなどを登録。
検索は早くなるが、登録スピードやサーバー容量が増えてしまう。
railsにおけるマイグレーションファイルで、インデックスが適用できるが、
2つのカラムに一度にインデックスを適用した場合、
2つのカラムでの検索スピードは早くなるが、1つのカラムだけでの検索スピードは早くならない。