データベース設計に関する質問です。データベー
データベース設計に関する質問です。データベース設計に関する質問です。 私がいままで参加した業務ソフト開発プロジェクトでは、
日付データを文字データとしてDB設計するケースがありました。
つまり、SQL ServerがDBMSだった場合、
dateやdatetimeを利用せず、char(8)を利用するといったケースです。
そして、プロジェクトによってはdateを利用するケースもありました。
要するに、これらはリーダーの好みで異なっていたのでしょうけれど、
真に優れているのはどちらの手法なのでしょうか。
また、もし「どちらが優れているというのではなく、つかいわけるものなのだ」
という場合、どのようにつかいわけるのでしょうか。
ご回答、よろしくお願いいたします。日付データを文字データとしてDBを設計するのはどうなのか・・・
よくよく考えてみると、数値型も、文字データとして設計してもいいと思いませんか?
でも、あまりそんなことはしませんよね。なぜでしょう・・・この辺りに理由があるように私は思います。
私は、プログラム言語にしろデータベースの型宣言にしろ、どちらも使う人が楽をするために設定できるようになっているのだと思っています。
データをそのデータの型にぴったりするように使用するときに楽ができること
・間違ったデータを入れようとした場合、エラーを出してくれる(プログラムでエラーチェックがいらない)
・演算がしやすい(日付型でも演算時に月がかわる演算を自動で正しくしてくれる)
・大小の比較が簡単にできる(文字列なら2/1>10/1ですが日付型なら2/1<10/1です)
こんないいことがあるなら、なぜ文字列型で使用するか・・・
日付型は、同じ日付で日付の書式が数多くあります。そのために、欲しい書式でデータ得るためには、いつもめんどくさい書式設定の指定をしなければなりません。プログラムを書く側としては楽をするはずのデータ型がめんどくさい書式設定をしなければならない結果になってしまう訳です。
それならば、間違ったデータがはいりにくいところや、日付の演算が必要ない部分であれば、はじめから欲しいデータ書式で文字列型に保存すれば、めんどくさいことがないことになります。
私は以上のようなことだと思います。
私自身は、必ずそのデータにあったデータ型を使って設計をすべきだと思っています。
その理由は、DBにしろプログラムにしろ不具合がないことが大切なことであると思っています。(もちろんほかに大切なものもありますが・・・)その際に、データの型をチェックしてくれるというのは、非常に大切なことだと思っています。書式の指定のめんどくささよりこちらを取るべきだと思っています。
この辺りが「リーダの好み」と感じさせてしまうところでしょうか・・・どれも「なるほど」と思いました。勉強になりました。
どれも正解だと思います。全部ベストアンサーですよ。
と言いたいところですが、どなかた一人を選ばなければならないので、
一番説明が丁寧に感じたこちらをベストアンサーにいたします。
皆さん、有り難うございました。楽しい時間を過ごせました。