スイーツ(笑)と呼ばないで!!
| |||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
11/23/23:52 [PR] |
11/30/09:49 DB設計者のバイアス昨日、知り合いのSEからDB設計で初めてMySQL使うらしくデータ型について相談された。
小数点以下1桁固定のカラムは何型? と聞かれたので、(何を悩んでいるんだ?と心の中で思いながら)DECIMALとかNUMERICとかで良いんじゃない?と答えたら、 3.8+4.2=8 の8を8.0ではなく、8にしたいんだと、言われた。 さらには、文字列で持とうかな、とかブツブツ言ってた。 なんか、最近twitterで見かける、どこかの小学校の採点の話を思い出した。 (これとか、http://headlines.yahoo.co.jp/hl?a=20161129-00000081-it_nlab-sci) ちなみに、 じゃ、結局どれが正解ですか? という感じでこれだけの情報で判断しようとする人はDB設計者には向いていない。 これはケースによる。 例えば、文字列で持つのがナンセンスかというと、もう今後値の変更も計算もなく、単に表示にしか使われないのであれば、ある意味文字列で持てば最速で表現できるので悪くない。 後々、このカラムの値がSQLレベルでの計算に用いられて厳密に行きたいのであれば、やはり固定小数点型のDECIMALとかNUMERICが良いだろう。 例えば、整数部分の桁数がすごく大きくて、小数点以下なんて正直どうでも良いようなレベルの計算をするのであれば、浮動小数点型のFLOAT、DOUBLEでも良い。 他の視点として、そもそもSQLで計算するのか、例えばPHPとかで一度受け取って計算(つまり一度キャストされる可能性もある)あるいは表示するのか、でも話が違う。 これを、私は、DB設計者のバイアス、と呼ぶ。 DB設計では、DOAでデータにまず着目する、それに対して、設計者はバイアスをかけることで、現実のDB設計に落とし込む。そのバイアスをかけるためにはシステム全体の世界観を理解する必要がある。 だから、業務理解なくしてDB設計はできない。 弊社はいろんなスタイルのSEがいる。画面設計とか詳細仕様はプログラマにお任せするスタイルもあれば、その辺も細かく指示するSEもいる。 ただ、DB設計だけは、お客さんと直接話すSEが担当するというポリシーを採用している。会社としての理由はもしかすると別にあるかもしれないが、少なくとも私がそのポリシーに賛成する理由は、より良いシステム構築には上記のDB設計者のバイアスが必須だと考えるからである。 PR
|
|
|