ページの先頭行へ戻る
Symfoware Server V12.1.x RDB運用ガイド(データベース定義編)
FUJITSU Software

1.2.2 論理構造

論理構造は、スキーマとその要素である実表から構成されます。

スキーマ

スキーマは、表のデータ、表の定義データから構成されます。スキーマをどのような実表で構成するかについては、データベースを使用する業務の内容、処理するデータの内容およびデータの処理方法を考慮して決める必要があります。スキーマの構成は、スキーマ定義文で定義します。スキーマ定義文で定義する事項は以下のとおりです。

実表名および実表の形式

スキーマ定義データは、RDBディクショナリに登録されます。実表のデータは、データベーススペースに格納されます。RDBディクショナリには、複数のスキーマ定義を登録することができます。また、1つのスキーマに属する実表のデータは、1つのデータベーススペースに全部格納したり、実表単位に複数のデータベーススペースに分けて格納したりできます。

以下に、複数のスキーマを複数のデータベーススペースに格納する場合の例を示します。

図1.4 スキーマとデータベーススペースの対応例


実表

実表は列と行から構成されます。“図1.5 実表の形式の例”では、1行で1つの製品のデータを構成します。1行のデータはいくつかの列から構成され、列がデータ項目に該当します。1つの製品のデータ(1行)は、製品番号、製品名、在庫数量および倉庫番号の4つのデータ項目(列)から構成されています。

実表の構成は、スキーマ定義文で定義します。それぞれの実表をどういうデータ項目から構成するかは、スキーマ定義における表定義で定義します。表定義の定義事項を以下に示します。

表名

表には名前をつけます。これを“表名”と呼びます。

表名は、データ操作の対象とする表を指定する場合に使用します。また、表定義の削除や追加を行う場合に、削除、追加の対象とする表定義情報を指定するためにも使用します。

実表を構成する列には、以下の定義があります。

列名:

列には名前をつけます。これを“列名”と呼びます。データ操作で処理の対象とする列を指定する場合にこの列名を使用します。また、列名はスキーマ定義の変更を行う場合に、変更の対象とする列を指定するためにも使用します。

列のデータ型:

各列のデータには、文字型、数値型、日時型などの型があります。

列の既定値:

データの挿入時および更新時に、列のデータが省略された場合に設定される値を定義します。

列の制約:

“当該列に値が格納されていない行があってはいけない”、または“当該列に同一の値をもつ行が2つ以上あってはいけない”、などの表作成上の制約条件を定義します。

表の制約

表に対して、“1つまたは複数の列で、同一値をもつ行が2つ以上あってはいけない”という制約を適用するか否かを定義することができます。この制約を“一意性制約”と呼びます。

図1.5 実表の形式の例


ビュー表

ビュー表はデータ操作のための仮想的な表であり、データの実体は存在しません。ビュー表は、“図1.6 ビュー表の概念”のように、実表の部分表に相当します。ビュー表の定義は、ビュー定義で行います。ビュー定義で定義する項目は以下のとおりです。

表名:

ビュー表の名前を定義します。

列名:

ビュー表の列の名前を定義します。

ビュー表の列および行の定義:

実表またはビュー表の、どの部分をビューとするかを定義します。

図1.6 ビュー表の概念


インデックス

インデックスは、データベースのデータ検索の効率を高めるためのものです。データを操作する場合、一般に表の列データを検索キーとしたデータ検索をともないます。したがって、データ検索効率がデータ操作効率を決める重要な要素となります。インデックスは、表の各列に作成するか否かを指定することができます。また、複数の列を結合して、1つのインデックスとして指定することもできます。インデックスを作成していない列の検索は、インデックスを作成している列の検索に比べて検索効率が低下します。したがって、データ検索のキーとなる列には、インデックスを作成する必要があります。

インデックスを作成するとその分だけデータベース容量が必要になります。データベーススペースの大きさを決める場合には、インデックスに必要なスペース量も考慮する必要があります。

インデックスはデータベース容量およびデータ操作効率に影響しますが、データ操作には何の影響もありません。

インデックス定義は、格納構造定義文で定義します。

インデックスは実表の列に対して定義します。ビュー表に対しては定義できません。

インデックス定義は、スキーマ定義以降、データベースにデータを格納する前に行います。しかし、データベース創成またはデータ操作によってデータベースにデータを格納したあとに、インデックスを定義することも可能です。インデックスは、インデックス定義後のデータベース創成時およびデータ操作(更新)時にデータベーススペース内に作成されます。

以下に在庫表の在庫数量列に対してインデックスを作成した場合を示します。なお、この図はインデックスを理解するための図であり、データベースの形式を正確に表している図ではありません。

図1.7 インデックスの概念

在庫数量のインデックスは、在庫数量値および対応する在庫表上の行の位置を表すポインタから構成され、在庫数量値の順に並び換えられています。たとえば、在庫表から在庫数量が60である行を検索する指定の場合、まず、在庫数量のインデックスが検索されます。インデックスは在庫数量値の順に並べられていますので高速に検索ができます。インデックス上で検索が終わると、そのポインタから在庫表上の行の位置が即座に分かり、指定の行が検索されます。