SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

DB Magazine 転載記事

まったくの初心者もこれでバッチリ
12のキーワードから学ぶデータベース基本中のキホン(前編)

『DB Magazine 2007年05月号』 転載記事

keyword 4 データ型

 列は表の垂直方向の領域を指しますが、ここには同じ種類のデータが入っている必要があります。例えば、社員番号の列は数値と決めたら数値データでなければなりません。その種類であるデータのタイプを定義したものを「データ型」と言います。

 データ型はデータベースの種類によって表1に示すとおり異なります。Oracleの場合、固定長の文字データを示すCHAR型、可変長の文字データを示すVARCHAR2型、日付データを示すDATE型やTIMESTAMP型、数値データを示すNUMBER型などがあります。

表1:RDBMS製品ごとのデータ型
データのタイプ Oracle SQL Server DB2
数値(整数) [td:rs=2]NUMBER BIGINT
INT
SMALLINT
TINYINT
BIT
DECIMAL
NUMERIC
SMALLINT
INT
BIGINT
DECIMAL
数値(浮動小数点) FLOAT
REAL
FLOAT
REAL
DOUBLE
数値(通貨) なし MONEY
SMALLMONEY
なし
文字 CHAR
VARCHAR2
LONG
CHAR
VARCHAR
CHAR
VARCHAR
LONG VARCHAR
日付 DATE
TIMESTAMP
DATATIME
SMALLDATETIME
DATE
TIME
TIMESTAMP
バイナリ RAW
LONG RAW
BINARY
VARBINARY
CHAR(FOR BIT DATA)
VARCHAR(FOR BIT DATA)
LOB BLOB
CLOB
NCLOB
BFILE
なし BLOB
CLOB

 固定長と可変長の違いは次のとおりです。仮にサイズが10文字と決められていて、その列にデータが入力されたのが4文字しかなかったとき、10文字の領域が確保されるのが固定長で、4文字の領域のみが確保されるのが可変長となります。また可変長の場合は詰めて入れていきます。Oracleの場合、固定長のとき、桁数が余るとスペース文字で補われます。なお、逆にサイズがオーバーしてしまった場合、Oracleではオーバーフローエラーとなります。

 可変長の場合、値の修正によりフィールドのサイズが大きくなってしまうケースもあります。例えば、可変長文字列の列(サイズ8桁)のとある行のフィールドに4文字の値を最初に入力しました。そうすると4文字分の領域が確保されます。その後、4文字の値を8文字に修正したとします。そうするとフィールドには8文字分の領域が確保されます。それにより、行のサイズも比例して大きくなります。

 ただし行が詰まっている状態でこのようなことが起こると、OSレベルでも聞いたことがあると思いますが、「断片化」という状態が起こるケースが増えてきます。断片化が発生すると格納の効率が低下し、より大きな表のサイズが必要となります。また検索の効率も低下します。断片化は、再編成という処理により改善できます(図8)。

図8:断片化の改善
図8:断片化の改善

 データ型は、データ入力時のチェックも行なっています。例えば数値のデータ型に文字データが入力された際にエラーチェックをしたり、Oracleの場合は可能であれば数値のデータ型に変換しています(図9)。

図9:データ型のチェック
図9:データ型のチェック

次のページ
keyword 5 正規化

この記事は参考になりましたか?

DB Magazine 転載記事連載記事一覧
この記事の著者

市川 道雄(イチカワ ミチオ)

 株式会社日立システムアンドサービス、人財教育部に勤務。サポート/ソリューションサービス部門と連携した教育企画/実施を担当後、現在はOracleを含むデータベース関連教育を選任で担当している。Oracle認定講師。データベーススペシャリスト、ORACLE MASTER Gold Oracle Databas...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/3261 2009/02/05 14:00

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー