ERP データベースに Company というテーブルがあります。ERP データベース用のレポート データベースを作成し、クエリを高速化するためにテーブルを非正規化しています。したがって、Company テーブルには、顧客レコードとベンダー レコードの両方があります。このテーブルを Customer と Vendor の 2 つのテーブルに分割することを考えていましたが、長所と短所について何か考えがあるかどうか疑問に思っていました。
ご協力いただきありがとうございます。
ERP データベースに Company というテーブルがあります。ERP データベース用のレポート データベースを作成し、クエリを高速化するためにテーブルを非正規化しています。したがって、Company テーブルには、顧客レコードとベンダー レコードの両方があります。このテーブルを Customer と Vendor の 2 つのテーブルに分割することを考えていましたが、長所と短所について何か考えがあるかどうか疑問に思っていました。
ご協力いただきありがとうございます。
データを正規化/非正規化するかどうかの問題は、データと顧客のニーズに非常に固有のものです。
私が検討するいくつかのこと:
レポートの場合、レポートを書きやすいのはどのモデルですか? 一度にすべてのデータを取得する方が簡単ですか? 次に、非正規化します。非正規化されたモデルを使用して、レポート ロジックのフープを飛び越えていることに気づきましたか? 次に、正規化します。
関係するエンティティのサイズを検討します。10 の会社があり、各会社に 10,000 のベンダーがいる場合、会社に関するレポートのために会社 + ベンダーを非正規化するのはおそらく悪い考えです。必要なのはいくつかの会社フィールドだけなのに、なぜ膨大なデータセットを取得する必要があるのでしょうか? したがって、エンティティにかなりの数のレコードがある場合は、速度を正規化することを検討します。
アップデートしやすいのはどっち?これは問題ではないかもしれませんが、非正規化するビューまたは sproc を作成していない場合、一方のアプローチは他方よりも書き込み/更新でサポートしやすくなります。
私の経験から、テーブルが適切に設計されていて、過度に正規化されていない場合 (実際には 10 個のテーブルで十分なのに 30 個のテーブルがある場合)、正規化されたデータからレポートすることを好みます。