0

私はこのテーブルを持っています:

idFilmAward   Name
--------------------------------
1             Academy Awards
2             Saturn Award
..            ...

私もこのテーブルを持っているとしましょう:

###############
###First Way###
###############
idAward       Name            idFilmAward
------------------------------------------
1             Best Director   1
2             Best Director   2
..            ....            ..
100           Best Actor      1

「First Way」で「Best Director」が 2 回しか繰り返されなかったとします。つまり、「Second Way」を使用する必要はありません。

################
###Second Way###
################
idAward       idAwardName       idFilmAward
------------------------------------------
1             1                 1
2             1                 2
..            ....              ..
100           2                 1

idAwardName   Name              idAward
-------------------------------------------
1             Best Director     1
2             Best Actor        2
...           ...               ...

でも、「最優秀監督」が 100 回繰り返されるとしたら、「セカンド ウェイ」を使用する必要がありますね。私の質問は、「最初の方法」を使用するために何回繰り返しても大丈夫であり、何回繰り返した後に「2番目の方法」を使用する必要があるかということです。

4

4 に答える 4

2

厳密に言えば、データベースの正規化では、常に 2 番目の方法を使用する必要があります。

「完全な」リレーショナル データベース設計では、異なる行で同じデータを繰り返さないようにする必要があります。このように、賞の名前を「ベスト ディレクター」から「ベスト シニア ディレクター」に変更したい場合は、多くの行を (最初の方法で) 更新し、1 行だけ (2 番目の方法で) 更新する必要があります。

しかし、スノーフレーク デザインを使用するデータ ウェアハウスの設計では、最初の方法が最適です。

于 2013-09-23T13:45:41.673 に答える
1

何回繰り返すかの問題ではありません。データベースは正規化する必要があります (少なくとも第 3 正規形)。したがって、「一度でも繰り返す場合」または「繰り返すことができる」場合は、別のテーブルを使用してください。(これは概念ではありません)

正規化されたデータベースが不要な孤立したケースの 1 つは、大量のデータに対してパフォーマンスが重要な操作を使用する場合です。この場合、正規化されていないデータベースがより高速な (より良い) 結果を達成します。

于 2013-09-23T13:43:44.223 に答える
1

繰り返しの状況が発生する可能性がある場合はいつでも、2 番目の方法を使用する必要があると思います。辞書のように見えるため、データベースの正規化の第 3 正規形です。

于 2013-09-23T13:44:46.973 に答える
1

私の直感によると、これは時期尚早の最適化です。現時点では、おそらくこのデータベースを十分に使用していないため、データをどのように保存するかが問題になります (サーバーなどに大きな影響を与えることはありません)。あなたが好きです。

つまり、次のようになります。

  • ID と名前を持つ受賞者テーブル
  • ID、awardgiver_id (AcademyAwards などを参照する)、および名前を持つアワード テーブル
  • award_id と film_id を持つ award_recipient テーブル。

その理由は、すべてのセレモニーが同じ賞のリストを持っているわけではないからです。そして、さまざまな賞とその名前をさまざまな式典から切り離すことは、私にとって論理的に理にかなっています。

于 2013-09-23T13:46:09.750 に答える