EveryDBのデータ形式を知ろう
EveryDBはData Lab.からダウンロードしたデータを、SQL Server等のリレーショナルデータベースに格納します。この時、Data Lab.のデータ形式ではなく、EveryDBのデータ形式に置き換えられます。とはいえ、基本的にはData Lab.のデータ形式とEveryDBのデータ形式は同じものだと思って構いません。Data Lab.では、ラップタイムなど同質のデータはくり返し○個といった表現があり、これがリレーショナルデータベースにそぐわないため、くり返し表現をやめたものがEveryDBのデータ形式です。EveryDBのデータは、Data Lab.のデータを全て保持していると言えます。
データベースを理解する上で重要な単位
データベースをイメージするには、Excelのスプレッドシートをイメージすると理解しやすいと思います。
- ひとつのセルが「フィールド」と呼ばれるデータ単位に相当
- フィールドが集まって行を形成し、「レコード」になる
- レコード内のフィールドの数、データ型はあらかじめ定義しておく必要がある
- データはフィールドに保持される
- データにアクセスするには、フィールドを指定する必要がある
データベースの型を理解しておくと、EveryDBのデータ形式を理解する手助けになります。EveryDBはあくまでもデータベースのフォーマットにあわせているからです。
EveryDBのデータ形式
EveryDBは、Data Lab.のすべてのデータ形式をサポートしています。従って、ここで全てを紹介できるわけではありません。ここでは、よく使われると思う「レース詳細(RACE)」と、「馬毎レース情報(UMA_RACE)」について簡単に説明します。より詳細なデータ形式は、EveryDBのヘルプファイルにある「データフォーマット」を参照してください。
(1)レース詳細(RACE)
- レース詳細は、指定開催日、指定レース番号のレースに関する情報を格納している
- レース名や競走条件、天候、ラップタイムなどを含む
- 出走馬に関する情報は一切含まない
- 赤で囲ったフィールド名で、各データにアクセスする
- 1レース分のデータが1レコードに格納される
(2)馬毎レース情報(UMA_RACE)
- 馬毎レース情報は、あるレースに出走した競走馬に関する情報を格納している
- 開催日、コース、レース番号など、レースを特定するための情報以外、レース情報は保持しない(レース名やクラス条件などはレース詳細を見る)
- そのレース出走時の騎手や馬体重、斤量などのデータを格納
- 着順、コーナー通貨順位、タイム、着差など結果情報も格納(レース確定後)
- 通常はレース詳細とセットで扱う
- 1レコードで、1頭分のデータを格納
- 1レコードは、競馬新聞の戦績1コマに相当
(3)レース詳細と馬毎レース情報の使い方
レース詳細と馬毎レース情報は、非常に相関関係の強いデータです。ほとんどの局面で、セットで使うことになります。例えば、今回のレースの出走馬一覧を表示するには、レース詳細からレース名やクラス、トラック、施行距離などを取得し、出走馬は馬毎レース情報から取得する必要があります。
Data Lab.サービス開始当初、この部分の変化が大きくとまどう人が多かったのも事実ですが、リレーショナルデータベースを利用すれば、割と簡単に処理できます。
競走馬には血統番号という固有IDが振られていますので、これを検索すれば、その馬の障害戦績を取得することも可能です。この時に戦績データとして利用できるのが「馬毎レース情報」です。ただし、馬毎レース情報には、トラック情報や距離情報が欠けていますので、競馬新聞の馬柱を作ろうと思ったら「レース情報」と併用する必要があります。個人的にはこの処理が2度手間なので、残念に思っている部分です。
ところで、各データ形式には、<コード表 2204 馬記号コード>参照などと書かれている箇所があります。これはデータベースに格納するときに、文字ではなく数字など、管理しやすいコードに置き換えられていることを意味します。コード表を参考に、その数字や文字列が意味するものに置き換えてやります。
これでEveryDBのデータ形式の概要は理解できたと思います。あとは、EveryDBのヘルプに書かれた情報を元に、自分が必要なデータ形式についての理解を深めてください。