つい最近、マイクロソフトが提供しているデータベースである「AdventureWorks2016」の定義を見ていたところ、列の定義に”計算値”と記載がありました。たとえば、以下の"StockedQty"がそれです。
これなんだろうということで、計算列を調べた結果をメモ程度に残します。
計算列とは?
計算列とは、文字通りではありますが計算した結果を保持する列です。
テーブルの計算列の指定 - SQL Server | Microsoft Learn
たとえば、単価と数量と金額がテーブルに定義してあるとします。金額は、単価×数量で計算されて登録される要件であるとします。その場合、通常であればアプリケーション側でその計算をしなくてはなりません。単価や数量が変われば、もちろん再計算する必要があります。
そこで、金額カラムを計算列として定義しその計算式を単価×数量という形であらかじめ、テーブル定義に計算ロジックを埋め込むことができます。
つまり、面倒だが必ず処理しなくてはならない計算をデータベース側に任せることができるということですね。
おわりに
簡単に計算列を確認しましたが、こんなのあるんだと正直びっくりしました。簡単で規則的な計算をアプリケーション側で毎回実施するのも、計算式を誤ったり、そもそも計算を忘れてしまったりするかもしれないのでとても便利だなと思いました。
そもそも、正規化の話では計算項目はテーブルに持たないみたいな話もあるかもしれませんが、そこは一旦置いておいて。
今後、使えるかもしれないので覚えておいて損はないかなと思いました。
今回はここまで。最後までお読みいただきありがとうございました。
参考
こちら参考にさせていただきました。
計算列(SQL Server) | DB & SQL 技術ブログ
SQLServerのComputed Column(計算列)についての備忘録 - 時が癒す