簡単な答えは、「何をしたいかによる」です。
さまざまなシナリオで各アプローチを使用する場合の利点と欠点を次に示します。
製品テーブルと製品タイプごとに 3 つのサブテーブル
利点
- 型に関連しないクエリが多数ある場合は、これが間違いなく勝者です。たとえば、タイプに関係なくすべての製品が表示される「カテゴリ」リストがある場合、これは単純なクエリです。結合はなく、すべてがクールです。
- 1 つのテーブルにあるすべての製品は、将来のカスタマイズに適しています。別の製品タイプを追加する場合は、データを含む別のテーブルが必要です
- 重複データはありません。どこにもない。
短所
- このアプローチの唯一の本当の欠点は、実際には製品です。つまり、製品タイプごとに余分なデータが必要ない場合は、はるかに簡単になります. したがって、使用する必要があります
JOIN
。しかし、それについて本当に悪いことは何もありません。
3 つの製品テーブル、それぞれが異なる製品タイプに対応
利点
- 製品タイプごとにデータを常に表示する場合、このアプローチには明らかな利点があります。つまり、データベース製品がピザ、コンピューター、およびペットである場合、3 つの製品タイプすべてに対してクエリを実行することは決してない可能性があります。その場合は、このアプローチを考えてみてください。
- 型内のより簡単なクエリ。
短所
- すべての製品をカテゴリ ビューで表示する必要がある場合は、これに対していくつかの深刻な
UNION
クエリを実行する必要があります。それは、 を選択するよりもはるかに悪いことJOIN
です。
n
n
製品タイプの表。
- 列が重複している可能性があります。悪いこと。
PS: 上記は、特定のニーズを考慮していません。これは、クエリのパフォーマンスを考慮しない、一般的な条件での一般的な提案です。
ただし、データが妥当なサイズである場合は、2 つのアプローチのいずれについても心配する必要はありません (最初のアプローチが明らかに有利です)。