0

必要なものの説明の一部として、ある顧客から、保存するプロパティを追加できるようにしてほしいと依頼されました。
それを行う方法について2つのアイデアがあります。

  1. EAVテーブルを作成します。
  2. 追加データを格納する XML ドキュメント。

私はどちらのアプローチもあまり好きではありません
。(例: here、3番目のもの)
2番目は避けたいので、ミックスはしません。

これを行うための好ましい方法はありますか?

(私は 2010 に対して、C#、linq to sql を使用しています)

4

1 に答える 1

1

難しい質問です。

クライアントのデータが真にまたは事実上スキーマレスである場合 (つまり、各レコードの属性が行ごとに予測不能に変化する可能性が高い場合)、リレーショナル モデルはこの場合には適しておらず、別のソリューションである NoSQL を検討する必要があります。おそらく、またはドキュメント指向になります。

クライアントが「後でデータ モデルに属性を追加できるようにしたいが、それらの属性についてはまだ決めたくない」と言っているが、基本的にはリレーショナル データ モデルである場合は、次のことを検討してください。スキーマ生成プロセスの自動化。これは面倒ですが、Ruby on Rail には Active Record スキーマの移行の例があります。あなたのプログラミング言語用に確立されたライブラリがあるかもしれません。

クライアントが「データのコアは固定されていますが、ケースバイケースで、今は説明できない追加データを追加したい」と言っている場合は、XML/Jason を使用します。 /YAML スタイルのレコード。コア リレーショナル レコードに追加されます。現在、ほとんどのデータベース エンジンは、XPath などを介したクエリを含め、XML をネイティブにサポートしています。

私の経験では、リレーショナル モデルに含まれる XML ドキュメントは、多くの柔軟性と妥当なパフォーマンスを提供します。プログラミング モデルは少し厄介ですが、ほとんどの場合、EAV よりもはるかに厄介ではありません。

于 2013-09-17T12:05:55.850 に答える