-1

非常に多くのプロパティを持つエンティティがあり、顧客は後でさらに追加することを望んでおり、一部を削除することも、必要に応じて追加または削除することもできます

だから私はこれをやった 私がしたこと

しかし、追加または削除する必要がある場合は、3 つのテーブルを変更して制約を追加する必要があります

  • 私はそれが良い解決策ではないことを知っていますが、他に何をすべきかわかりません

これをどのように解決しますか?

  • ノート:

  • 属性は 40 を超えており、数値または文字列の可能性があります

  • 属性を頻繁に削除することはありません

編集:attributeValuesについて言及するのを忘れていたのは、すでに挿入されている古い値を選択するか、新しい値を追加する必要があることです

4

1 に答える 1

1

追加または削除する必要がある場合は、3 つのテーブルを変更して制約を追加する必要があります

うん。これは、エンティティ属性値設計の落とし穴の 1 つです。実際; これは小さな落とし穴の 1 つです。レポートを作成するか、複雑なクエリを実行する必要があるまで待ちます。

でも、それがお客様の希望なら…

一般に、EAV 設計は、可能な属性値の数が多く、実際の値の数が少ない場合にのみ適切です。標準的な例は医療患者の記録で、患者が持つ可能性のある症状の数は非常に多いですが、実際の症状の数はおそらく比較的少ないです。

デザインの一番左のテーブルが間違っていることに注意してください。attribute1、のようなフィールドの代わりにattribute2、左端のテーブルと中央のテーブルの間にリンク テーブルがあり、多対多の関係を作成する必要があります。

于 2012-05-07T05:14:38.603 に答える