- - PR -
設計時、データ型について教えてください。
| 投稿者 | 投稿内容 | ||||||||
|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2007-04-24 15:27
いつもお世話になっております。
データベース設計時のデータ型について教えてください。 先日、先輩が「最近のデータベース設計(※今回はSQLServer2005に限定する)ではデータ型はほとんどntext型とint型でいいから楽になった。」と話していました。 私は今までデータベース設計時にテーブルの列をnvarchar(30)とかDecimal(8,0)の様にデータ型を細かく設定しています。 確かに先輩のようにntextとint型だけを使用してテーブル設計をしているとレングスを考慮しないでいいので楽ですし、レングスが変更になった場合にも柔軟に対応できますし、便利だなと感じました。 そこで教えていただきたいのが 1.現在のデータベース設計時において先輩のような方法は使用してもいいのでしょうか?(実運用時に問題がでてこないのでしょうか?) 2.そういう方法は流行っているのでしょうか? 皆様のお知恵を拝借させてください。よろしくお願いいたします。 | ||||||||
|
投稿日時: 2007-04-24 15:28
その先輩にきけばいいじゃん。
ここで展開するなとは言わないけどさ。 まずその先輩にきいた方が話がはやくね? | ||||||||
|
投稿日時: 2007-04-24 15:36
ぶさいくろうさん返信ありがとうございます。
先輩には先日すでに聞いています。先輩が言われるには、 1.実際のシステムでも稼動している。 2.最近の世の中の最近のシステムは皆そうだ。 と言っていました。 ただ私がインターネット等で調べるとそのような情報は見つけれれず、強いて言うなら、 http://www.atmarkit.co.jp/fdotnet/special/win20review02/win20review02_01.html の顧客マスターがそのようなテーブル設計になっているくらいでした。 逆にテーブル設計を細かくする方法では、 http://www.thinkit.co.jp/cert/tech/31/3/4.htm 等のページがありまして、今後データベースの設計をする際にどちらの方法を採用すればいいのか頭がパニックになってしまっている状態です。 | ||||||||
|
投稿日時: 2007-04-24 15:49
SQL Server 2005 は使ったことはないので知らないのですが、PostgreSQL もそんな感じですよね。
要は、(1)データーの容量が大きくなりすぎなくて、(2)インデックスが使えて、(3)運用のパフォーマンスが劣化しなければ、別にサイズ(型のサイズ)にこだわらなくて良いと思います。 (SQL Server 2005 の ntext のこれらを満たすのかは知りませんが。) 言語でも、昔は C 言語で char buf[100]; などとしていましたけど、今の C++ や Java なら String クラスを使うだけですよね。 最大長などの制約を付けたいのならば、制約(constraint)で付けたり、アプリケーションの側で付けたりすればよいことでしょう。 -- unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86} | ||||||||
|
投稿日時: 2007-04-24 17:16
本題とはちとずれますが、2005であるならば
一応、ご参考までに。 | ||||||||
|
投稿日時: 2007-04-24 19:53
かめたろさん、unibonさん返信ありがとうございます。
・かめたろさん ntextが将来的に削除されるとは目からうろこでした。ありがとうございました。ntextの代わりにvarchar(max)を使用するようにしたいと思います。 ・unibonさん 確かに先輩は、PostgreSQLが大のお気に入りで、よく利用しております。 最終的に先輩の言っている内容を私は正直若干疑っていたのですが、問題なさそうなことが分かりました。ありがとうございました。 | ||||||||
|
投稿日時: 2007-04-24 21:20
今私が作っているシステムは違うので「皆」ではないでしょうww #世の中には悪い先輩がたくさんいますね。。。 | ||||||||
|
投稿日時: 2007-04-25 00:16
多くのRDBMSでは、インデクスを定義したり、ソートやグループ化する列に関しては、
データ型や長さに制限があります。 また、長大なデータを格納可能なデータ型は、行を物理的に格納する場合、基本となる レコードとは別のレコードとして格納されます。そのため、行の全列を操作する 場合は、1行の操作で必ず複数回のI/Oが発生するといった問題もあります。 | ||||||||
