DB基礎 (RDB概念)

関係データベースの基本概念とキーを学びます。

関係データベース (RDB) は基本情報試験で頻出。テーブル・主キー・外部キーの基本概念を学びます。

日野 こむぎ(普段) 日野 こむぎ

データベースって、エクセルみたいなもん?

藤森 さやか 先生(笑顔) 藤森 さやか 先生

近いけど、もっと厳格なのよ。
RDBは表 (テーブル) でデータを管理し、表同士を関連付けて使うの。

青木 澪(普段) 青木 澪

表は行 (レコード/タプル) と列 (カラム/属性) で構成。
各行を一意に識別する主キー (Primary Key) と、他の表の主キーを参照する外部キー (Foreign Key) が重要よ。

桃井 すみれ(普段) 桃井 すみれ

外部キーって、何のためにあるんですかぁ?

青木 澪(普段) 青木 澪

テーブル間の関連を表すためよ。
たとえば「注文表」が「顧客表」の顧客IDを外部キーとして持てば、誰の注文かを参照できる。
これで{kw('参照整合性', '外部キーが参照先の主キーに存在することを保証する制約')}が保たれるのよ。

藤森 さやか 先生(普段) 藤森 さやか 先生

DBMSはDBMSと呼ばれ、Oracle・MySQL・PostgreSQL・SQL Serverが代表ね。

日野 こむぎ(笑い) 日野 こむぎ

よっしゃ、テーブルと主キー・外部キー、覚えた!

顧客表と注文表でキーを確認する

次の2表を考えます。顧客表の顧客IDは顧客を一意に識別し、注文表の注文IDは注文を一意に識別します。注文表の顧客IDは、顧客表の行を指す外部キーです。

顧客表
顧客ID (主キー)氏名
C01佐藤
C02鈴木
注文表
注文ID (主キー)顧客ID (外部キー)金額
O101C023,000円
O102C011,500円

新しい注文O103に顧客ID C99を入れようとしても、顧客表にC99が存在しないなら参照整合性制約に反します。一方、同じ顧客が複数回注文するので、注文表の顧客IDは重複して構いません。外部キーだから一意ではなく、参照先との対応を保証する列だと理解しましょう。

制約と検索機能を混同しない

主キーには一意性とNULL不可が求められます。候補キーが複数ある場合は、その中から一つを主キーとして選び、残りは代替キーになります。複数列を組み合わせて初めて一意になる「複合主キー」もあります。たとえば受注明細なら、注文IDと明細番号の組合せを主キーにできます。

仕組み主な目的一意性を保証するか
主キー制約行を一意に識別する保証する。NULLも不可
外部キー制約参照先との整合性を守る参照する側の重複は許される
インデックス検索を高速化する通常は保証しない。一意インデックスは別
ビュー問い合わせ結果を仮想的な表として見せる行識別の制約そのものではない

選択肢にインデックスがあると「検索の起点」という説明に引かれがちですが、設問が問うのは高速化か、一意識別か、参照整合性かを確認します。また、顧客を削除するときにその顧客を参照する注文が残っていれば、削除を拒否する、関連行も削除するなど、定義された参照動作が必要です。DBMS名ではなく、制約の役割から判断するのが解法です。

確認クイズ

リレーショナルデータベースで、テーブル内の各行を一意に識別する列はどれか。

  1. インデックス
  2. 主キー
  3. 外部キー
  4. ビュー
こたえを見る

正解: 2. 主キー

主キー (Primary Key) はテーブル内の各行を一意に識別する列です。NULLや重複が許されず、検索の起点となります。

🔖 この記事の関連書籍

Amazonアソシエイトリンクを含みます。他分野は おすすめ書籍ページ へ。