これはより理論的な質問であり、特定のシナリオではありません。
次のような単純化されたテーブルスキームがあると仮定します。
items
いくつかの基本データ、item_data
各アイテムの追加プロパティが含まれrel_items
、異なるアイテム間のツリー関係を設定します。さまざまな種類のアイテム(フィールドで表されるitems.item_type
)があり、さまざまなフィールドが格納されていitem_data
ます。たとえば、犬、猫、マウスなどです。
いくつかの結合と接続詞を含むより大きなクエリがある場合(親アイテムが他のアイテムといくつかの条件を持つアイテムを取得するなど)、これは、すべての異なるタイプのアイテムを別々のテーブルに分割する場合と比較して、パフォーマンスの問題になる可能性があります(dog
、cat
、mouse
)そしてそれらを単一のものにマージしませんか?
すべてを1つの基本的なアイテムテーブルにまとめると、ビュー(犬、猫、マウス)の作成はパフォーマンスに何らかの影響を与えますか?
編集(以下にコメント):「種」、「ハウスペット」などをitem_typesと考えました。タイプごとに異なるプロパティがあります。基本的なアイテムテーブルとitem_dataテーブルを使用する目的は、基本的な「オブジェクト」を持ち、データベーススキームを変更することなく、必要な数のプロパティをそれらにアタッチすることです。たとえば、アプリケーションに含まれる動物の数とそのプロパティがわからないため、ユーザーが新しい動物を作成するたびに変更する必要のないデータベーススキームを考えました。