キー(key)
何の鍵かというと、ある特定のデータを引き出すための鍵
です。
特にリレーショナルデータベースでは、あるレコード(1行とは限らない)を特定するための列の組み合わせ
という意味で使います。
- 主キー
- 外部キー
気づき
キーとは列の組み合わせのことなのか。
今はしっくりこないがこれからだ。
主キー(プライマリキー(primary key))
その値を指定すれば、必ず1行のレコードを特定できるような列の組み合わせ
のこと。
テーブルにおいて必ず存在
しなければならず、かつ一つしか存在しません
。
1行に特定することを一意に識別する
という。
一意はuniqueの訳語です。
主キーがあるのでテーブルには重複行は存在できない
。
候補キー(candidate key)
主キーとして利用可能なキー
が複数存在した場合、それら「候補」となるキーのことを言います。
スーパーキー(super key)
主キーに、非キー列を付加した場合のキーの組み合わせ
気づき
このキーの値を指定すれば、一つだけ特定できるような列の組み合わせなのか。
外部キー(foreign key)
2つのテーブルの間の列同士で設定するもの
制約
社員テーブルと部署テーブルがある。
社員テーブルと部署テーブルで外部キー(部署id)を設定している。
部署idで一つだけ特定して値を取得できる。
外部キーの役割は部署テーブルに存在しないような部署データが間違って、「社員」テーブルに存在しないように防止することです。
いわば、社員テーブルに対して一種の制約
を課すことになる。
この制約を参照整合性制約
と呼びます。
外部キーは親子関係と同じ
部署テーブルに存在しない値が社員テーブルに存在できない。
もし親のテーブルである部署テーブルの値を削除/更新すると
SQL文でエラーを起こすか、削除/更新しておくかを選択が可能になる。
親がいないデータを合わせて削除/更新する動作をカスケード
と呼びます。
カスケードのような厄介な問題を考えないようにテーブルを操作する
子のテーブルを先に削除なり変更して、後から親テーブルを更新していれば、こうした問題は起きない
。
気づき
外部キーは制約なのか。
親子関係があるんだな。
テーブルが多くなると、こういった削除、変更でエラーが起きたり先に削除・更新されたりするのか。
気をつけないといけないな。
キーとなる列のデータ型
何らかのコードやIDといった表記体系をきっちり定まったデータを、固定長文字列のデータ型に格納して使います
。
気づき
idには固定長文字列を使うのか。
出典