Hitachi

ノンストップデータベース HiRDB Version 9 システム導入・設計ガイド(Windows(R)用)


12.2.1 表の正規化の概要

表を正規化することは,表の格納効率や処理効率の向上を図る上で重要です。表を正規化する際は,表の構成列を検討します。ここでは,次に示す正規化について説明します。

〈この項の構成〉

(1) 表の格納効率を向上させる正規化

一つの表に同じような情報を持つ列が複数ある場合は,この表を複数の表に分けて,それぞれの表に同じような情報を持つ列がなくなるように正規化します。これによって,表に対するデータの格納効率が良くなります。これを次の図の例で説明します。

図12‒1 表に同じような情報を持つ列が複数ある場合

[図データ]

〔説明〕

正規化前のZAIKO表のSCODEの列とSNAMEの列は1対1で対応し,それぞれの列の情報は冗長になっています。このような場合は,ZAIKO表から,SCODEの列とSNAMEの列で構成されるSHOHIN表をほかに作成します。このとき,SHOHIN表では,SCODEの列とSNAMEの列に重複した情報を持たないようにします。

(2) 表の処理効率を向上させる正規化

(a) 複数の業務で同一の表を使用する場合

複数の業務で同一の表を使用する場合は,それぞれの業務で使用する列によって,この表を業務ごとの表に正規化します。これによって,それぞれの表に対する同時実行性が向上します。これを次の図の例で説明します。

図12‒2 複数の業務で同一の表を使用する場合

[図データ]

〔説明〕

正規化前のSKANRI表(商品管理表)を在庫管理業務と受注管理業務で使用しています。このような場合は,SKANRI表を在庫管理業務だけで使用するZAIKO表と,受注管理業務だけで使用するJUTYU表に正規化します。

(b) アクセス頻度の高い列と低い列がある場合

一つの表に,アクセス頻度が高いと考えられる列と低いと考えられる列がある場合は,この表をアクセス頻度が高い列で構成した表と,アクセス頻度が低い列で構成した表に正規化します。これを次の図の例で説明します。

図12‒3 アクセス頻度の高い列と低い列がある場合

[図データ]

〔説明〕

正規化前のZAIKO表を検索する場合,SNO及びSURYOの列と,SNAME及びTANKAの列の間で,検索頻度の比率が9:1であるとします。このような場合は,ZAIKO表を検索頻度の高い列の集まり(ZAIKO2表)と検索頻度の低い列の集まり(SHOHIN表)の二つの表に正規化します。

例えば,ZAIKO表を全件検索するのに,10000回の物理的な入出力が必要であるとします。ZAIKO表をZAIKO2表とSHOHIN表に分割したことで,ZAIKO2表の検索が4500回(=5000×0.9),SHOHIN表の検索が500回(=5000×0.1),合計5000回の物理的な入出力で済むことになり,全体としての表の処理効率が向上します。