私がたくさんの製品を持っていて、それらの製品すべてがたくさんの仕様を持っているとしましょう。これらの仕様はいつでも変更される可能性があり(たとえば、「色」が突然新製品で利用可能になる可能性があります)、一部の製品には特定の仕様がありません。
最終的には、それぞれが数十の仕様を持つ数万の製品があります。仕様ごとに列を追加するのは間違っていると感じるので、仕様用に個別のテーブルを用意し、それらを3番目のテーブルにマッピングするのが最善の方法だと思います。
Products_specsテーブルが数百万レコードに増加したときにパフォーマンスを維持しながら、これらの仕様を簡単に検索するにはどうすればよいですか?
これが私が思いついたスキーマとクエリです: http://sqlfiddle.com/#!9/53f49/
1つの方法は、仕様をスーパーテーブル/サブテーブル形式で設計することです。これがそのようなデザインの1つです: Fiddle。改善できると確信していますが、重要な点は、仕様IDの値は、各タイプの仕様内だけでなく、すべての仕様間で一意であるということです。 。したがって、たとえば、色と重量の間に衝突はありません。ただし、色として定義された仕様は、色(または色-少なくとも1つの場所でスペルを混ぜたのではないかと思います)以外の仕様サブテーブルに入力することはできません。スーパーテーブル(Specs)を使用すると、個々の仕様を簡単に照会できます。