構築する必要があるデータベース (InnoDB) については、2 つの異なる構造を念頭に置いており、どちらがパフォーマンスの点で最適かを知りたいと考えています。
何千もの商品を保管したい。各製品には、ある程度の成分 (ゼロの場合もあります) が含まれている場合があります (化学製品です)。26 種類の成分があり、AZ と言えます。各成分には独自の特徴があります。
問題は、どのようにすれば成分と製品を最適に保存し、リンクできるかということです (パフォーマンスの観点から)。
オプション A
テーブル Products の各行には、26 の追加フィールドがあり、各成分に 1 つずつあります。そのフィールドには金額が含まれています(参照キーではありません)。各成分列には、検索を高速化するためのインデックスが適用されています。製品と原料の間のリンクは、プログラム ロジックのレベルでのみ存在します。データベースにリンク テーブルはありません。
オプション B
商品を載せた表と、食材を載せた表があります。Products テーブルには原料用のフィールドはありませんが、その代わりに、Products を Ingredients にリンクし、量を定義するリンク テーブルがあります。製品と成分間のリンクは、db レベルで定義されるようになりました。このテーブルは非常に大きくなる可能性があります。
別のオプション B は、各成分のリンク テーブルを作成することで、最終的に 26 個のリンク テーブルになります。検索するとこちらの方が速いかどうかわかりませんが…?