-1

データベースに入れたくないリレーションシップがいくつかあります (さらに多くのリレーションシップが毎週見つかります)。

例えば:

この他のテーブルのこの他の値が true に設定されている場合、テーブル ウィジェットの列 A を null にすることはできません...

データベースを監査してレポートを出力する独自のシステムをコーディングする以外に、これに対処する良い方法はありますか?

SQL Server に簡単に体系化できないビジネス上の制約があるのは、私が最初ではないと考えなければなりません...

注:私は施行システムを探しているわけではありません。ルールが破られたときに私に知らせるためのシステムです。

4

2 に答える 2

1

私の推測では、これらのビジネス ルールの数は限られており、ルールは以下で説明したようなかなり単純なものであると思います。

この場合、ビジネス ルールごとに 1 つのストアド プロシージャを作成し、このルールに違反するすべての行を報告します。次に、スケジュールされたすべてのスケジュールを毎日または毎週実行するか、必要なデータを提供します。

実際にこれらが多数ある場合、このアプローチは最適ではない可能性があります。大量のストアド プロシージャを一度に実行すると、多くのメンテナンスやパフォーマンスの問題が発生する可能性があるからです。

于 2013-06-07T08:51:10.433 に答える
0

ビジネスロジックをデータベースにコーディングするべきではありませんが、主張する場合は、トリガーを調べることができます。この方法でinser/updateでチェックまたは検証を実行してから、挿入、ロールバック、またはXを許可できます

アップデート:

いつ、どのくらいの頻度で規則違反が発生したかを通知する必要があるかどうかに応じて、いくつかの方法のいずれかを実行できます。必要なことを達成するための 3 つの簡単な方法を頭の中で考えてみます。

  1. 違反を分析して報告するために、データベースの外部で定期的に実行されるアプリケーションを用意する
  2. SQL Server エージェントを使用してジョブを作成し、チェックを実行して警告します
  3. 違反が発生するたびに警告するトリガーを用意する

オプション#1を使用すると、すべてがdbの外で実行でき、imhoが最も簡単です。完全な「アラート」システムが必要な場合は、追跡テーブルにデータを記録または挿入するだけでよい場合は#2と#3を使用すると簡単です。電子メールなどのように、何か派手なことをしたい場合は、おそらくSQL CLRを使用する必要があります。または、電子メールだけの場合は、 SQL Mailを試すこともできます。

于 2013-06-06T18:06:30.977 に答える