データベース

5. 数字フィールドと文字フィールドの正しい使い分け

日付フィールドやタイムスタンプ・フィールドは別として AS/400 の DDS では

大きく 2分すれば 文字フィールドと数字フィールドの 2つに分類される。

フィールドの属性を 文字か数字に決定するときにはよくあるケースとして、

数字しか入らない区分であるからといって数字フィールドとして定義するのはよくない。

例えば [売上区分] には 1=売上, 2=返品 しか入らないので数字フィールドとして

定義するという具合である。

文字が誤って入力されるのを 防ぎたい意図があるのであれば DDS の妥当性検査で

1および 2以外の入力を防止することもできる。

もし、このように売上区分を数字として定義すれば

  • DFU, QUERY の初期値や省略値がゼロとなる
  • ブランクとして表示したいのであれば毎度 編集が必要
  • RPGDSPF でも編集が必要
  • 符号欄が DFU, QUERY, SDA で 1桁余計にとられてしまう
  • DFU, QEUERY などで符号欄があるため長さを間違えやすい
  • 将来 文字の入力を増やすことができない

このように弊害あって 利なしに近い。

数字フィールドは文字フィールドほど柔軟ではないのだ。

それでは、数字フィールドとして定義すべきものはどのようなものだろうか?

答えは非常に明確である。

  • 数量,金額,日付,時刻 以外は文字フィールドである。

と 覚えておけば良い。

これ以外に数字フィールドとして定義すべきものは探してもみつからない。