tbl_cnts cnts_id tbl_trans trans_id cnts_id player_id:(actually points to trans_id of the first trans record the same person made) tid:"XFJRDF-35231-1" qty: instock: tbl_access access_id dt_create cnts_id ipaddr: uagent: tbl_game game_id dt_create cnts_id player_id: cardlen: hit_pos1: hit_pos2: seqidx: //--------- after winning a prize trans_id: prize_id: maillog_id: tbl_turn turn_id: dt_create: cnts_id: game_id: card_pos: card_type: access_id: } tpl_prize prize_id dt_create: cnts_id title:"Apple Watch" qty:23 pic_id: ======================================================================================= player_id --------------------------------------------------------------------------------------- player_idは実際、(特殊な)trans_idである。 複数のチケットと複数のゲームにまたがってプレーを行っても、 どのゲームをしていたか思い出すのに、player_id が鍵となる。 今、借りにチケット(T-1014-12345)のTurnを 使い果たしてしまったとしよう。 ここで新しいチケットを購入するわけだが、 そのPayPal決済に、T-1014-12345をtidと して渡す。 受け取った、IPNハンドラーは、まず T-1014-12345を持つtransのレコードを 探して、そのplayer_id項目にある値を 取得する。 このplayer_idが存在するのなら、それを、 「新しく作ったtransレコード」のplayer_idフィールドの値にする。 このplayer_idが存在しないのなら、 新しく作ったtransのレコードのtrans_idを そのレコードのplayer_idの値とする。 つまり、transのレコードのtrans_idを とplayer_idが同じであれば、この レコードがplayer_idの出発点となる。 transのレコードのtrans_idが player_idが同じない場合は、過去に できたplayer_idの継続とわかる。 =======================================================================================