2012-03-07 15 views
0

私は、ジャンルがサブセクションを持つことができるような方法でゲームのジャンルをモデル化したいと思います。
ジャンル|サブジャンル
などアクション>アクションアドベンチャー
アクション>シューター
シミュレーション>車両シミュレーション

あなたが想像できるように、私はシューターが同様のシミュレーションのサブセクションにならない何をすべきか、

Iこれを行うことを考えていますが、より良い方法がありました。
ジャンル(ジャンル{PK}、{サブジャンルFK})
サブジャンル(サブジャンル{PK}、{ジャンルFK})リレーショナルデータベースのサブセクションのモデリング方法

答えて

2

私はおそらくのようなジャンルとサブジャンルテーブルを作成します。

ジャンル(GenreID {PK}、GenreName)

サブジャンル(SubGenreID {PK}、GenreID {FK}、SubGenreName)

GenresテーブルでFGとしてSubGenreを使用する理由はありません。これは、サブジャンルごとにちょうど1つのジャンルに制限します。

1

私はあなたが必要だと思う:

Genres 
------ 
Genre PK 


SubGenres 
--------- 
SubGenre PK 
Genre  FK 

またはこの(同じ名前のサブジャンルを持つ2つのジャンルのためのチャンスがある場合)、例えば:

アクション>スペース
シミュレーション>スペース

Genres 
------ 
Genre PK 


SubGenres 
--------- 
Genre  PK FK 
SubGenre PK 
+0

2番目の例では、同じ名前のサブジャンルを持つ2つのジャンルのインスタンスでは、サブジャンルテーブルの名前をジャンルに変更する方がよいでしょう_subgenresを作成し、それをサブテーブルの最初の定義に合流テーブルとして使用して、M:M関係を作成します。 – gangreen

+0

@gangreen:実際には、それはそのままM:Mという関係のようです。ジャンクションテーブルだけで2番目のテーブルなし。 –

+0

右、右。私は、通常のフォーム/アップデートの異常の問題に遭遇していたと思います。たとえば、2つのジャンルがサブジャンル「スペース」を共有していても、スペルが間違っていた場合あるレコードのスペルを修正することは可能ですが、もう一方のスペルを修正することはできません。それから、おそらくそれが起こることを可能にすることが望ましい場合もあるかもしれません... – gangreen

関連する問題