【学習54日】データベース設計の基礎【応用16日】
■データ設計とは
■データ設計とは
・あらゆる情報をどのデータベースで管理するかを定める作業
・現実の事象をデータに落とし込む作業
・制作の”最初”に行う
・今後の作業の効率化に繋がる
■データ設計の3要素
①エンティティ
・ユーザー、ツイート、コメントなど
・エンティティ1つ1つがテーブルになる
②エンティティの属性
・ユーザーエンティティにおける氏名、email、性別など
・属性はテーブル内のカラムに当たる(レコードは具体例)
③エンティティのリレーション
■データ設計の手順
①エンティティを決める
②エンティティの属性をきめる
③エンティティ同士のリレーションを設定する
④実際のデータベースに落とし込む
■主キー
同じテーブル内での、レコード識別のためのカラム。
必ず被らないように設定する
■外部キー
他のテーブルとの関係を保存し識別するためのカラム。
外部キーは、他テーブルの主キーと紐づいている。
■制限とは
データベースの一貫性を保つために余計なものを入力させないようにすること。ブロックすべきかどうかを検証すること。
・NOT NULL制限
・一意性制限
・主キー制限
・外部キー制限
(railsアプリにおいてはDBのテーブルのカラムの追加などは
migrateから行う。そのカラムの設定と一緒に制限も記入してしまう)
■NOT NULL制限
空欄があると入力できない、エラーになる制限。
カラムに対して設定される。
t.string :name, null: false
■一意性制限
重複した値を制限。
カラムに対して設定される。
add_index :users, :name, unique: true
■主キー制限
主キーに空欄や重複がないようにする制限。
なお、railsアプリの場合は、主キーidが自動的に設定されるので安心
■外部キー制限
外部キーを設定したのに肝心の他テーブルの主キーにその値がない??!!という事態を防ぐための制限。
カラムに対して設定される。
t.reference :user, :score, foregn_key: true
■インデックスとは
検索の 高・速・化★を実現!
検索をするようなカラム(属性)にはインデックスを設定する
add_index :テーブル名, :カラム名
add_index :テーブル名, [:カラム名,:カラム名]
add_index :users, :name
add_index :users, , [:name,:email]