pulpul 日本の試験

ITパスポート 概念書 · データベース

データベース設計

要点と定義

データベース設計では、業務で使うデータ項目を洗い出し、項目同士の関連を整理します。E-R図は、顧客や製品などの実体と実体間の関係を図示し、業務上の意味を明らかにします。設計時のデータ分析は、項目と関連を整理する作業です。

E-R図の矢印が1対多を表す表記では、矢印の始点側の1件に対して、終点側が複数件に対応します。出版社1社に複数の著者が対応し、著者1人が複数の本を書くなら、それぞれ出版社から著者、著者から本へ矢印が向きます。

正規化は、項目間の関連性を分析して表を整理・分割し、データの重複や更新時の不整合を減らす作業です。商品番号で商品名と単価が決まるなら、商品情報を商品表に分け、受注ごとの個数は受注と商品との組合せに対応させます。

主キーは表の各レコードを一意に識別する属性です。値の重複は許されず、複数フィールドの組合せでも構成できます。値は数値に限られません。主キーに対応するインデックスを作る実装もあります。主キーは一意識別、インデックスは検索の高速化という役割です。

外部キーは、別の表の主キーを参照する列です。参照先に登録された対象だけを関連付けたい場合に使います。インデックスは検索を速くするため必要に応じて作成します。

適用条件と例

主キーにできるかは、表の各行をその値で一意に識別できるかで判断します。従業員番号が一人ずつ異なるなら単独で主キーになります。同姓同名があり得る名前や、複数人で共有される部門コードは単独では使えません。

会員番号が店舗ごとに付与される場合、会員番号だけでは店舗をまたいで一意にならないため、店舗コードと会員番号の組合せを会員表の主キーにします。会員表には会員名と会員種別コードを保持し、会員種別名は会員種別表で管理します。

学生と科目の登録がある場合に限って成績を記録するなら、成績表の学生番号と科目コードを、それぞれ学生表・科目表の主キーへ参照させます。未登録の学生や科目を成績表に登録できないようにする関係です。

他の項目から計算できる値を保存すると、元データ更新後に不整合が起きることがあります。たとえば満年齢は生年月日と基準日から算出できるため、両方を保存するなら更新の扱いに注意します。

誤りやすい点

主キーの目的は各行の一意な識別です。検索可能にすること自体が主な理由ではなく、他表からの参照を防ぐものでもありません。複合主キーでは、各列単独で重複していても、組合せ全体が一意なら使えます。インデックスとの重複設定ができないとは限らず、主キーに対応するインデックスを作る実装もあります。

ここまでが冒頭部分です。ログインすると、無料でも1日2節まで全文をお読みいただけます。

アプリでこの節を読む