現在地: Visual LANSA 開発者ガイド > 1. アプリケーション、フィールド、データベース、リポジトリの概要 > 1.6 アプリケーション・データベースの作成 > 仮想列の考え方
仮想列の考え方

「仮想列」はLANSAリポジトリの特殊機能です。適切に使えば、アプリケーションの処理ロジックを簡潔にし、ユーザー・インターフェースを改善することができます。

「仮想列」もテーブル内に表示される列ですが、物理データベース・テーブルには存在しません。その値は、テーブル内の列 (基底列) の値をもとに、動的に求められます。(仮想列は別の仮想列から導き出すことも可能です) テーブルの複数列のデータを抽出したり、組み合わせたりして、テーブルにすでに含まれている情報量を拡大することができ、非常に柔軟性があります。

データベースに「概念的な構造」を実装するためにも仮想列が使えます。例えば CENTURY、YEAR、MONTH、DAY という列を組み合わせて、DATE という仮想列を作ることができます。これを「YYMMDD」という書式で格納しておき、検索や表示には「MMDDYY」や「DDMMYY」という書式も使えるようにする、といった設定も可能です。

プログラム側から見ると、仮想列も通常の列と同様、テーブルの一部として扱えます。しかしその値は、実際に格納されているのではなく、レコードの入出力時に I/O モジュールによって動的に求められます。テーブルの内容をそのまま表示した場合、仮想列は現れないので、これをキーとして扱うことはできません。仮想列の例をいくつか紹介します。

このように、列に対する文字列操作や変換、計算などといった処理を、簡潔に記述し、標準化して集中管理することができます。

仮想列はリポジトリに定義します。列単位、テーブル単位で妥当性規則を与えることも可能です。また、基底列に妥当性規則が設定されていれば、仮想列にも適用されます。このように、仮想列は、リポジトリの他の列と同じように使えます。

仮想列は、実テーブル中には存在しないので、LANSA外から直接使うことはできません。LANSA OAM (オブジェクト・アクセス・モジュール) の働きで、存在するように見せかけているのです。したがって、仮想列にアクセスできるのは、LANSA Open を使うクライアント・アプリケーションや、LANSA OAMを使うアプリケーションに限ります。

仮想列は他の列から派生したものであって、テーブル内に実際に存在する列ではありません。したがって、物理テーブルやインデックスのキーとして使うことはできません。キーとして使いたい場合は、テーブルの構成を見直し、仮想列ではなく実列として実装する必要があります。

仮想列を定義する方法としては次のようなものがあります。

タイプや長さの変換、日付から年齢への変換、実行時データ変換など、複雑な処理が必要な場合は、RPGやCで変換方法を定義する必要があります。

別のテーブルの列から仮想列を派生させたい場合については、「事前結合列の考え方」を参照してください。

次のトピックも参照してください。

実列と仮想列の違い

仮想列の応用例