外部キー、制約、デフォルト値などの項目は、データベース管理システム (この場合は MS Sql 2005) またはアプリケーションで処理する必要がありますか? 双方から意見を聞いたが、正直どちらに進むべきか迷っている。
私はもともとそれをデータベースに組み込むつもりでしたが、現在のデータベース設計ではこれが常に可能であるとは限りません。たとえば、一部のテーブルには循環参照が含まれており、 を使用してリンクすることはできませんON UPDATE CASCADE
。私が遭遇している別の問題は、複数のデータベース/サーバーを使用する可能性があり、リンクされたサーバー間で外部キー制約が機能しない可能性があることです。
私は何人かの開発者に、アプリケーション層でデータ検証を行い、データベースはデータを保存する場所のままにしておくことを勧めました。私はこの考えが好きですが、多くの場所で、データベースに参照整合性を構築して、アプリケーション層を通過しないトランザクションを許可する方が良いと読んだことがあります。これには同意しますが、終了時にはすべてのデータベース トランザクションがアプリケーションを通過するはずです。後でアドインを作成することにした場合でも、ObjectModel フレームワークを使用しているため、挿入/更新/削除クエリを書き直す必要はありません。
私の質問は、この状況でも、参照整合性をデータベースに組み込むことをお勧めしますか、それとも代わりにアプリケーション層に組み込むことは問題ありませんか? なぜ?