TOP設計・移行・活用> 使用するデータ型を統一する
実践!モデリングツール
即活用!ツールを活用したデータモデリング

第3回:日本語名の是非とデータ型採用方針
著者:システムインテグレータ  梅田 弘之   2006/3/22
前のページ  1  2  3  4
使用するデータ型を統一する

   このようにきめ細やかなデータ型が用意されているのに対し、データベース設計者はどのデータ型を採択するかを決めなければなりません。例えば、Northwindの社員コードは数値型を使っていますが、一般にはコード類を文字型に統一する方が多いと思います。

   その場合でも社員コードなど桁数が決まっているものはchar(8)というように固定長文字列タイプを使い、社員名などのように桁数がデータにより異なるカラムはvarchar(20)というように可変長文字列タイプを使うのが普通でしょう。

Northwind 梅田の使い方
列名 データ型 SQL Server Oracle 方針
使用停止 Bit Decimal(1,0) Number(1,0) Bitは索引を張れないので使わない
運賃 Money Decimal(8,0) Number(8,0) 数値型はDecimalに統一
数量 Smallint Decimal(4,0) Number(4,0) 数値型はDecimalに統一
値引 Real Decimal(5,2) Number(5,2) 数値型はDecimalに統一
社員番号 Int Nvarchar(8) Nvarchar2(8) ID関連は文字型を使う
地域明細 Nchar(50) Nvarchar(50) Nvarchar2(50) 文字型はNvarcharに統一
備考 Ntext Ntext Nclob 長い可変長文字列はNclobを使用
受注日 Datetime Datetime Date 日付・時刻はDateを使用
写真 Image Image Blob 音声や画像はBlob使用

表2:Northwindのデータ型使い分けと筆者プラン

   表2の左欄は、Northwindで採択されているデータ型です。格納されるデータによりbitやmoney、smallint、int、realなど様々なデータ型が使われています。ただしこのデータベースは「見本」なので、意図的に様々なデータ型を使っているのかも知れません。

   実際のデータベース設計では、使用するデータ型をもっと統一した方がよいと思います。表2の右欄に著者だったらどれにするかを、SQL ServerとOracleの両ケースで記載しています。著者はできるだけデータ型を統一した方が開発・メンテナンスが楽ちんという考えで、データの種類によりデータ型を表3のように統一しています。

金額や数値
真数(Decimal/Number)
文字列
可変長文字列(Nvarchar/Nvarchar2)
ID、番号、コード
可変長文字列(Nvarchar/Nvarchar2)
フラグ
真数(Decimal/Number)
区分、タイプ、パターン 可変長文字列(Nvarchar/Nvarchar2)

表3:データの種類によるデータ型の統一

   例えば金額や数値などは、格納される値に小数点があるかどうか、最大桁数の大きさがいくつかにかかわらず真数(SQL Server:Decimal/Oracle:Number)を使います。また文字列であれば、文字数が決まっているかどうかにかかわらず可変長文字列(SQL Server:Nvarchar /Oracle:Nvarchar2)一本で勝負です。

   カラム名とデータ型との関係も固定化し、コードや区分という名称が付けば必ず文字型、フラグという名称が付けば必ず数値型というように、そのアプリケーション内ではカラム名とデータ型との関係は統一します。

   このようなルールを定めておけば、あるときはdecimal、あるときはintというように神経を使う必要がありません。ディスクやメモリ容量が飛躍的に大きくなった現代において、わずかなデータサイズを惜しんでばらばらにするよりは、統一によりミスを少なくする方が勝ると考えています。


最後に

   今回は、データベース設計に取り掛かる際に最初にぶつかる問題である、「日本語を使うか?」「データ型を使い分けるか?」という2点をテーマにしました。このあたりは、人によって様々な考え方があるところです。こんなふうに考えている人もいるんだなと思っていただければ結構だと思います。

前のページ  1  2  3  4


システムインテグレータ  梅田 弘之
著者プロフィール
株式会社システムインテグレータ  梅田 弘之
東芝、住商情報システムを経て1995年にシステムインテグレータ社を設立。 常駐・派遣主体の労働集約的な日本のソフトウェア業の中で、創造性にこだわってパッケージビジネスを行っている。 国際競争力のない日本のIT産業が、ここから巻き返しを図るための切り札は「プロジェクト管理」だと信じ、実践的なプロジェクト管理手法「PYRAMID」を自社開発している。


INDEX
第3回:日本語名の是非とデータ型採用方針
  データベースのテーブル設計
  物理モデルをシングルバイト、論理モデルをダブルバイトに
  論理モデル情報をRDBMSコメント欄に保存
使用するデータ型を統一する