0

私はCQRSを使用して私の最初のプロジェクトに取り組んでいます。CQRS - 読み取り側データベースの外部キー

私のモデルにはいくつかの顧客がおり、すべての顧客に注文のリストがあるとします。

私の読んだモデル(標準的なリレーショナルデータベースでサポートされています)では、すべての顧客のリストが投影されます。さらに、私はすべての注文のリストを投影します。

この2番目の見通しでは、すべての顧客とキーテーブルの外部キーを持つことは理にかなっていますか?それとも、すぐに非正規化し、注文のテーブルに顧客のすべての関連データを保存する方が良いですか?

答えて

4

あなたの要件によって異なると思います。

1つの考え方は、ビューごとに1つのテーブルを持つ限り、すべてのビューモデルのデータを非正規化することです。もう一方の端では、ビューをサポートするために高度に正規化されたデータベースを保持することができます。間にどこかを選ぶこともできます。これらの決定には、スピード、ストレージサイズ、使いやすさ、スケーラビリティという面でトレードオフがあります。たとえば、非常に似たビュー・モデルが数百ある場合、より正規化されたデータ・モデルを使用する方が理にかなっています。もう1つの例は、ある特定のビューが他のどのビューよりも多くのトラフィックのオーダーを生成する場合です。この特定のビューを他のビューよりも最適化したい場合があります。本当にワンサイズの解決策はありません。

この狂った考え方はどうですか?は両方とも;)しばらくの間、あなたが好きなものを参照してください。 CQRSに関する素晴らしいことの1つは、あなたがこれらの決定を下す自由を持っていることです。これをイベントソーシングと組み合わせてビューを再構築すると、後で心を変えることができます:)

関連する問題