C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

■102720 / 1階層)  表示順フィールドのデータ型
□投稿者/ 魔界の仮面弁士 (3744回)-(2023/12/13(Wed) 19:58:39)
2023/12/13(Wed) 20:01:35 編集(投稿者)

No102719 (eb さん) に返信
> コンボボックスに使うマスタには表示順フィールドを設けると便利だという話題があり、
たとえば、駅名を指定するリストがあったとして、そこに新駅が追加された場合、
新駅を最後にするのではなく、路線の駅順に合わせてリストの途中に挿入したいことがあるでしょう。
そのような場合、ソート用の項目が別に用意されていると、表示する際に都合が良かったりしますね。


> 「テキスト型(シフトJIS順での並び替えが設定可能)で設定しておくと
(ここでいう「シフトJIS順」というのは、Access における照合順序設定のことかな…)


> 実際テキスト型を使うのが良さそうでしょうか。
どうでしょうね。個人的にはその時々の条件に応じて決まるんじゃないかな、と思います。
数値で管理されている ID や CODE の場合、数値型にするか文字列型にするかは処理系次第かと。

データ量としては、数値型の方が容量を抑えられますので、数値型で困らないなら数値のまま扱っても良いでしょう。

一方、各行の文字数を一定にした固定長データを用意したい場合は、
あえてゼロパディングした文字列型が採用されたりもします。

たとえば ODBC 連携の場合、「電話番号が数値型になっては困る」などの事情もあって、
すべてのフィールドが文字列型という前提でデータ交換する設計になっているケースを見かけます。

例示されたように "1" → "10" → "2" というソート順になってしまうと困る場合は、
最初から "001" 、"002" といった書式が採用されることはあるでしょうね。


今後、アルファベットを含む可能性がゼロではないという理由によって、
最初から文字列型で管理しておくといったケースも見たことがあります。
さらにそれが固定長の場合は 可変長テキスト型ではなく固定長テキストが使われるケースも目にします。
金融機関コードとか市区町村コードとかは固定長ですね。(処理系によっては数値で扱われることもある)

あとはチェックデジットの有無で決まることもしばしば。
たとえば市区町村コードの場合、末尾のチェックデジットを含めるかどうかで
5 桁系だったり 6 桁系だったりかが変化するので、先頭ゼロを維持した方が都合が良いことも。

これらの話は、そのシステム単体におけるデータ保持というよりは、他システムとの連携性という意味合いが強いので、質問内容の本題からは外れているかもしれません。


別の話では、日付があえて文字列型で処理されているケースも見かけますね。年/月/日を別々の数値型で管理する実装もまれにあります。
(たとえば墓管理や家系図管理における生没年月日情報では、年月はわかるが日が不明とか、年が不明で月日だけ判明しているといったケースがある)
編集キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←表示順フィールドのデータ型 /eb →Re[2]: 表示順フィールドのデータ型 /eb
 
上記関連ツリー

表示順フィールドのデータ型 / eb (23/12/13(Wed) 17:47) #102719
Re[1]: 表示順フィールドのデータ型 / くま (23/12/13(Wed) 20:11) #102721
表示順フィールドのデータ型 / 魔界の仮面弁士 (23/12/13(Wed) 19:58) #102720 ←Now
  └ Re[2]: 表示順フィールドのデータ型 / eb (23/12/14(Thu) 05:38) #102722 解決済み

上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信