データベースを作成する場合、最初にデータベースの設計を行います。業務の内容、処理するデータの種類と量、およびデータの処理方法などを十分に分析して、データベースを設計する必要があります。
データベース設計の手順には、表の設計、属性の設計、格納構造の設計があります。
DSIに、表のデータ圧縮機能を指定する場合は、“第5章 表のデータ圧縮”を参照してください。
表の設計
業務の内容にあった表の設計を行います。
属性の設計
設計した項目に対する適切なデータのデータ型を設計します。また、列の制約と既定値を設計することもできます。
参照
使用できる属性の詳細は、“SQLリファレンス”を参照してください。
アプリケーションからみると、データベースは表の形式で表現されています。アプリケーションはSQL文によって、あたかも行と列を操作するようにしてデータ操作を行います。
表の形式で表現されているデータを、物理上のページに格納するための構造を“格納構造”と呼びます。データベースの格納構造は、アクセスパスの分析などから最適な格納構造を設計します。また、データ量から表の大きさを算出して、用意するディスクボリュームのスペース量を決定します。表の分割運用の適用は、データ量の成長予測やデータベースの再編成などに許容できる運用時間などを考慮して決定します。
セットアップ時に自動容量拡張の設定を有効にした場合は、DSIの容量は動的に拡張されます。
以下に格納構造の種類を示します。格納構造の詳細は、“第4章 格納構造”を参照してください。
SEQUENTIAL構造
RANDOM構造
OBJECT構造
BTREE構造
ここでは、データベーススペースの割当てを行います。これは、処理するデータ量や領域の使用パターンを考慮し、格納構造の各構成要素に対してデータベーススペースを割り当てます。
格納構造の見積りの詳細は、“第6章 データベーススペースの所要量の見積り”を参照してください。
格納構造定義を行わずにデータベースを定義する場合は、表定義またはインデックス定義で、データを格納するデータベーススペースを指定します。DSO定義およびDSI定義は不要です。
格納構造定義を行わずにデータベースを定義する方法については、“2.8 格納構造定義を行わない場合”を参照してください。
データベースの設計の例として、小売店の在庫管理データベースを“在庫管理データベースの内容”に示します。このデータベースは、小売店の在庫管理業務を実現するもので、以下の3つの表から構成されます。
取り扱う製品とその在庫数量の情報をもつ表
仕入れ先ごとの取引製品とその発注数量、および仕入れ価格に関する情報をもつ表
取引会社の会社名、電話番号、および住所の情報をもつ表
なお、データベースの作成およびデータ操作の説明に、主にこのデータベースを使用します。本節以降でも例として使用しますので、必要に応じて参照してください。
在庫表は以下の4つの列から構成されています。在庫表の内容を“在庫管理データベースの内容”のa)在庫表に示します。
製品につけたコード番号データの列
製品の種類名データの列
製品の在庫数データの列
製品を保管してある倉庫の番号データの列
発注表は以下の4つの列から構成されています。発注表の内容を“在庫管理データベースの内容”のb)発注表に示します。
取引先の会社番号データの列
製品につけたコード番号の列(在庫表の“製品番号”列と対応)
製品の仕入れ価格データの列
製品の発注数データの列
会社表は以下の4つの列から構成されています。会社表の内容を“在庫管理データベースの内容”のc)会社表に示します。
会社につけたコード番号データの列(発注表の“取引先”列と対応)
会社の名称データの列
会社の電話番号データの列
会社の住所データの列
製品番号 | 製品名 | 在庫数量 | 倉庫番号 |
---|---|---|---|
110 | テレビ | 85 | 2 |
取引先 | 取引製品 | 仕入価格 | 発注数量 |
---|---|---|---|
61 | 123 | 48000 | 60 |
会社番号 | 会社名 | 電話番号 | 住所 |
---|---|---|---|
61 | アダム電気 | 111-777-4444 | 東京都 小田区 新蒲田 7-8-9 |
62 | アイデア商事 | 222-888-5555 | 神奈川県 小浜市 旭区 1-2-3 |
63 | 大月産業 | 333-999-6666 | 埼玉県 浦和町 大崎 1-1-1 |
71 | 川上電気 | 444-111-7777 | 大阪府 境田市 赤坂台 4-5-6 |
72 | 龍巻産業 | 555-222-8888 | 大阪府 灘町 東淀川 2-3-7 |
74 | 第一商事 | 666-333-9999 | 京都府 中市 4-16-16 |
在庫管理データベースの各表の列の属性
各表の列の属性を以下に示します。
表名 | 列名 | 列のデータ型 | 列の制約 | 備考 |
---|---|---|---|---|
在庫表 | 製品番号 | SMALLINT | NOT NULL | 製品のコード番号 |
製品名 | NATIONAL CHARACTER(10) | NOT NULL | 製品種類 | |
在庫数量 | INTEGER | - | 在庫製品の個数 | |
倉庫番号 | SMALLINT | - | 保管倉庫の番号 | |
発注表 | 取引先 | SMALLINT | NOT NULL | 取引先の会社番号 |
取引製品 | SMALLINT | NOT NULL | 製品のコード番号 | |
仕入価格 | INTEGER | - | 製品の仕入れ価格 | |
発注数量 | SMALLINT | - | 発注した製品の個数 | |
会社表 | 会社番号 | SMALLINT | NOT NULL | 会社のコード番号 |
会社名 | NATIONAL CHARACTER(10) | NOT NULL | 会社の名称 | |
電話番号 | CHARACTER(14) | - | 電話番号 | |
住所 | NATIONAL CHARACTER(20) | - | 会社の所在地の住所 |
-:NULLを許します。
在庫表、発注表および会社表の関係
在庫表、発注表および会社表の関係を以下に示します。
在庫表と発注表は、製品番号と取引製品で関係が付けられています。また、発注表と会社表は、取引先と会社番号で関係が付けられています。たとえば、在庫表上で製品番号が123の製品は、製品名が“冷蔵庫”、在庫数量が“60”で、この製品が格納してある倉庫の番号が“1”です。そして、この製品の仕入価格および発注数量は、発注表の取引製品が“123”の行から、それぞれ“48000”、“60”であることが分かります。さらに、取引先の会社番号は“61”なので、会社表の会社番号が“61”の行から、その製品の取引先の会社名、電話番号および住所が分かります。