0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

主キー、外部キー

Last updated at Posted at 2023-02-17

キー(key)

何の鍵かというと、ある特定のデータを引き出すための鍵です。
特にリレーショナルデータベースでは、あるレコード(1行とは限らない)を特定するための列の組み合わせという意味で使います。

  • 主キー
  • 外部キー

気づき

キーとは列の組み合わせのことなのか。
今はしっくりこないがこれからだ。

主キー(プライマリキー(primary key))

その値を指定すれば、必ず1行のレコードを特定できるような列の組み合わせのこと。
テーブルにおいて必ず存在しなければならず、かつ一つしか存在しません

1行に特定することを一意に識別するという。
一意はuniqueの訳語です。

主キーがあるのでテーブルには重複行は存在できない

候補キー(candidate key)

主キーとして利用可能なキーが複数存在した場合、それら「候補」となるキーのことを言います。

スーパーキー(super key)

主キーに、非キー列を付加した場合のキーの組み合わせ

気づき

このキーの値を指定すれば、一つだけ特定できるような列の組み合わせなのか。

外部キー(foreign key)

2つのテーブルの間の列同士で設定するもの

制約

社員テーブルと部署テーブルがある。
社員テーブルと部署テーブルで外部キー(部署id)を設定している。
部署idで一つだけ特定して値を取得できる。

外部キーの役割は部署テーブルに存在しないような部署データが間違って、「社員」テーブルに存在しないように防止することです。
いわば、社員テーブルに対して一種の制約を課すことになる。
この制約を参照整合性制約と呼びます。

外部キーは親子関係と同じ

部署テーブルに存在しない値が社員テーブルに存在できない。

もし親のテーブルである部署テーブルの値を削除/更新すると

SQL文でエラーを起こすか、削除/更新しておくかを選択が可能になる。
親がいないデータを合わせて削除/更新する動作をカスケードと呼びます。

カスケードのような厄介な問題を考えないようにテーブルを操作する

子のテーブルを先に削除なり変更して、後から親テーブルを更新していれば、こうした問題は起きない

気づき

外部キーは制約なのか。
親子関係があるんだな。
テーブルが多くなると、こういった削除、変更でエラーが起きたり先に削除・更新されたりするのか。
気をつけないといけないな。

キーとなる列のデータ型

何らかのコードやIDといった表記体系をきっちり定まったデータを、固定長文字列のデータ型に格納して使います

気づき

idには固定長文字列を使うのか。

出典

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?