- PR -

設計時、データ型について教えてください。

投稿者投稿内容
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2007-04-24 15:27
いつもお世話になっております。
データベース設計時のデータ型について教えてください。

先日、先輩が「最近のデータベース設計(※今回はSQLServer2005に限定する)ではデータ型はほとんどntext型とint型でいいから楽になった。」と話していました。
私は今までデータベース設計時にテーブルの列をnvarchar(30)とかDecimal(8,0)の様にデータ型を細かく設定しています。

確かに先輩のようにntextとint型だけを使用してテーブル設計をしているとレングスを考慮しないでいいので楽ですし、レングスが変更になった場合にも柔軟に対応できますし、便利だなと感じました。

そこで教えていただきたいのが
1.現在のデータベース設計時において先輩のような方法は使用してもいいのでしょうか?(実運用時に問題がでてこないのでしょうか?)
2.そういう方法は流行っているのでしょうか?

皆様のお知恵を拝借させてください。よろしくお願いいたします。
ぶさいくろう
ぬし
会議室デビュー日: 2005/11/22
投稿数: 1232
お住まい・勤務地: 川崎市(は俺も含めてロクな人間が住んでないよw)
投稿日時: 2007-04-24 15:28
その先輩にきけばいいじゃん。

ここで展開するなとは言わないけどさ。
まずその先輩にきいた方が話がはやくね?
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 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
等のページがありまして、今後データベースの設計をする際にどちらの方法を採用すればいいのか頭がパニックになってしまっている状態です。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-04-24 15:49
引用:

カタナさんの書き込み (2007-04-24 15:27) より:
先日、先輩が「最近のデータベース設計(※今回はSQLServer2005に限定する)ではデータ型はほとんどntext型とint型でいいから楽になった。」と話していました。


SQL Server 2005 は使ったことはないので知らないのですが、PostgreSQL もそんな感じですよね。

引用:

カタナさんの書き込み (2007-04-24 15:27) より:
1.現在のデータベース設計時において先輩のような方法は使用してもいいのでしょうか?(実運用時に問題がでてこないのでしょうか?)
2.そういう方法は流行っているのでしょうか?


要は、(1)データーの容量が大きくなりすぎなくて、(2)インデックスが使えて、(3)運用のパフォーマンスが劣化しなければ、別にサイズ(型のサイズ)にこだわらなくて良いと思います。
(SQL Server 2005 の ntext のこれらを満たすのかは知りませんが。)
言語でも、昔は C 言語で char buf[100]; などとしていましたけど、今の C++ や Java なら String クラスを使うだけですよね。
最大長などの制約を付けたいのならば、制約(constraint)で付けたり、アプリケーションの側で付けたりすればよいことでしょう。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2007-04-24 17:16
本題とはちとずれますが、2005であるならば

引用:

ntext 型、text 型、および image 型のデータの管理

この機能は、Microsoft SQL Server の将来のバージョンで削除されます。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションは修正することを検討してください。 代替のデータ型は varchar(max)、nvarchar(max)、および varbinary(max) です。詳細については、「大きな値のデータ型の使用」を参照してください。


一応、ご参考までに。
カタナ
大ベテラン
会議室デビュー日: 2006/05/25
投稿数: 110
投稿日時: 2007-04-24 19:53
かめたろさん、unibonさん返信ありがとうございます。

・かめたろさん
ntextが将来的に削除されるとは目からうろこでした。ありがとうございました。ntextの代わりにvarchar(max)を使用するようにしたいと思います。

・unibonさん
確かに先輩は、PostgreSQLが大のお気に入りで、よく利用しております。
最終的に先輩の言っている内容を私は正直若干疑っていたのですが、問題なさそうなことが分かりました。ありがとうございました。

かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-04-24 21:20
引用:

2.最近の世の中の最近のシステムは皆そうだ。


今私が作っているシステムは違うので「皆」ではないでしょうww

#世の中には悪い先輩がたくさんいますね。。。

忠犬
大ベテラン
会議室デビュー日: 2006/05/01
投稿数: 109
投稿日時: 2007-04-25 00:16
多くのRDBMSでは、インデクスを定義したり、ソートやグループ化する列に関しては、
データ型や長さに制限があります。

また、長大なデータを格納可能なデータ型は、行を物理的に格納する場合、基本となる
レコードとは別のレコードとして格納されます。そのため、行の全列を操作する
場合は、1行の操作で必ず複数回のI/Oが発生するといった問題もあります。

スキルアップ/キャリアアップ(JOB@IT)