0

私は新しいアプリケーションを作成しており、設計段階にあります。InsertedDateいくつかの db テーブルには、レコードが挿入されたときに表示されるフィールドが必要です。

に設定することを考えていDefault ValueますGetDate()

データベースでデフォルト値を設定するよりも、アプリケーションでこれを行う利点はありますか?

4

4 に答える 4

5

アプリケーションではなく、SQL Server で既定値を GetDate() に設定する方がよいと思います。これを使用して、挿入に基づいて順序付けされたテーブルを取得できます。アプリから設定しようとするとオーバーヘッドのようです。挿入で特定の日付を指定したくない場合を除き、それはその目的を殺していると私は信じています.

于 2012-05-10T18:07:06.760 に答える
1

データベースにレコードを手動で挿入する必要がある場合、アプリケーションでデフォルト値を設定してNULL参照を回避する場合は、このフィールドを設定することを忘れないでください。

個人的には、可能な限りデータベースにデフォルト値を設定することを好みますが、他の人はこれについて異なる意見を持っているかもしれません。

于 2012-05-10T18:08:01.670 に答える
0

設計するとき、私は常に関心の分離を非常に重要視しています。これは、「データベースの機能とアプリケーションの機能」という文脈において、「データの所有者は誰か」という質問に要約されます。私は常に、自分のコードが自分のデータを所有しているという意見を持っていました。決してデータベースではありません。データベースは単なるデータのコンテナです。これは、ドレッサーが私の服を所有しているのではなく、私が自分の服を所有していると言っているのと似ています。私のドレッサーは重要な機能を果たし、私の服を整理して利用できるようにしますが、私は常にドレッサーに服を入れるエージェントであり、その整理に責任を負っています.

現代のデータベースは私のドレッサーよりもはるかに強力であると言って、多くの人がこの類推に問題を抱えていると確信していますが、私の経験では、データベース層に機能を追加すればするほど、プロジェクトが混乱し、境界が曖昧になります。データと機能の間 (例: データベースのストアド プロシージャなど)。確かに、あなたの例はこの概念の単純な例ですが、前例が設定されると、何でも構いません。

もう 1 つ取り上げたいのは、使いやすさです。特定の実装が便利だから (null を回避する、異なるサーバー時間など)、それを選択する必要があるという考えは拒否します。私にとって、そのような実装を選択することは、「私のコードが機能しなくても大丈夫です。コードを修正して堅牢にするよりも、コードを使用しないようにします」と言っているのと同じです。

データベース層の機能が保証されているだけでなく必要な場合、極端な規模または他のビジネス要件のために、多くのケースがあると確信していますが、私の経験では、コード内に機能を保持できるほど、よりクリーンになります。 、よりシンプルで堅牢なアプリケーションになります。

于 2012-05-10T18:35:23.843 に答える
0

アプリケーションで実行する場合は、単体テストを実行できます。私がこれまで取り組んできたプロジェクトでは、特に ORM を使用する場合、すべてのデフォルト操作をコードで行います。

于 2012-05-10T18:31:22.117 に答える