データストアとは、ORDAによって提供される、データベースを参照しそのモデルとデータにアクセスするためのインターフェースオブジェクトです。4D v17 では、ds コマンドによって返されるローカルなデータベースのみがデータストア内で利用可能です。
注: データストアに関連したメソッドとプロパティは、ランゲージマニュアルのORDA - データストア の章に詳細な説明があります。
データストアはモデルとデータから構成されています:
- モデルにはデータストアを構成するすべてのデータクラスが格納され、その詳細な情報も含まれます。これはその下地にあるデータベース自体からは独立した存在です。
- データはそのモデル内で使用・保存される情報を参照します。例えば、従業員の名前、住所、生年月日などはデータストア内で扱うことができるデータに含まれます。
コード内で扱われる際には、データストアは、プロパティが、全て定義されたデータクラスであるオブジェクトとして扱われます。データストアは単一の、ローカルあるいはリモートデータベースのみを参照します。
ds コマンドはアプリケーションのデフォルトのデータストアへの参照を返します。このコマンドを呼び出す場合、4D は4D データベースの各テーブルとフィールドを返されたオブジェクトの属性として自動的に扱います:
- テーブルはデータクラスへとマップされます
- フィールドはストレージ属性へとマップされます
- レコードはエンティティへとマップされます
- リレーションはリレーション属性へとマップされます。ストラクチャーエディター内で定義されたリレーション名はリレーション属性名として使用されます。

変換の際には以下のルールが適用されます:
- テーブル、フィールド、そしてリレーション名はオブジェクトプロパティ名へとマップされます。ORDAで"ドット記法"を使用したい場合、それぞれの名前が一般的なオブジェクト名規則に則っているようにしてください。オブジェクト名規則についてはオブジェクトプロパティ識別子 の章に説明があります。
注: リレーションの"手動"あるいは"自動"プロパティは、ORDAでは何の効力もありません。 - データストアは単一のプライマリーキーを持つテーブルのみを参照します(主キーを設定、削除する参照)。以下のテーブルは参照されません:
- BLOB 型の属性はデータストア内では管理されません。BLOB 型属性はエンティティないではNullとして返され割り当てることができません。
データストアオブジェクト自身は、オブジェクトとしてコピーすることはできません:
$mydatastore:=OB Copy(ds)
しかしながらデータストアプロパティは取得可能です:
ARRAY TEXT($prop;0)
OB GET PROPERTY NAMES(ds;$prop)