「これはヤバかったな」という遅刻エピソード

現在試合結果ページを作成しています。

参考サイト:http://www.so-net.ne.jp/antlers/games/484

上記が参考サイトであり、各表組み(レイアウト)は完成しています。
マッチレビューから下は作っていませんので省きます。
残りは上から順にスコア、得点者、各詳細(シュートの本数など)、警告者、メンバー(スタメンとサブ)。

Mysqlにて1.試合日程 2.試合結果のテーブルを作りました。
テーブル内の構図は
1.試合日程のテーブル
id、日付、対戦相手、場所など

2.試合結果のテーブル
id、試合日程id、得点、失点、各詳細
を作りました。

ここからが困っており、得点者、警告者、メンバー(スタメンとサブ)の構図なんですが、
各項目ごとにテーブルを作った方がよいのか、試合結果テーブルに入れた方がよいのか迷っています。
自分が考えていたのは
3.得点者テーブル
id、試合結果id、ホームの得点者、アウェイの得点
4.警告者テーブル
id、試合結果id、ホームの警告者、アウェイの警告者
5.メンバー(スタメンとサブ)のテーブル
id、試合結果id、ホームのスタメン、ホームのサブ、アウェイのスタメン、アウェイのサブ

として作ることを考えていたのですが、いかがでしょうか?

一番効率がよく早く出来る方法を教えていただけないでしょうか?

宜しくお願いします。

A 回答 (1件)

ポイントは試合結果テーブルを分けることだと思います。

そして、得点者テーブルと警告者テーブルは必要ないでしょう。あとでビューを作りましょう。

以下のような設計を提案します。
1 テーブル 6種類
(1) メンバテーブル(id,名前,ポジション)
(2) コートテーブル(id,コート名、所在地)
(3) 対戦チームテーブル(id,チーム名,ホームコートid)
(4) 試合テーブル(id,日付,対戦チームid,コートid,ホームアウェイ区分)
(5) 試合選手情報テーブル(試合id,ポジションコード,選手id) ポジションコード20をサブに、21を途中出場とする。
(6) 試合情報テーブル(試合id,情報コード,データ)
この試合情報テーブルの情報コードが大切で、例えば、
1:試合得点->データは4桁で2桁自チーム得点、2桁相手チーム得点
2:得点者->データはメンバidで、当然得点と同じレコード数になる。
3:警告者->データはメンバid
4:PK情報->10ビットを10進数化し記録、1ビートがゴールかセーフかを意味する。
5:退場者->データはメンバid
6:試合時間
7:その他
などと決めて、横に項目を広げないようにします。
試合情報テーブルのレコード例 101,2,506

2 E-R図

対戦チームテーブル<-+-試合テーブル<--試合情報テーブル-->メンバテーブル  
コートテーブル<----+

3 ビュー
(1)試合出場選手出力ビュー
SELECT メンバid, 日付 FROM 試合テーブル,試合選手情報テーブル
WHERE 試合テーブル.id = 試合選手情報テーブル.試合id
AND (ポジションコード<=11 OR ポジションコード=21)
(2)ホーム得点者情報ビュー
SELECT メンバid, 日付 FROM 試合テーブル,試合情報テーブル
WHERE 試合テーブル.id = 試合情報テーブル.試合id AND ホームアウェイ区分 = 0
AND 情報コード = 2
(3)各選手アウェイ得点集計ビュー
SELECT データ,COUNT(*) FROM 試合テーブル,試合情報テーブル
WHERE 試合テーブル.id = 試合情報テーブル.id AND ホームアウェイ区分 = 1
AND 情報コード=2
GROUP BY データ

デバッグしていませんが、このようにリレーションを効かせると自由に情報を集計できます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


おすすめ情報