過去 18 か月間、複雑なデータベースとクライアント インターフェイスに取り組んできました。このアプリケーションには定期的に新しい機能が追加されており、現在では、拠点や海外を含むすべてのオフィスで、毎日数十人のユーザーに使用されています。これは、REAL データベースを備えた REAL アプリケーションであることを示すためのものです。
これまで、ストアド プロシージャを記述する必要はありませんでしたが、クライアント バージョンと更新されたデータベース モデルの間のマイナーな問題を解決するための一時的な場合を除きます (古いクライアント バージョンでは、新しく作成されたフィールドが適切に更新されず、全員が最新のデータベース モデルをインストールするまで)。バージョン)。
同様に、まだトリガーは必要ありませんでした。実際、SP とトリガーは、システムのもの、またはレプリケーション目的で追加されたものだけです。
開発者がデータベースの最適化はデータベースの正規化に反対しなければならないと考えるとき、SP とトリガーは主にデータベース設計のデフォルトを補うために使用されたり、データベース設計ルールをバイパスしようとしたりするために使用されるという奇妙な感覚があります。
問題は、これらのツールは (開発と保守の両方で) 時間がかかることです。各開発者は、データベースで維持するのに最も「費用がかかる」アイテムであることを念頭に置いて、非常に慎重に使用する必要があります。
データベースにストアド プロシージャやトリガーがまったくないかほとんどないことは、データベースの正規化レベルやコードのメンテナンス コストを示す良い指標であると考えてよいでしょうか?
編集:
トリガーと SP の両方を使用することについて公正な議論を提供した人もいます。しかし、これらのツールは、ほとんどの場合、不適切または過剰な方法で使用されていると私は考え続けています。テーブル フィールド間で複雑な更新を行うため、または合計やその他の集計データを再計算するために、いくつのトリガーが設定されていますか? 問題を報告するための一時テーブルを作成するために使用される SP の数は? これらは、開発者がこれらのツールを使用する多くの状況の 2 つであり、これは通常、データベースの設計/正規化の欠陥を示していると思います。
SP とトリガーの使用を厳密に管理する必要があることを認めている人もいます。私も必要だと思います。
私は、他のデータベースで働いているこれらすべての SQL ギークが私たちを見下し、友人たちに「ほら、彼らは SP やトリガーさえ使っていない!ハハ!」と言って、支持する議論を見つけようとしていると告白しなければなりません