1

外部キー、制約、デフォルト値などの項目は、データベース管理システム (この場合は MS Sql 2005) またはアプリケーションで処理する必要がありますか? 双方から意見を聞いたが、正直どちらに進むべきか迷っている。

私はもともとそれをデータベースに組み込むつもりでしたが、現在のデータベース設計ではこれが常に可能であるとは限りません。たとえば、一部のテーブルには循環参照が含まれており、 を使用してリンクすることはできませんON UPDATE CASCADE。私が遭遇している別の問題は、複数のデータベース/サーバーを使用する可能性があり、リンクされたサーバー間で外部キー制約が機能しない可能性があることです。

私は何人かの開発者に、アプリケーション層でデータ検証を行い、データベースはデータを保存する場所のままにしておくことを勧めました。私はこの考えが好きですが、多くの場所で、データベースに参照整合性を構築して、アプリケーション層を通過しないトランザクションを許可する方が良いと読んだことがあります。これには同意しますが、終了時にはすべてのデータベース トランザクションがアプリケーションを通過するはずです。後でアドインを作成することにした場合でも、ObjectModel フレームワークを使用しているため、挿入/更新/削除クエリを書き直す必要はありません。

私の質問は、この状況でも、参照整合性をデータベースに組み込むことをお勧めしますか、それとも代わりにアプリケーション層に組み込むことは問題ありませんか? なぜ?

4

3 に答える 3

5

データベースで可能な限り多くのデータ整合性を維持する必要があります。宣言すると「無料」になり、データがどのようにデータベースに到達しても適用されることが保証されます。それは、私には簡単なことのように思えます。

データベースで宣言的に指定できないデータベース整合性のタイプのインスタンスをいくつか作成しました。そのような場合、明らかに、整合性を中間層またはフロントエンドにプログラムし、最善を尽くさなければなりません。

于 2010-10-08T20:05:09.983 に答える
4

データベースを最適な用途に使用してください。参照整合性が含まれています - データベースに組み込まれており、データが一貫した状態にあることを保証します。

これがアプリケーションの特定のものに適していない場合は、アプリケーション ロジック/ドメイン モデルでそれを構築します。

個人的には、可能であれば、アプリケーションとデータベースの両方に参照ロジックを追加するようにします (多層防御)。

于 2010-10-08T20:05:12.917 に答える
2

できるときはデータベース管理システム、できないときはアプリケーション。その上に構築されたものはすべてそれを活用できるように、可能な限り最も古いテクノロジーを適用する必要があります。

于 2010-10-08T20:03:36.997 に答える