内部結合の使用例

航空会社手荷物追跡アプリケーションについて考えてみます。チケット番号ごとに、乗客とそれに関連付けられた手荷物があります。ルート表はticketで、2つの子表(passengerInfoおよびbaggageInfo)があります。passengerInfo表には乗客の詳細が含まれており、baggageInfoには乗客がチェックインした手荷物の詳細が含まれています。これらの手荷物は、複数の中間ステーションを経由する輸送中に追跡されます。この追跡情報は、baggageInfo表の子であるflightlegsという表に取得されます。

スクリプトparentchildtbls_loaddata.sqlをダウンロードして、次に示すように実行します。このスクリプトにより、例で使用する表が作成され、表にデータがロードされます。
  • KVSTOREまたはKVLiteを起動します
    java -jar lib/kvstore.jar kvlite -secure-config disable
  • SQLシェルを開きます
    java -jar lib/sql.jar -helper-hosts localhost:5000 -store kvstore
    SQLプロンプトが表示されます。
  • 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 ###
作成される表は次のとおりです:
  • ticket
    
        ticketNo LONG
        confNo STRING
        PRIMARY KEY(ticketNo)
  • ticket.bagInfo
        
        id LONG
        tagNum LONG
        routing STRING
        lastActionCode STRING
        lastActionDesc STRING
        lastSeenStation STRING
        lastSeenTimeGmt TIMESTAMP(4)
        bagArrivalDate TIMESTAMP(4)
        PRIMARY KEY(id)
  • ticket.bagInfo.flightLegs
    
        flightNo STRING
        flightDate TIMESTAMP(4)
        fltRouteSrc STRING
        fltRouteDest STRING
        estimatedArrival TIMESTAMP(4)
        actions JSON
        PRIMARY KEY(flightNo)
  • ticket.passengerInfo
        
        contactPhone STRING
        fullName STRING
        gender STRING
        PRIMARY KEY(contactPhone)