ランキングのためのDB設計

たかがランキングといえどもわざわざデータベースを使うからには得られた情報を切り分けてRDB的にデータ管理したいものです。でなければPHPだけでやったほうが速いだろうし。

差し当たってユーザ情報と各ゲームでの成績を切り分けておけば後でゲームが増えたときにユーザIDをキーにして全てのゲームから情報を持ってくることによって個々のユーザがどのゲームで遊んだかが瞬時にわかるようになるでしょう。

しかし登録制のサイトならともかく、得られる情報がPOSTデータとSERVERデータのみという状況でどの値をユニークと見なして主キーに据えるかが問題になってきます。REMOTE_ADDRやREMOTE_HOSTじゃ一意性を確保しきれないでしょう。で、調べてみたところ現在確実な方法というのは存在しないのだと。

じゃあ駄目ジャン!(>_<)

それじゃあちっともリレーショナルにならない。かといって『勇者IN牧場』程度のミニゲームでわざわざユーザに登録を強いるのも愚かしいでしょう。

すべてのアクセスに対してセッションを発行することで少なくともセッションが切れるまでは同一ユーザと見なす、という管理方法もありますがその場しのぎ感が否めないので今回は採用しません。

いろいろ考えた結果、今回は単純にPHPXMLだけで完結させてDBを使うのはソーシャルゲーム開発時までお預けにします。