チームとゲームの2つのテーブルがあります。ここで、チームにはチーム名とチームIDがあり、ゲームには2つのチームID(チーム1とチーム2)とゲームのスコアがあります。次に、ゲームテーブルとチームテーブルの間に(整合性のための)外部キーがあります。これは、最小限のスキーマと非常に単純な構造で、誰が誰をプレイし、スコアが何であったかを反映します。
Team
|-------------------------|
| Primary (int)| id |
| (chr)| name |
|-------------------------|
Game
|-------------------------|
| Primary (int)| team1 |
| Primary (int)| team2 |
| (int)| score1 |
| (int)| score2 |
|-------------------------|
したがって、いくつかのサンプルデータは次のようになります。
Team
|------------------|
| id | name |
|------------------|
| 1 | Blue Devils |
| 2 | Cardinals |
| 3 | Fish |
| 4 | Lemmings |
|------------------|
Game
|---------------------------------|
| team1 | team2 | score1 | score2 |
|---------------------------------|
| 1 | 2 | 7 | 8 |
| 1 | 4 | 2 | 25 |
| 2 | 3 | 8 | 2 |
| 3 | 4 | 17 | 18 |
|---------------------------------|
このデータは、チーム1(Blue Devils)がチーム2(Cardinals)を7から8のスコアでプレーしたことを示しています。残りのデータも同様です。
チーム名を追跡する必要がない場合は、そのフィールドを省略できますが、これは多くの場合有用な情報です。
したがって、このスキーマを使用すると、次のようなクエリで特定のチームのスコアを取得できます。
SELECT * FROM Game g
INNER JOIN Team t on t.team1 = g.id
その後、必要に応じて、ゲームがいつ行われたか(日付)などの追加情報や、ゲームやチームに関するその他の統計などの他の情報を追加することもできます。