5 二面性ビューのドキュメント識別子フィールド
二面性ビューでサポートされるドキュメントには、常に上位(ルート)レベルにドキュメント識別子フィールド_id
が含まれます。これは、ビューの基礎となるルート表の主キー列に対応します。フィールド値は様々な形式を使用できます。
多くの場合、このような主キー列は1つのみです。複数の場合、主キーがコンポジットとして表現する場合があります。
-
主キー列が1つのみの場合は、二面性ビューを定義するときにフィールド
_id
の値としてそれを使用します。 -
あるいは、フィールド
_id
の値としてオブジェクトを使用できます。オブジェクトのメンバーは、値が主キー列であるフィールドを指定します。主キー列が1つのみの場合でも、
_id
にオブジェクト値を使用できます。そのようにすると、わかりやすいフィールド名を指定できます。
例5-1 ドキュメント識別子フィールドの_id: 主キー列値
単一の主キー列race_id
が、フィールド_id
の値として使用されます。
CREATE JSON RELATIONAL DUALITY VIEW race_dv AS
SELECT JSON {'_id' : r.race_id,
'name' : r.name,
'laps' : r.laps WITH NOUPDATE,
'date' : r.race_date,
'podium' : r.podium WITH NOCHECK,
'result' : ...}
FROM race;
ビューでサポートされるドキュメントは次のようになります: {"_id" : 1,…}
。
例5-2 ドキュメント識別子フィールドの_id: オブジェクト値
フィールド値は単一のメンバーを持つオブジェクトで、単一の主キー列race_id
をわかりやすいフィールド名raceId
にマップします。
CREATE JSON RELATIONAL DUALITY VIEW race_dv AS
SELECT JSON {'_id' : {'raceId' : r.race_id},
'name' : r.name,
'laps' : r.laps WITH NOUPDATE,
'date' : r.race_date,
'podium' : r.podium WITH NOCHECK,
'result' : ...}
FROM race;
ビューでサポートされるドキュメントは次のようになります: {"_id" : {"raceId" : 1},...}
。
代替カーレース設計では、かわりに、複数の主キー列(たとえば、race_id
とdate
)があるrace
表を使用できます:
CREATE JSON RELATIONAL DUALITY VIEW race_dv AS
SELECT JSON {'_id' : {'raceId' : r.race_id, 'date' : r.race_date},
'name' : r.name,
'laps' : r.laps WITH NOUPDATE,
'podium' : r.podium WITH NOCHECK,
'result' : ...}
FROM race;
その場合、ビューでサポートされるドキュメントは次のようになります: {"_id" : {"raceId" : 1, "date" : "2022-03-20T00:00:00"},...}
。
関連トピック