web-dev-qa-db-ja.com

多くの製品仕様を保存および検索するための最良の方法は何ですか

私がたくさんの製品を持っていて、それらの製品すべてがたくさんの仕様を持っているとしましょう。これらの仕様はいつでも変更される可能性があり(たとえば、「色」が突然新製品で利用可能になる可能性があります)、一部の製品には特定の仕様がありません。

  1. これを保存するための最良の方法は何でしょうか?
  2. これを検索するための最良の方法は何でしょうか?

最終的には、それぞれが数十の仕様を持つ数万の製品があります。仕様ごとに列を追加するのは間違っていると感じるので、仕様用に個別のテーブルを用意し、それらを3番目のテーブルにマッピングするのが最善の方法だと思います。

Products_specsテーブルが数百万レコードに増加したときにパフォーマンスを維持しながら、これらの仕様を簡単に検索するにはどうすればよいですか?

これが私が思いついたスキーマとクエリです: http://sqlfiddle.com/#!9/53f49/

3
user77026

1つの方法は、仕様をスーパーテーブル/サブテーブル形式で設計することです。これがそのようなデザインの1つです: Fiddle。改善できると確信していますが、重要な点は、仕様IDの値は、各タイプの仕様内だけでなく、すべての仕様間で一意であるということです。 。したがって、たとえば、色と重量の間に衝突はありません。ただし、色として定義された仕様は、色(または色-少なくとも1つの場所でスペルを混ぜたのではないかと思います)以外の仕様サブテーブルに入力することはできません。スーパーテーブル(Specs)を使用すると、個々の仕様を簡単に照会できます。

3
TommCatt