第5章 データベースのつながり方

ページ 1 / 4

01/ 04デジタル基礎知識

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

読みはじめる

住所変更でも、直すのは 1 か所だけ

小さな表を番号でつなぎ、同じ情報を二重に持たないからです。

  1. 主キー行を 1 つに特定する重複しない番号
  2. 外部キー他の表の実在する行しか指せない
  3. 二重に持たない番号でつながるから直し漏れが無い

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

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

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

注文した人どの注文の明細かどの商品か
カラムPKNKFKNNTYPE
idお客様の 番号uuid
nameお名前text
emailメールア ドレスtext
NK:未指定
カラムPKNKFKNNTYPE
id注文の番 号uuid
custom er_idどのお客 様かuuid
ordere d_at注文した 日時timestamptz
NK:未指定
カラムPKNKFKNNTYPE
id商品の番 号uuid
name商品名text
price価格numeric
NK:未指定
カラムPKNKFKNNTYPE
id明細の番 号uuid
order_ idどの注文 かuuid
produc t_idどの商品 かuuid
quanti ty個数integer
NK:未指定

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

この図をテキストで読む

ER図「注文管理データベースの4つの表」。テーブル4個、関係3本。 【テーブル】 - customers(お客様名簿、列3個、主キー: id(お客様の番号)、列: id(お客様の番号), name(お名前), email(メールアドレス)) - orders(注文の台帳、列3個、主キー: id(注文の番号)、列: id(注文の番号), customer_id(どのお客様か), ordered_at(注文した日時)) - products(商品カタログ、列3個、主キー: id(商品の番号)、列: id(商品の番号), name(商品名), price(価格)) - order_items(注文の明細、列4個、主キー: id(明細の番号)、列: id(明細の番号), order_id(どの注文か), product_id(どの商品か), quantity(個数)) 【関係】 - orders.customer_id → customers.id(1以上対1): 注文した人 - order_items.order_id → orders.id(1以上対1): どの注文の明細か - order_items.product_id → products.id(1以上対1): どの商品か

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

Excelの表と何が違う?

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

押さえておきたい用語

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