0

データベースでスポーツゲームをモデル化しようとしています..

次のテーブルがあります

[sport_game]
sport_game_id
sport_game_type_id
name
description

[sport_game_instance]
sport_game_instance_id
sport_game_id
start_time
end_time

[sport_game] 1 - M [sport_game_instance]

[sport_game_type]
sport_game_type_id
type  -- professional, semi-pro, college..etc

[sport_game] M - 1 [sport_game_type]

[basketball]
basketball_id
sport_game_typeid
basketball_info

[basketball] 1 - 1 [sport_game_type]    

[baseball]
baseball_id
sport_game_type_id
baseball_info

[baseball] 1 - 1 [sport_game_type]  

タイプ テーブルが特定のスポーツにリンクされているかどうかについては、100% 確信が持てません。うまくいくと思うこともありますが、よくわかりません。

[sport_game]、[sport_game_instance] などの一般的な情報を持つクラスのコア セットを持つことができるようにしたい。

改造してスポーツを追加できる【スポーツゲームタイプ】とは・・・ その個別のテーブルについてはわかりません。それらを別々にすることは、必要に応じてこれらのテーブルに参加できるスポーツに固有のものを意味すると考えていました.

どう思いますか?

4

1 に答える 1

0

スポーツごとに別々のテーブルを用意する必要はありません。なぜ?

  1. アプリケーションのスケーリングと拡張は非常に不十分です。頭のてっぺんから知っているスポーツはいくつありますか? 新しく追加するたびに、新しいテーブルを作成しますか? 誰がそのプロセスを管理しますか? プロセスがあなたの建物内にあるかどうかはわかりませんが、私の DBA は私のアプリケーション内からデータベース オブジェクトを作成するための DDL 権限を私のアプリケーションに渡さないでしょう。

  2. 報告は面倒だろう。単一の select ステートメントと where 句を使用してスポーツの種類でフィルター処理する代わりに、nテーブルを走査してスポーツに関する情報を取得する必要がありnます。全然ダメ。作成した sports_types テーブルの数を誰かに尋ねたり、どこかにポストイットを貼ったりしなければ、サポートしているsports_typesの数を知ることはできません。

ゲーム固有のフィールドがそれほど重要な場合は、ゲーム固有のデータを JSON または XML のいずれかでテンプレート化できます (それが一言であるといいのですが) (私はその汎用性と を介した DB サポートの準備のために XML に投票しますXPath)。テンプレートは次のいずれかです

  1. 特定のスポーツ タイプごとのテンプレート。だからあなたは持っているでしょう

     sport_templates(
     sport_type_id FOREIGN KEY REFERENCES...
     sport_template_specs VARCHAR2(300)
      )
    
  2. sport_game (バスケットボール、サッカーなどの特定のゲーム) ごとのテンプレート。だからあなたは持っているでしょう

     sport_game_instance(
     sport_game_instance_id
     sport_game_id
     sport_game_template_specs
     start_time
     end_time)
    
  3. sport_game_templatespec が事前定義されたテンプレートを含む親テーブルへの FK 参照である両方の組み合わせ。

sport_type_attrまたは、次のようにマップするある種の EAV テーブルを持つこともできますsport_type_attr_value

     sport_type_id   sport_type_attr           sport_type_attr_value
     1               bathroom_breaks           2
     1               cheerleaders_permitted    350

明らかsport_type_idに、定義する親テーブルへの FK 参照です。sport_type

于 2012-10-07T01:08:21.693 に答える