この10年くらいの課題なんですが、データベースを利用する場合、ビジネスロジックをどこに置くかという問題に明確な解答を出せていない私がいます。
たとえば、オブジェクトデータベースの場合、設計したクラス図を元にクラスをそのままデータベースにおけるので、ビジネスロジックは、クラスのメソッドとしてデータベース内に配置できます。そうなると、アプリケーションは、オブジェクトデータベース内のインスタンスに対してメソッドを実行することで、ビジネスロジックを実行できます。
これがリレーショナルデータベースとなると、ことは簡単にいかず、オブジェクト指向で設計しても、テーブルとストアドプロシージャに分離が必要で、データとロジックが分離してしまいます。ストアドプロシージャにビジネスロジックが集約できれば、それを呼び出すことでアプリケーションのビジネス層を簡素化できるのですが、一般的にリレーショナルデータベースのストアドプロシージャで実現できることには制約があります。
これらのバックグラウンドを理解したうえで、SQL Server 2005を見た場合、いったいビジネスロジックをどこに配置すればよいのか?、という疑問を感じる人が多いのではないかと思います。その理由は、.NET Frameworkを利用したロジックをSQL Server 2005に統合できるからです。
私自身はコテコテにSQL Server 2005を評価している立場ではないので、白黒はっきり付けることができないのですが、もしSQL Server 2005側にビジネスロジックを集約することができれば、多階層の分散アプリケーションの開発スタイルのパラダイムシフトが発生するのではないかと感じています。
私の師匠である某教授の理論によれば、「データベースに任せられることは、データベースに任せた方が良い」と10年前に指導を受けています。
この理論には私は賛同しており、2000年から2001年頃、オブジェクトデータベースを販売していたときには必ず、ビジネスロジックをできるだけデータベースに集約することを提案していました。
SQL Serverに限らず、Oracle、DB2と、.NETとの融合が進んでいく現在、ビジネスロジックの配置について、システム設計者とデータベース設計者が協力しあって、ベターな解法を選んでいくのが必要なのかもしれないと感じています。
明確な解がなくて抽象的ではありますが、皆さんのご意見を伺えれば幸いです。