SQLの重要性
昨年から、販売管理の基幹システムをリプレースしています。
稼動状態までは来ていますが、現場からは、
『昔使えていた便利な機能がなくなった! 』
という不満も受けています。
新システムの機能拡張については、 SQL Serverのユーザー定義関数として表現すると、 カスタマイズの工数が少なく済むようにできています。
そこで、現在までに、約10画面ていど、SQLだけで書きました。 C#で書いた画面も5~6画面あります。
そこで気づいた事があります。
業務システムは、SQLでいろいろできると、そこから先が楽じゃないでしょうか。
SQLでやると楽な理由
1.移植性が高い
社内のイントラ環境のDBサーバーに、データ抽出用のSQLを書くとします。
SQL(ユーザー定義関数)で書いてしまえば、
モバイル向けに、DBをWebにレプリケーションしたとしても、
リモートDBに同じ関数をコピーすることで、ほぼ無加工で移植できます。
2.最適化されてて速い
サーバー側で最適化した実行プランで動くので、
モバイルアプリ化した時の事など考えると、端末側で計算させるより、
サーバーでやるほうがうまく行きそうです。
3.意外と表現力がある
でもSQLでやれる事に限界があるし・・・と思っていましたが、
基本的なデータ加工なら、標準SQLでできることがわかりました。
SQLのデータ加工
Grouping演算子
例えば、SQLには、Grouping演算子というものがあります。
これは、データの最後に集計行を足してくれるというものです。
ユーザー定義関数の最後に集計行をINSERT、という事もやってきましたが、
これを使いこなせれば、1つのSQLでできるので、
表現力が上がりそうです。
Pivot/Unpivot
データの縦持ち/横持ちを変換するキーワードです。
データの最適化は、使う時に縦横を変換する前提で成り立つので、 SQLだけで目的の形まで簡単に戻ると、楽ができそうです。
特に縦横変換をアプリでやろうとすると、
毎回少しは面倒なはずなので、PIVOT句で解決できれば、
工数削減効果が大きそうな気がします。