2007年11月29日

テーブル設計の指針(備忘録)

 最近、DB設計やデータモデリング等のDB周辺について集中して触れることがあったのでテーブル設計における指針を備忘録として書いておきます。

***********************

◆サロゲートキーとナチュラルキー

 主キーの設定時に大きく2つの設計指針があります。

 1つは顧客マスタにおける顧客ID、商品マスタにおける商品番号、また発注テーブルにおける発注番号等、ビジネス(業務)上で意味を持ち、自然に一意となる値を主キーに設定する設計指針です。
 これを「ナチュラルキー (natural key)」と呼びます。

 もう1つは、システム内部でレコードを一意とする為に採番(その多くは自動採番)する方法です。
 この方法で取得した主キーを「サロゲートキー(surrogate key)」とか「人工キー(artificial key)」と呼びます。
※参考:「いざRuby on Railsでプロトタイピング」

 RubyOnRailsで使用するActiveRecordではサロゲートキーをある意味前提になっています(そのパフォーマンスを最大限に発揮できます)。

 テーブル設計上、どっちが良いか…ですが、私はお客様の要望が無ければサロゲートキーを採用します。

 ナチュラルキーの代表的なものである顧客IDや社員番号、商品番号等は先程も書いたようにお客様(直接でなく間接的な意味も含め)が決めたものです。
 そしてその決め方、不変である保証はいつ(お客様の都合により)変わるともしれないのです。

 そういう外部(ここでいうお客様)に決定要因を持たれていることは、設計において(またプロジェクト全体の視点からも)リスクが高くなります。
 「自分の預かり知らぬところ」「手が出せないどうしようもないところ」だからです。

 一方、サロゲートキー方式の場合、主キーはシステムの表面上に現れないので、仕様変更にも比較的柔軟に対応できます。
※参考:「システムの寿命はコードで決まる!」

◆システムテーブルの使い方
 会社名や運用日付、伝票Noカウンター等を保持する方法にシステムテーブルを作成して保持する設計指針があります。

 通常、このシステムテーブルは1レコードのみでレコードの増減はありえないのですが、この時、ちょっと拡張性を考えて、視野を広く持てば複数レコードとなっても良いように主キーを設定します。

 将来的に同一システム上で複数部署、会社等に横展開しやすくする為です。

※参考:「業務システムモデリング練習帳

◆セットの応用
 テーブル設計には直接関係ないのですが、業務分析をうまくテーブル設計に反映させましょうという内容です。

 例えば薬や部品等、「Aを注文する際には必ずBもCも注文するよ」というセット(組合せ)があることが多かったりします。
 で、普通のシステムの注文機能だとA,B,Cは3回注文する品を選ぶ必要があります。

 Aを選べばB,Cにもデフォルトの選択がされていれば現場は助かると思いませんか?

 こういう内容は普通にヒヤリングしているだけでは出てこない内容です(おそらくそもそも要求事項として上がって来ないでしょう)。

 ただ、使用するユーザ(=現場)にとっては面倒なことだったりして、運用テストの段階で仕様追加という名前で出てくることでもあります。

 そしてこの要望を実現しようとすれば、その組合せ情報を保持する関連テーブルが必要だったりして、すぐには対応できません。

 ですので、業務分析、ヒヤリング時に、この視点でも考えてみて、適用できそうだったらこちらから提案できれば良いと思います。

◆インデックスについて
 インデックスをシステム構築の後半戦…下流工程…下手をすると結合テスト、運用テストで初めて設定することがあります。

 そのきっかけが「パフォーマンスが出ない」という現象です。
 定数的に表現されれば良いのですが、たいてい「何となく遅い」と言われることが多いものです。まぁこれは要件定義段階で非機能要求を決めていないのが元凶ですが…。

 インデックス設計は設計フェーズで行う必要があります。
 データの件数、増加量、参照系/更新系等を基本設計(外部設計)で行い、それに見合うように内部設計でテーブル定義を行う必要があります。

 インデックスは比較的簡単に行え、効果も高いことが多い(費用対効果が高い)のですが、逆効果になることもあるので注意が必要です。

***********************

 テーブル設計には「絶対的」正解というものは無いと思います。

 ただ、定石はあり、「実装するのに楽だから」とか検討が浅すぎた等で後々、保守開発、機能追加で本来(その工数を前払いしていればもっと少なくて済んだ)不要な工数を使っているように思います。

 これは結局、お客様にとっての不利益になり、その工数の妥当性があっても「構築時にキチッと考えておいてよ」とお客様の不満(不信感)のタネになります。
タグ:DB
posted by yohhatu at 23:12 | Comment(0) | TrackBack(0) | 仕事 | このブログの読者になる | 更新情報をチェックする

2007年11月19日

[バレー]W杯女子バレー

 今回のバレーW杯の女子。
 結果、過去最低の7位とのことでした。

 選手やチーム力を考えれば正直「こんなものかな?」と思いました(もちろん良いプレーでしたが)。
 全部の試合を見たわけではないですが、素人目から見ても選手選考から始まって選手交代について?と思いました。

 なによりメンバー構成を眺めた時に「1:センタープレイヤー多すぎ」「2:セッターの控えが高校生?」「3:故障明け(というか故障中?)の大山がいる?」て色々思いました。

***********************

[1]「センタープレイヤー多すぎ」
 吉原や大友が抜けた後のセンターがいないのは分かりますが、オープンに比べ(WS=ウィングスパイカーって呼び名を最近はするんですね)、セッターとのコンビネーションがより大事になるのでセンターをあんなに入れて有効に使えるのかどうか…。

 と思って見ていれば、ほとんどワンポイントブロッカー以外ではほぼ出場せずでした。

[2]「セッターの控えが高校生?」
 経験が最重要視されるセッターの控えが高校生だけってとのはどうかなぁと。
 次世代のセッターを育てる意味でベンチに入れるってのは分かります。が、もう1枚セッターを入れておけばと思いました。
 組み立てをリズムを変えることができるのがセッターなので、竹下とは別のリズムを作れるセッターがいれば…と思いました(その人材がいないのかもしれませんが)。

 感情までは分かりませんが、控えが高校生では竹下の見えない精神的負担て大きかったように思います。

[3]「故障明け(というか故障中?)の大山がいる?」
 センターが多かったりまた木村や高橋も圧倒的なWSで無いので、それこそ手を変え品を変えないといけないのに、故障明けの大山を入れる余裕なんて無かったと思います。
 プレーを見ても「う〜ん」て感じでしたし。

 高さでは欧米には勝てないわけでスピードやテクニック、守備力で勝負するのが目指すバレーだと思っていたのですが…。

 仮に故障していなければ国内で通用するとしても世界レベルではパワー重視(厳しく言えば打てるコースが少ない)の大山ではシャットアウトの餌食と思います。
 大会後半栗原が崩れた時も結局、なんも出来ませんでしたし。

***********************


 そもそも、このW杯でオリンピック出場権を取る公算がどれくらいあったのでしょう?
 結果から見れば、次の最終予選(アジア4カ国で1位になれば出場)を目標にするか、W杯で取りにいくか中途半端だったように外部からは見えました。

 スポンサーとの関係か知りませんが、やたら大本営的な「メダルの期待」なんてありますが、正直オリンピックに出場するのが精一杯で、それこそベスト8に入ったら大金星レベルと思います。

 最後に…柳本監督…(ポーズかもしれませんが)選手と一緒に熱くなってどうするんですか?
 (より強い)各国は完全にデータ分析して冷静な指示のもとプレーしているのに…日本もしているんでしょうが、あのベンチからはそれが効果的に出ているようには見えません。
タグ:バレー 日常
posted by yohhatu at 00:15 | Comment(0) | TrackBack(0) | 趣味 | このブログの読者になる | 更新情報をチェックする

2007年11月18日

[仕事]遅ればせながら…

 10月に受けた情報処理試験に合格していました。
 受験した時にそれなりに手応えがありましたし、自己採点では合格ラインを突破していたものの、やっぱりちゃんと見るとホッとして、嬉しいモノです。

 最後にちゃんと受けた(=敵前逃亡せずに)のは、社会人1,2年目の頃だったように思いますが、その時は知識系(暗記やあまり現場では役に立たない)の午前は合格していたのですが、実務系の午後で落ちていました。
 今回は午前より午後の方が点数が高かったです。
 試験中も午後は普段業務でも似たようなことをしているので苦では無かったです。

 さて、この上級試験も色々あるのですが、忘れないうちに受けようかなぁなんて考えています(この『情報処理試験』ですが2009年頃に色々体系やら変わるのですが…)。
タグ:資格
posted by yohhatu at 08:23 | Comment(0) | TrackBack(0) | 仕事 | このブログの読者になる | 更新情報をチェックする

2007年11月03日

[雑多]コンビニにて…完結編

 これこの話の完結編です。

***********************


 数日後、ヨメさんが私が塩焼きそばを受け取り損ねたコンビニに行った時のこと。

 店員さんが「あ!これこの前の焼きそば代ですぅ」(実際そんな口調だったかは不明だが)と返金してくれた。
 家の最寄りのコンビニで、よく行くので顔を覚えていてくれたんだろう(狭い地域なので名前まで知っていたかもしれない)。

 その後、ヨメはグラタンを買って(こともあろうにその返金してくれたお金でだ)、店員さんの「温めますか?」と聞かれた時、2人の間には微妙な空気が漂っていたらしい。

***********************


 どうせなら「はい!」て元気よく答えて、グラタンを忘れて帰ってくる…(お笑いで言う)天丼…をして欲しかった。
タグ:日常 マイド
posted by yohhatu at 09:05 | Comment(0) | TrackBack(0) | 雑多 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。