内部結合の使用例
航空会社手荷物追跡アプリケーションについて考えてみます。チケット番号ごとに、乗客とそれに関連付けられた手荷物があります。ルート表はticketで、2つの子表(passengerInfoおよびbaggageInfo)があります。passengerInfo表には乗客の詳細が含まれており、baggageInfoには乗客がチェックインした手荷物の詳細が含まれています。これらの手荷物は、複数の中間ステーションを経由する輸送中に追跡されます。この追跡情報は、baggageInfo表の子であるflightlegsという表に取得されます。
スクリプトparentchildtbls_loaddata.sqlをダウンロードして、次に示すように実行します。このスクリプトにより、例で使用する表が作成され、表にデータがロードされます。
- KVSTOREまたはKVLiteを起動します
java -jar lib/kvstore.jar kvlite -secure-config disable - SQLシェルを開きます
SQLプロンプトが表示されます。java -jar lib/sql.jar -helper-hosts localhost:5000 -store kvstore - DDLファイルをロードして、例で使用されている必要な表を作成します。
load -file parentchild.ddl loadコマンドを使用して、このスクリプトを実行します。JSONファイルのデータが表にロードされます。load -file parentchildtbls_loaddata.sql
parentchildtbls_loaddata.sqlには、次の内容が含まれています:
### Begin Script ###
load -file parentchild.ddl
import -table ticket -file ticket.json
import -table ticket.bagInfo -file bagInfo.json
import -table ticket.passengerInfo -file passengerInfo.json
import -table ticket.bagInfo.flightLegs -file flightLegs.json
### End Script ###作成される表は次のとおりです:
-
ticketticketNo LONG confNo STRING PRIMARY KEY(ticketNo) -
ticket.bagInfoid LONG tagNum LONG routing STRING lastActionCode STRING lastActionDesc STRING lastSeenStation STRING lastSeenTimeGmt TIMESTAMP(4) bagArrivalDate TIMESTAMP(4) PRIMARY KEY(id) -
ticket.bagInfo.flightLegsflightNo STRING flightDate TIMESTAMP(4) fltRouteSrc STRING fltRouteDest STRING estimatedArrival TIMESTAMP(4) actions JSON PRIMARY KEY(flightNo) -
ticket.passengerInfocontactPhone STRING fullName STRING gender STRING PRIMARY KEY(contactPhone)