日本語名の是非とデータ型採用方針

2006年3月22日(水)
梅田 弘之(うめだ ひろゆき)

論理モデル情報をRDBMSコメント欄に保存


   RDBMS上には物理モデルと対応するテーブル名・カラム名しかありません。だからNorthwindデータベースをリバースした直後は、物理モデル(カラム名)も論理モデル(属性名)も同じシングルバイト情報です。

   しかし、RDBMSのテーブルやカラムにはコメント欄というものが用意されています。これをうまく利用することで、論理モデル情報(エンティティ名・属性名)もRDBMSに保存することができます。

   図5のようにER図上の物理モデル情報は、RDBMS上のテーブル名・カラム名に対比します。さらに論理モデル情報をテーブルコメント・カラムコメント欄に対応させることもできるのです。この対比を行った状態で、OracleのSCOTTスキーマにフォワードしてみます。

論理モデル情報をコメント欄に対応付け
図5:論理モデル情報をコメント欄に対応付け

   図6はフォワード後のSCOTTスキーマのオブジェクトリストです。この画面を見ると、右端に表示されているテーブルコメント欄にエンティティ名がセットされていることが確認できます。

Oracleのテーブルコメント欄にエンティティ名をセット
図6:Oracleのテーブルコメント欄にエンティティ名をセット
(画像をクリックすると別ウィンドウに拡大図を表示します)

   図7はこの中のテーブル[Employee]の定義情報を表示したもので、右端のカラムコメント欄に属性名がセットされています。このようにRDBMSのコメント欄に日本語名をセットしておけば、リバースした直後から「物理:シングルバイト」「論理:ダブルバイト」と混在した状態を作ることができるのです。

Oracleのカラムコメント欄に属性名をセット
図7:Oracleのカラムコメント欄に属性名をセット
(画像をクリックすると別ウィンドウに拡大図を表示します)


データ型を使い分けるか


   RDBMSは格納するデータの性質にあわせてデータ型を指定します。例えば、[受注日]という日付が入るカラムに日付型というデータ型を指定しておけば、「2006/02/30」といった誤った日付を格納しようとするとエラーにしてくれます。

   データベースは、ISO(国際標準化機構)とANSI(米国規約協会)で標準が制定されています。現在の最新版はSQL99標準と呼ばれているもので、各RDBMSベンダーは、その標準規約を自製品に実装しています。ただし、必ずしも丸ごと採択しているわけではなく、自製品独自の考えを盛り込む形で準拠しているというのが実情です。

   データ型に関しても、RDBMSごとに実装の違いがあります。表1は、SQL99標準で定義しているデータ型と主要3データベースのデータ型を対比したものです。例えば、数値型を見ると、SQL99では格納サイズにより整数をint、smallintと使い分けたり、格納方法の違いにより真数をnumeric、decimalや浮動小数点をfloat、real、doubleなどのデータ型が定義されています。

データ型 SQL99標準 Oracle SQL Server DB2
数値型 int、smallint、
numeric、decimal、
float、real、double

number int、smallint、
tinyint、bigint、
numeric、decimal、
float、real、
money、smallmoney
int、smallint、
bigint、
decimal、
float、real、double

文字型 char、varchar、
nchar、nvarchar、
clob、nclob
char、varchar2、
nchar、nvarchar2、
clob、nclob、long
char、varchar、
nchar、nvarchar、
text、ntext
char、varchar、
longvarchar、
clob、dbclob、long
日付型 date、time、
timestamp
date、
timestamp
datetime、
timestamp
date、time、
timestamp
バイナリ bit、bit varying、
boolean
bolb
raw、long raw、
blob、bfile
binary、varbinary、
bit、
image
graphic、
vargraphic、
blob

表1:SQL99標準と主要RDBMSのデータ型

   例えば数値型の場合、SQL ServerやDB2は比較的表1に準拠した形で実装していますが、Oracleでは真数をnumber一本で勝負という方針です。

   また、文字型にしても、固定長のcharや可変長のvarchar、clobなどが用意されており、格納するデータ型の大きさによって使い分けすることができます。それぞれに対して、各国語文字対応のnchar、nvarchar、nclobもあります。

著者
梅田 弘之(うめだ ひろゆき)
株式会社システムインテグレータ

東芝、SCSKを経て1995年に株式会社システムインテグレータを設立し、現在、代表取締役会長。2006年東証マザーズ、2014年東証第一部、2019年東証スタンダード上場。

前職で日本最初のERP「ProActive」を作った後に独立し、日本初のECパッケージ「SI Web Shopping」や開発支援ツール「SI Object Browser」を開発。日本初のWebベースのERP「GRANDIT」をコンソーシアム方式で開発し、統合型プロジェクト管理システム「SI Object Browser PM」など、独創的なアイデアの製品を次々とリリース。

主な著書に「Oracle8入門」シリーズや「SQL Server7.0徹底入門」、「実践SQL」などのRDBMS系、「グラス片手にデータベース設計入門」シリーズや「パッケージから学ぶ4大分野の業務知識」などの業務知識系、「実践!プロジェクト管理入門」シリーズ、「統合型プロジェクト管理のススメ」などのプロジェクト管理系、最近ではThink ITの連載をまとめた「これからのSIerの話をしよう」「エンジニアなら知っておきたいAIのキホン」「エンジニアなら知っておきたい システム設計とドキュメント」「徹底攻略 JSTQB」を刊行。

「日本のITの近代化」と「日本のITを世界に」の2つのテーマをライフワークに掲げている。

連載バックナンバー

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています