1

私はこの決定を下すのに苦労しています。特定のカテゴリの製品にそのカテゴリの特定の値を持たせたいスキーマがあります。

私は5つのテーブルに参加しましたが、これが正しい方法であるかどうかを知りたいだけです。

シナリオ:メインテーブル:

Element (id, name, category_ID)
Category (id, name)
Characteristic (id, name, unity)

カテゴリに特定の数の特性を持たせたい(つまり、コンピュータにはcpu、ram、screensizeなどの特性が必要であり、マウスにはisCordless、numberOfButtonsなどが必要)ので、テーブルを作成しましたCategory_has_Characteristic:

Category_has_Characteristic(id_category, id_characteristic)

このテーブルを作成したカテゴリの各特性に特定の要素値を設定するには、次のようにします。

Element_has_Characteristic ( id_element, id_Category_has_Characteristic, value)

これは、各特性の特定の要素値を持つテーブルを作成するための最良のアプローチですか?

私は何かが足りないのですか、それともこれが唯一の/最良の方法ですか?

コメントをいただければ幸いです。

4

1 に答える 1

1

これは、過剰正規化の典型的なケースのように聞こえます。テーブルについて考えてみましょう。

Category
  id
  name varchar(50)
  isCordless bit
  numberOfButtons int
  ...

これにより、クエリがはるかに簡単になります。特性が動的である場合にのみ、多対多の関係が必要になります。たとえば、ユーザーがカテゴリに特性を追加するために使用できるコントロールパネルを作成することを計画している場合です。

于 2012-06-05T18:41:48.883 に答える