【Ruby】*制約*
「制約」をテーマに書きたいと思います!
DBのテーブルのカラムに対して制約をかけ
制約とは特定のデータの保存を許さないためのバリデーションです。
例:同じメールアドレスのユーザーを登録できないようにする
例:名前のデータが空のユーザーを保存できないようにする
②一意性制約
③主キー制約
④外部キー制約
例:usersテーブルのnameというカラムにNOT NULL制約を設定すると
カラムに設定する制約です。
「一意性」とはユニークで他とは違うという意味です。
一意性制約を設定したカラムには同じ値を設定できなくなります。
例:Aさんのemailが「test@gmail.com」だった場合
emailが、同じ「test@gmail.com」の他のレコードを保存できなくなります。
一意性制約はテーブル内で重複するデータを禁止する制約です。
emailカラムに対して一意性制約を設定すると同emailのレコードは保存できません。
Railsでは、カラムに対してadd_indexメソッドを用いることで
一意性制約を付けることができます。
記述はこうです!マイグレーションファイルに記述します。
③主キー制約
レコードが必ず主キーを持っていなくてはいけないことを保証するための制約です。
主キーである属性値が必ず存在してかつ重複していないことを保証する制約です。
※Railsでテーブルを作成する際、主キー制約は元々実装されています。
Railsでは主キーはidカラムとして自動で作成されます。
つまりidカラムの値は重複しないようにできています。
④外部キー制約
外部キーに対応するレコードが必ず存在することを保証する制約です。
例:student_idが3のレコードを保存するためには
studentsテーブルにidが3のレコードが存在していなくてはいけません。
外部キーのカラムに値があっても、その値を主キーとして持つ
他のテーブルのレコードがなければいけません。
記述はこうです!マイグレーションファイルに記述します。
ユーザー登録の実装や
異なるテーブル同士の紐付けが必要になるような実装を行う際は
この「制約」について理解しておかなければと思います!
以上「制約」についてでした!