kkamegawa's weblog

Visual Studio,TFS,ALM,VSTS,DevOps関係のことについていろいろと書いていきます。Google Analyticsで解析を行っています

データレイアウトは縦軸、横軸?

COBOL文化か、ISAM文化か
テーブルの設計における横持ち・縦持ち
横持ちと縦持ち
カレンダーの場合、1〜12月までが1レコードに入るような設計を横軸、月ごとにレコードを作るような設計を縦軸として書きます。私は状況によるかなぁ…とはいえ、今時ならあまり横軸ってしたくないような気がします。仮に横軸にとるのであれば、一度のレコード追加で必ずデータが半分以上の列埋まる場合だったらまず考えてみるかな?
データにもよりますが、今時なら集計用Cube作って見せたり、どうしてもってことであればOracleでいえばパーティショニング(確かSQL Server 2005でもあったはず)したりすれば月ごとの集計でもむちゃなことにならないんじゃないでしょうか。
以前、いわゆる縦軸で値入れて、見るときはバッチで結果閲覧用の表に格納するなんてことはやっていました。リアルタイムで値を見る必要がないので、そういう実装でも全然問題はありませんでした。
初音さんも書いていますが、横軸って典型的なCOBOL思考ですよね。いや、否定しているわけじゃなくて、COBOLで育った人はすべからく、データレイアウト=帳票という思考なので、帳票に出すデータがすべて一レコードに収まっていないと安心しないので、こういう設計をしたがるというか。だからDBMSに新しい便利な機能が入っても、まったく触ろうともしませんね。30年前のやり方で今もやろうとして、サポートの人に呆れられることもしばしば…。