12.1 表を設計するときの検討項目
HiRDBのデータベースはリレーショナルデータベースです。その論理構造である表をどのように設計するかを検討します。
まず,表を正規化しておくことが必要です。ただし,同じように正規化した表であっても,ユーザ用RDエリアへの格納の仕方などによって,表に対する処理性能が異なります。また,処理性能よりも操作性を重視する場合もあるため,期待する効果を考慮した表の設計が必要になります。表を設計するときの検討項目を次の表に示します。
設計作業ごとの検討項目 |
長所 |
短所 |
記載箇所 |
|
---|---|---|---|---|
表の正規化 |
表の格納効率や処理効率が向上します。 |
表の検索時に,正規化後の表同士の結合検索が必要になる場合は,処理性能が落ちることがあります。 |
「表の正規化」を参照してください。 |
|
表の横分割 |
表の横分割の指定 |
|
|
「表の横分割」を参照してください。 |
キーレンジ分割 |
|
キーレンジを意識しないと,RDエリアに均等に格納できません。 |
||
フレキシブルハッシュ分割※ |
|
|
||
FIXハッシュ分割※ |
|
表にデータが格納されているとユーザ用RDエリアの追加及びハッシュ関数の変更ができません。 |
||
表のマトリクス分割 |
|
通常の横分割に比べ,RDエリアを更に細分化できるため,運用や管理が複雑になります。 |
「表のマトリクス分割」を参照してください。 |
|
トリガの定義 |
ある表への操作を契機として,自動的にSQL文を実行するようにできます。 |
特にありません。 |
「トリガの定義」を参照してください。 |
|
ビュー表の作成 |
|
特にありません。 |
「ビュー表の作成」を参照してください。 |
|
FIX属性の指定 |
|
特にありません。 |
「FIX属性の指定」を参照してください。 |
|
主キー(プライマリキー)の指定 |
主キーを定義した列には,一意性制約と非ナル値制約が適用されます。 |
特にありません。 |
「主キー(プライマリキー)の指定」を参照してください。 |
|
クラスタキーの指定 |
|
|
「クラスタキーの指定」を参照してください。 |
|
サプレスオプションの指定 |
|
特にありません。 |
「サプレスオプションの指定」を参照してください。 |
|
ノースプリットオプションの指定 |
データの格納効率を向上できるため,ディスク所要量を削減できます。 |
特にありません。 |
「ノースプリットオプションの指定」を参照してください。 |
|
バイナリデータ列の指定 |
文書,画像,音声などの可変長データを指定できます。 |
特にありません。 |
「バイナリデータ列の指定」を参照してください。 |
|
文字集合の指定 |
表の列ごとに異なる文字集合の文字列データを格納できます。これによって,次のことができます。
|
特にありません。 |
「文字集合の指定」を参照してください。 |
|
WITHOUT ROLLBACKオプションの指定 |
採番業務で使用する表を定義する場合,表に対する更新処理完了を契機に更新行に対する排他が解除されるため,排他待ちの発生を削減できます。 |
特にありません。 |
「WITHOUT ROLLBACKオプションの指定」を参照してください。 |
|
改竄防止機能の指定 |
表データを誤って,又は不当に更新されることを防止できます。 |
改竄防止表があるRDエリアに対して使用できない機能や,SQL,ユティリティ,コマンドの実行に制限があります。 |
「改竄防止機能の指定」を参照してください。 |
|
繰返し列を含む表 |
|
特にありません。 |
「繰返し列を含む表」を参照してください。 |
|
抽象データ型を含む表 |
複雑な構造のデータを表に格納して,通常の表データと同様に操作できます。 |
特にありません。 |
「抽象データ型を含む表」を参照してください。 |
|
共用表 |
|
共用表を更新する場合,全バックエンドサーバで,更新する共用表があるRDエリアに排他を掛けるので,共用RDエリアのほかの表にアクセスする業務があると,デッドロックが発生することがあります。 |
「共用表」を参照してください。 |
|
参照制約 |
複数の表間のデータの整合性チェック,及びデータ操作を自動化できます。 |
被参照表や参照表を更新する場合,データの整合性をチェックするため,チェックに掛かる処理時間が増加します。 |
「参照制約」を参照してください。 |
|
検査制約 |
データの追加又は更新時のチェックを自動化できます。 |
検査制約が定義された表を更新する場合,データの整合性をチェックするため,チェックに掛かる処理時間が増加します。 |
「検査制約」を参照してください。 |
|
圧縮表 |
|
圧縮列のデータをSQLやユティリティで操作する場合,圧縮処理や伸張処理のオーバヘッドが掛かります。 |
「圧縮表」を参照してください。 |
|
一時表 |
|
HiRDB開始時,又は一時表に最初にINSERT文が実行された時に,一時表用RDエリアを初期化するオーバヘッドが発生します。 |
「一時表」を参照してください。 |