0

一部のデータベース テーブルのモデリングで次の問題が発生しました。

いくつかのコンテスト (それぞれに一意の ID を持つコンテスト テーブル) があり、各コンテストでプレイヤーにいくつかの賞品を与えるとしましょう。3 つの賞 (金、銀、銅) があり、それぞれにタイトル、ロゴ画像、および将来的には他のデータが含まれます。

ただし、一部のコンテスト (コンテスト ID に基づく) では、一部の賞品のロゴまたはタイトルをカスタマイズできるようにしたいと考えています。賞品がカスタマイズされていない場合は、デフォルト値がいくつかあるだけです。

もう 1 つの要件は、任意のコンテストで金メダルを獲得したすべてのプレーヤーを選択できるようにすることです (基本的に、カスタマイズは無視します)。

これまでの私の解決策は次のとおりです。

  1. 賞品テーブルで、主キーに加えて、半固有の別のキーを追加します。カスタマイズされたすべての金メダルには異なる主キーがありますが、同じ準一意キー (タグと呼びましょう) を共有します。このようにして、賞品の任意の列をカスタマイズできますが、すべての金賞受賞者を選択する機能を維持できます (共通タグを使用)。

  2. 賞品テーブルを 2 つに分割します。不変データと可変 (カスタマイズ可能) データです。このようにして、金メダルの一意の主キーを 1 つ持つことができますが、変更可能なデータ テーブルでは、その ID が複数の行で見つかる可能性があります。このテーブルでは、主キーは賞品 ID とコンテスト ID の複合になります。

パフォーマンスと、賞品に他の情報を追加する際の柔軟性の点で、どのソリューションが最も気に入っていますか? 別の方法を提案しますか?

4

1 に答える 1

0

正規化されたテーブル設計を提案しています。

メダル_種類

id | type 
-----------
1  | gold
2  | silver
3  | bronze

コンテスト

id | name      | date        | any-other-info
----------------------------------
1  | wimbeldon | 2013-07-05  | asdfsdf
1  | Devis cup | 2013-06-08  | sdfsd f

賞品

id | contest_id | medal_type_id | logo | title
------------------------------------------------
1  | 1          |1              |abc    | abc
1  | 1          |2              |def    | winner2
1  | 1          |3              |ghi    | winner3
1  | 2          |1              |abc    | winner1
1  | 2          |2              |adf    | winner2
1  | 2          |3              |aad    | winner3
于 2013-07-18T08:54:27.047 に答える