@FLEXディレクティブ
Oracleの@flex GraphQLディレクティブは、通常、JSONデータ型の列をフレックス列として指定するために使用されます。@flexディレクティブは、JSONリレーショナル二面性ビューで使用され、GraphQL表関数ではサポートされていません。
これにより、表の通常の事前定義済列だけでなく、フレックス列のJSONデータに存在する追加の動的フィールドも公開されます。フレックス列内のフィールドは展開され、結果のJSONドキュメントに含められるため、データ・モデルの柔軟性と拡張性が向上します。
列が@flexでマークされている場合、JSONフレックス列に格納されているキーと値のペアは、二面性ビューによって生成される各ドキュメントの一部になります。これは、進展する属性または変化する属性がレコードに関連付けられていて、変更ごとにデータベース・スキーマを更新しない場合に特に役立ちます。
次のように構造化されたDRIVER表があるとします:
| 列 | 型 | 説明 |
|---|---|---|
driver_id |
NUMBER | 一意のドライバ識別子 |
name |
VARCHAR2 | ドライバ名 |
extras |
JSON | 柔軟な追加フィールドのためのJSON列 |
たとえば、データの
extras列に、JSONにキーと値のペアとして格納された、出生地やスポンサなどの動的属性が含まれているとします。サンプル行は次のようになります:
driver_id: 101name: "Lando Norris"extras: { "birthplace": "Bristol", "sponsor": "Team X" }
OracleでGraphQLを使用する二面性ビューは次のようになります:
driver {
driverID: driver_id
name
extras @flex
}Oracleは、
extrasフレックス列のすべてのフィールドを結果のJSON出力に自動的に含めます:
{
"driverId": 101,
"name": "Lando Norris",
"birthplace": "Bristol",
"sponsor": "Team X"
}ノート:
birthplaceおよびsponsorは、extras列から直接取得され、@flexディレクティブの使用によって動的に含められます。
JSONリレーショナル二面性ビューのコンテキストでのこのディレクティブの詳細は、基本を超えたフレックス列を参照してください。