データベースのつながり方

表と表が「つながる」から、データは迷子にならない

この記事の要約

業務のデータベースは、お客様・注文・商品といった小さな表を番号でつなぎます。同じ情報を二重に持たないから、住所変更も直すのは 1 か所で済みます。

  • 主キーは行を 1 つに特定する重複しない番号
  • 外部キーは実在する行しか指せない
  • 番号でつながるから直し漏れが起きない

なぜ住所変更が1か所で済むのか

注文の記録をExcelで管理すると、1行にお客様の名前や住所まで全部を書き込みがちです。同じお客様が10回注文すると住所は10か所にコピーされ、直し漏れの危険が生まれます。データベースは逆に、表を分けて番号で参照し合います。

注文管理のデータベースをのぞいてみる

注文した人どの注文の明細かどの商品か
customersお客様名簿
  • PKiduuid
  • nametext
  • UNNemailtext
orders注文の台帳
  • PKiduuid
  • FKNNcustomer_iduuid
  • ordered_attimestamptz
products商品カタログ
  • PKiduuid
  • nametext
  • pricenumeric
order_items注文の明細
  • PKiduuid
  • FKNNorder_iduuid
  • FKNNproduct_iduuid
  • quantityinteger

テーブル・列・関係をクリックすると、説明と関連がここに表示されます。

この図をテキストで読む

ER図「注文管理データベースの4つの表」。テーブル4個、関係3本。 【テーブル】 - customers(お客様名簿、列3個、主キー: id) - orders(注文の台帳、列3個、主キー: id) - products(商品カタログ、列3個、主キー: id) - order_items(注文の明細、列4個、主キー: id) 【関係】 - orders.customer_id → customers.id(多対1): 注文した人 - order_items.order_id → orders.id(多対1): どの注文の明細か - order_items.product_id → products.id(多対1): どの商品か

PK=主キー、FK=外部キー。カラスの足=多、縦棒=1を表します。

Excelの表と何が違う?

Excelには「他の表の行しか指せない」「重複登録を拒否する」といった約束を強制する仕組みがありません。リレーショナルデータベースは約束を自身で見張るので、人が気をつけなくてもデータが壊れにくいのです。

押さえておきたい用語

主キー(PK)
その表の中で行を1つに特定する番号や記号。同姓同名があっても主キーは絶対に重複しません。
外部キー(FK)
他の表の主キーを指す参照。「実在する行しか指せない」ことをデータベース自身が保証します。
リレーショナルデータベース
データを種類ごとの表に分け、キーのつながり(リレーション)で結ぶ方式のデータベース。業務システムの大半はこれです。
この用語の解説を読む
ER図
表(Entity)と関係(Relationship)を線で結んだ図。「1対多」まで読み取れる、データベース設計の共通言語です。

ここから先へ

この解説とつながりのあるページ

データベースの歩き方』の歩き方 1/6 歩目次は「リレーショナルデータベース