データベースの設計

この記事での学習内容 ITパスポート 基本情報 応用情報

  • 開発計画立案,外部設計,内部設計,プログラム作成,テスト,移行に至るまでのデータベース開発の工程と手順,手法を理解する。
  • 概念設計では,要求定義で定義されたデータ項目と,システム機能設計の際に発生したデータ項目をまとめ,データ項目全体を設計することを理解する。また,DBMS に依存しないデータの関連を表現する手法として,E-R 図を使用した構成要素,属性,関連の表し方,特徴,カーディナリティ(1 対1,1 対多,多対多)などを理解する。
  • データの重複や矛盾が発生しないテーブル(表)設計の考え方,主キー,外部キーなどの概念,参照制約,一貫性制約などの制約を理解する。また,ユーザビューの機能と定義を理解する。

用語例:システム分析,要求定義,企業データモデル,データモデル,概念データモデル,論理データモデル,物理データモデル,副次索引,分割法,DOA(Data Oriented Approach:データ中心アプローチ)、バックマン線図,エンティティ,アトリビュート,リレーションシップ、配置モード,親子集合順序,親子集合,索引,フィールド(項目),レコード,ファイル,NULL,一意性制約

データベースの概念設計

データベースの概念設計(外部スキーマの設計)では、DBMSに依存しないデータの関連を表現するのが望ましい形です。そのような方法の一つにE-R図があります。

E-R図(Entity Relationship図)

E-R図(E-Rモデル)は構造化分析の技法の一つで、データの関連を図で表現することができます。データベース設計の時に、ユーザの味方(ビュー)を定義するのに用いられます。

実体(エンティティ)

E-R図は対象データを実体(エンティティ)として四角形で表し、実体と実体の結びつきを関係(関連、リレーションシップ)として矢印(又はひし形付きの線)で表します。

*E-R図に描く実体は「社員」や「製品」といった実在するものでも、「注文」などの概念的なものでも構いません。

アトリビュート

属性(アトリビュート)とは、実体に付随する性質、例えば「社員」に付随する「社員番号」や「氏名」のことです。

実体(エンティティ)がデータベースの表に相当し、アトリビュートは表の項目(列)になります。

関係(リレーションシップ)

関係とは、実体と実体の結びつきのことです。それに名前をつけても付けなくても構いません。関係に対して、カーディナリティを付与して、関係性を示します。

カーディナリティ

カーディナリティとは、集合論の基数あるいは濃度という意味の用語です。データベースの場合には、関係(リレーションシップ)における、「1対1」、「1対多」、「多対多」という関係を指します。

関係性を線で表す場合は、「多」を矢じりで示します。データベースを設計する作業の中には、カーディナリティを定める作業があります。

  • 1:1 ・・・ 一つの実体に対して、一つの実体しか結びつかない。
  • 1:n ・・・ 一つの実体に対して、複数の実体が結びつく。
  • m:n ・・・ 複数の実体に対して、複数の実体が結びつく。

データベースの論理設計

データベースの論理設計では、データの重複や矛盾が発生しないテーブル(表)設計の考え方が必要となります。

主キー、外部キーの設定や、参照制約、一意性制約などの制約を用いてそれらの問題を回避します。

主キー

スキーマを定義する時、表の主キーとなる列を決めます。

主キーとは、各行を識別するために使うキー項目です。表を構成する列のうち、同じ内容が重複して入ることがなく、その内容によって必ず特定の1行を選び出せるような列をその表の主キーに指定します。

主キーの列の値をNULL(空値)とすることは認められません。

また、ある一つの列の内容だけでは行を特定できない場合、複数の列を組み合わせて主キーとすることがあります。これを複合キーといいます。

外部キー

関連する表同士を結びつけるための外部キーを指定します。

外部キーとは、一方の表から他表を参照するためのキー項目です。主キーと違い、一つの表に複数外部キーを設定でき、キーの内容に重複やNULLがあっても構いません。ただし、参照される側は主キーであることが望ましいとされています。

参照する側の表に、参照される表の主キーと同じ内容が登録される列を、外部キーとして持たせておきます。そうすると、外部キーを手がかりに相手の表の主キーと内容が一致する行を探し出し、一つの行として結びつけることができます。

制約

制約とは、データベースに作りこまれたルールのことです。データの正しさ、整合性を保つために設定されます。

表定義の際のDDLで定義できる他、DBMSによっては、運用中に後から制約を追加したり、on/offの切り替えができたりするものもあります。

外部キー制約(参照制約)

互いに参照関係のある表同士は、データの整合性を保つ必要があります。そのため、DBMSは以下を制約によって禁止することができます。

  • 他表から参照されている表の削除
  • 他表から参照されている行の削除
  • 他表から参照されている値の変更
  • 参照先の列にない値を持つ行の挿入
一意性制約

一意性制約とは、表のすべての行において、同じ値が同じ列にあってはならない、という制約のことです。データベースの設計において、必要に応じて一意性制約を指定します。(主キーに関しては、自動的に一意性制約がつくDBMSもあります。)

例えば、商品コードで商品を特定したい場合、商品コードを主キーにし、商品名に一意性制約をつけます。これによって、異なる商品コードであるのに同じ商品名の商品が存在する、といった事態を避けることができます。