ビュー
ビューとは,複数の表を結合したり,集合演算したり,あるいは単一の表の特定の表示状態(表示列の選択,レコードの選択条件)を指定したりして,仮想の表(ビュー表)を作成し,それを一般の表と同じように扱うことができる機能です。
- 目次
- ビューの種別
- 結合ビュー
- 集合演算ビュー
- ビューファイルとビュー表
- ビューの利用
- ビューファイル
- ビューの評価とビュー表
- ビューの属性と登録情報
DBPro で扱うビューには次の種類があります。
-
結合ビュー | 項目の値をキーにしてレコードを連結し,表を横方向に結合します。 |
集合演算ビュー | レコードを集合の要素として,表の集合演算を行ないます。次の3種類があります。
和集合ビュー
差集合ビュー
積集合ビュー |
結合ビューは,複数の表(ビューの元表と呼びます)を横方向に結合(join)し,すべての表の項目を一つの表として見るための仮想の表(導出表)です。そのとき,結合ビューに含まれるレコードの作り方にはいくとおりかの方法があります。
自然結合
- 自然結合はもっとも一般的に使われるビューであって,実用的なビューのほとんどがこの自然結合ビューです。
- 自然結合は,キー項目の値によって別の表の情報を取り出して一つの表にまとめます。商品台帳や顧客台帳から商品コードや顧客番号をキーにして詳細情報を取り出す場合などに自然結合ビューを利用できます。
- 例
請求書発行のために,顧客台帳から客コードによって客先情報,商品台帳から商品コードによって個別商品情報を取り出すことを考えます。
- 売上げ表:[日付] [客コード] [商品コード] [個数]
- 顧客台帳:[客コード] [客先名] [住所] [電話]
- 商品台帳:[商品コード] [商品名] [規格] [単価]
の三つの表から,次のビュー表を作成できます。
- 請求情報:[日付] [客コード] [客先名] [住所] [電話] [商品コード] [商品名] [規格] [単価] [個数] [金額]
請求情報の [金額] は計算項目として付加できます。
この請求情報表を作成した後は,通常の表と同様に表印刷やカード印刷の対象になりますので,適当なレイアウトを指定して印刷します。
直積
- 指定したすべての元表から一つずつ取り出したレコードを連結して構成されるレコードのすべての組み合わせ。
- たとえば,
- 売上げ表:[日付] [客コード] [商品コード] [個数]
- 顧客台帳:[客コード] [客先名] [住所] [電話]
- 商品台帳:[商品コード] [商品名] [単価]
の三つの表があり,それぞれの表のレコード数が
- 売上げ表=100,顧客台帳=200,商品台帳=500
であったとします。直積で生成される表の項目は
- [日付] [客コード] [商品コード] [個数] [客コード] [客先名] [住所] [電話] [商品コード] [商品名] [単価]
になり,レコード数は,100×200×500=10,000,000 という膨大な数になります。
- 直積は,ビューや結合の理論的なベースとしての意味が強く,実務で使われることはあまりありません。
- DBPro では,照合キーや選択条件を一切指定しない結合ビューを定義すれば直積が生成されます。
直積からの選択
- 直積は単純にすべての組合せを生成した表ですが,直積に対してレコード選択の条件を設定することにより意味のある表を生成させることができます。
- 直積に対して照合キーとして指定した項目が等しいレコードだけを選び出したものが等値結合と呼ばれるビューであり,さらに等値結合から重複する照合キー項目を除いたものが自然結合です。
- ビューの新規作成時に照合キーを指定せず,ビュー定義ウィンドウでビューの選択条件を指定すると,それは直積からの選択条件になります。特殊なビューを作成するときに用います。
単一元表からのビュー
- 結合ビューの元表を一つだけにすると,元表の特定レコードを選択し,必要な項目だけを見せるための仮想の表として利用することができます。これは,あたかも編集ウィンドウでレコード選択を実行し,表示形式を指定したウィンドウのようになります。
- 集合演算ビューでは,元表のそれぞれのレコードを集合の要素として集合演算を行ない,新しいレコードの集まりを作成します。
和集合ビュー | 指定したすべての元表に含まれるすべてのレコードを含む表を作ります。 |
差集合ビュー | 第1元表には含まれていて,第2元表以降の表に含まれていないレコードだけの表を作ります。差集合ビューでは,第1元表の決め方によって,結果が変わるので注意してください。 |
積集合ビュー | 指定したすべての元表に共通なレコードだけを含む表を作ります。 |
- ある二つのレコードが同じであるか否かは,ビュー定義で元表項目として指定されたすべての項目の値が等しいか否かで決定されます。ビューには元表項目以外の項目(元表計算項目,基本項目,計算項目,仮想項目)を含めることができますが,それらの項目は集合演算の対象にはならず,結果のビュー表に表示されるだけです。
- 元表に含まれているある項目を,集合演算の基準には使わず値だけを結果のビュー表に表示したいときは,その項目だけを参照している元表計算項目を定義します。
- 集合演算ビューのすべての元表は,元表項目および元表計算項目で参照されているすべての項目を含んでいなければなりません。元表項目,元表計算項目のどちらからも参照されていない元表の項目は,結果のビュー表に何の影響も与えません。
どのようなビューであるかの定義情報が格納されるファイルと,実際にビューを参照するときの表とは別のものです。
ビューの機能を利用するには,
- どのようなビューであるかの定義情報を保存しておくビューファイルを作成し,
- そのビューファイルを表ファイルと同様に,開いたり,カードの対象表として指定します。
- ビューファイルを開こうとすると,ビューファイル中に保存されている定義情報に従って,元表のデータから一時的な表が作成されます。この表をビュー結果表,あるいは単にビュー表と呼びます。
- 生成されたビュー表は,通常の表ファイルとまったく同様に扱うことができます。
ビューは,次の場面などで利用することができます。
- 普通に開くと,表編集ウィンドウで参照することができます。[ファイル]-[開く]
- カード対象表指定ダイアログで対象表としてビューを指定してカードを作成することができます。これにより [ファイル]-[開く]コマンドでそのカードを指定すればカード編集ウィンドウでビューを参照することができます。機能ガイド:カードの新規作成
- 表編集ウィンドウにビューを読み込むと,ビューが評価され,作られたビュー表が編集中の表に入力され,永続的なデータになります。[ファイル]-[読込み]
- ビューファイルにはビューの定義情報が格納されます。定義情報には,ビュー属性,ビュー項目属性,ビューの印刷形式などがあります。
- 参照するためにビューを開くと,結合や集合演算によって元表からビュー表が生成され,一時的な表ファイルが作成されます。ビューファイル自身にビューを構成するレコードが格納されることはありません。
- ビューファイルは次の拡張子をもちます。
*.DPV | ビューファイルです。 |
*.~PV | ビューのバックアップファイルです。 |
ビュー表は,ビューを開いたときに新たに生成される一時的な表ファイルであって,定義情報を保存しているビューファイルとは別のものです。
- ビュー評価
- ビューを参照しようとすると,ビューファイル中に保存されている定義情報に従って,その時点の元表のデータからビュー表用の一時的な表ファイルが作成されます。このことをビューの評価といいます。作られたビュー表は,その表を閉じると失われます。
ビューの目的の一つに「重複しないように一元管理された台帳などから最新のデータを取り出して参照する」ということがありますので,その都度ビューを評価するということは重要です。参照するたびにビューが評価されなかったとすると,台帳とは異なる古いデータを参照してしまう可能性があります。
他方,ビューの評価は多くの時間を要する処理です。無駄な評価が起こらないように,時には評価結果を別のファイルに保存する工夫も必要でしょう。
- ビュー評価の高速化
-
自然結合によって台帳から情報を取り出すときは,商品コード,社員番号など台帳の主キーとなる項目を指定し,その主キー項目を第1整列キーとする索引をあらかじめ作成しておきます。こうすることによって,ビューを評価する際にその索引が利用されるため,評価の速度が速くなります。
主キーでなくとも,照合に使おうとする項目を第1整列キーとした索引を元表に登録しておくと評価の速度が速くなります。
照合キーを指定しない結合であっても,ビューの選択条件が指定されている場合には,その条件中で参照されている項目を第1整列キーとした索引を登録しておくと,速くなることがあります。
- ビュー表のデータ編集
- ビューを評価した後は,通常の表とまったく同じですので,レコードの挿入,削除,更新もできます。
他方,ビュー表は元表とはまったく別の表として作成されるので,評価後はビュー表のレコードと元表のレコードとはまったく関係ありません。本来のリレーショナルデータベースならば,単一表からのビューや自然結合によるビューなど,ビュー表のレコードと元表のレコードとが一対一の対応が付くものについては,ビューのデータを更新すると元表のデータも更新されるべきですが,DBPro のビューではビューを更新してもそれが元表に反映されることはありません。(更新の結果を元表に反映させる機能は将来のバージョンで計画されています。)
原則として,更新されたデータもビュー表をクローズするときに捨てられます。あくまでもビューは,データ参照の手段としてお使いください。
- ビュー表のクローズと保存
- ビュー表を閉じると,そのファイルは廃棄されます。したがって,表編集またはカード編集中に更新したデータ,登録した条件,表示形式など一切のものは捨てられてしまいます。もし,評価したビューのデータを保存しておきたい場合には,[ファイル]-[名前を付けて保存]コマンドを実行し,別のファイルに保存した表を再び開いて編集してください。そうすれば,その表はもはや通常の表となりますので,データその他の情報もすべて保存されます。
ビューの性格を定義付ける情報には以下のものがあります。これらは,ビュー定義ウィンドウで定義され,ビューファイルに格納されます。
- ビュー種別
- 結合ビューと集合演算ビューがあります。ビューの種別
新しいビューファイルを作る最初に,ビュー種別指定ダイアログで指定します。
- ビュー元表
- ビューに表示されるレコードの元になるレコードがある表ファイルです。いくつでも指定することができます。
結合ビューの場合,最初に指定する元表(第1元表)は,結果のビュー表のレコード順序を規定したり,強制結合の際に結合相手がなくてもレコードが生成されたりします。
これに対して,2番目以降に指定する元表は,基本的にはその値を取り出すことが目的であり,第1元表のキー項目で参照されていないレコードは結果のビュー表には影響を与えません。
ビュー属性指定ダイアログで指定します。
- 照合キー
- 結合ビューの場合に,照合キーとして指定した項目の値が等しいレコードが結合されて,ビュー表の一つのレコードになります。照合キーダイアログで指定します。
- ビュー選択条件
- 結合または集合演算によって得られたレコードに対して,更に条件を適用し,その条件に合致するレコードだけをビュー表に表示します。ビュー選択条件ダイアログで指定します。
単一の元表をもつ結合ビューに対して指定すれば,元表に対して常に同じ条件で選択するだけのビューとして使えます。また,照合キーを指定しない結合ビューに対して指定すると直積からの選択として使えます。
- ビュー項目属性
- 次の点を除いて表の項目属性と同じです。
- 項目名は元表の項目名とは独立に命名することができます。ビュー表における項目名を元表での項目名と陽に区別するときは,「ビューでの項目名」あるいは「ビュー項目名」と呼びます。
ビュー定義中の式などで,元表の名前で修飾されていない項目名を書いた場合,その項目名はビューでの項目名とみなされます。
- 項目種別には次があります。
- 元表項目
- 元表の項目を単独で参照する項目。項目属性として[対応項目]を指定します([対応項目]は,項目属性ダイアログやビュー定義ウィンドウでは[計算式]と同じ場所に表示されます)。
- 元表計算項目
- 元表の項目名を含む式で表現される項目。ビュー評価時に値が設定された後は,基本項目と同じ動きになります。項目属性として[計算式]を指定します。
元表計算項目の式に一つの元表項目名だけを書いた場合,その項目には元表の対応する項目の値が表示されますが,そのビューが集合演算ビューであった場合,その項目はレコードの同一判定には用いられません。(将来のバージョンにおいて元表更新可能なビューが実現された場合,元表項目の更新は元表に反映されますが,元表計算項目の更新は元表に反映されません。)
- 基本項目
- 元表の項目とは関係のない項目をビュー表に含めることができます。ビュー評価時に初期値式の値が設定されます。項目属性として[初期値式]を指定します。
- 計算項目
- 元表の項目名を含まない式で表現される項目。式にはビューでの項目名および組込み関数などだけを書くことができ,通常の表の計算項目と同じ動きになります。項目属性として[計算式]を指定します。
- 仮想項目
- 計算項目と同様に,元表の項目名を含まない式で表現し,通常の仮想項目と同じ動きになります。項目属性として[計算式]を指定します。
ビュー項目属性は,項目属性ダイアログで指定します。
- 単一化
- 結合や集合演算の結果,ビュー表に同じレコード(すべての項目の値が同じレコード)が複数含まれることがあります。それらを一つだけ残して他を自動的に削除させることができます。ビュー属性ダイアログで指定します。
- 強制結合
- 結合ビューにおいて,第2元表以降に第1元表のレコードに対応するレコードが見つからない場合でも結果の表にレコードを作成するようにします。これを指定しておくと,商品台帳などのデータを結合によって参照するときに,台帳に未登録のレコードを参照しようとしても元表のレコードが消滅してしまわないようになります。ビュー属性ダイアログで指定します。
- 表示形式
- ビュー表を開いたときの表示形式を指定することができます。また,<標準> 表示形式とは別の表示形式を登録しておくと,ビュー表の表編集ウィンドウで表示形式を切り替えることができます。表:表示形式,表示形式ダイアログ
- 印刷形式
- ビュー表の表編集ウィンドウで使う印刷形式をあらかじめ作成しておくことができます。ビューファイルに定義しておいた印刷形式がビュー表にも定義され,ビュー表の表印刷に使うことができます。表印刷と印刷形式,印刷形式ダイアログ
- フォント設定
- ビュー表で使う標準の文字フォントの組を指定します。フォント,フォント設定ダイアログ
- 権限
- ビューファイル(定義)およびビュー表(評価結果)を参照・更新する許可を与えます。ビューファイルに対する権限は次のものが設定できます。利用者管理と権限,権限ダイアログ
- ビュー表の参照(ビューファイルの評価)
- ビュー表のレコードの更新
- ビュー表へのレコードの挿入
- ビュー表からのレコードの削除
- ビューファイルの再定義
- 注:
- ビュー表の変更(更新,挿入,削除)が元表に反映されることはありません。ここでの権限は,あくまでも評価の結果得られた一時的な表に対するものです。
- ファイル内変数
- ビュー表で使うファイル内変数を定義しておくことができます。ビューファイルに定義したファイル内変数は,ビューが評価されてビュー表が生成されたときに,指定した値に初期化されてビュー表のファイル内変数になります。変数定義ダイアログ