最近(SQLserver内の)テーブル間に制約を作成する理由はありますか?もしそうなら、いつ?私の分野のほとんどのアプリケーションはオブジェクトの原則に基づいて構築されており、テーブルは必要に応じて結合されます。需要は、アプリケーションのニーズに基づいています。単純なルックアップのために束縛されたテーブルをロードすることはありません。順番に(アクションの後)別の単純なルックアップが必要です。
EntityContext、Linq2Data、NHibernateなどのORMツールも、それ自体で制約を処理します。少なくとも、相互に必要なテーブルはわかっています。サーバー内で制約を行うことは、同じ変更を2回行う(強制する)だけのことですか?
これは通常、決定に疑問を投げかけるものではありませんが、このデータベースはまったく異なる設計になっています。設計は通常のように見えますが、ほとんどはアプリケーションで使用されるオブジェクトをミラーリングしています。私を悩ませているのは、SQLserver内で「カスケードなし」に設定されたすべての制約です。つまり、新しいデータベースクエリをコーディングするときは、「検索して検索」する必要があります。場合によっては、1回の削除を行うために最大10レベルの正確な順序が必要です。
これは私を驚かせます、そして、私はそれをどう扱うべきかわかりません。
私の単純な世界では、この設定により、制約のほとんどの目的が失われます。設計に関する知識がなくてもデータベースにホストからアクセスした場合はOKです。
このシナリオでどのように行動しますか?
dbからすべての制約を削除して、アプリケーションレベルで保持しないのはなぜですか。