- 締切済み
データ型について教えてください。
データ型について教えてください。 あまり気にする必要がないかもしれませんが、テーブルにフラグ目的でフィールドを作る場合、 データ型は何するのが一般的なのでしょうか?(CHAR OR NUMBER?) ACCESSで言えばBOOLEANになると思うのですが、ORACLEやポスグレはないですよね? 私は、CHAR(1)にしています。 理由は、プログラムでSQLを書くときに''で囲むようにするためです。 その他のフィールドもだいたいテキストか日付ですので、''を囲むフィールドばかりです。 できるだけ''囲むフィールドに統一して、SQLの記述ミスを少なくしようというのが狙いです。 この考え方は間違っていますか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mnabe
- ベストアンサー率33% (427/1283)
間違っていないと思います。 でも、私は、NUMBER 型を使います。 理由は、プログラムを書くときに、明示的にフラグだと解るようにしたいからです。 フラグとしての使い方を考えると、 プログラム上では、単体で動作する事が多くなってきます。 例えば、データを論理削除する場合に、削除フラグとして利用します。 その時には、SELECT の時には、WHERE の一部として入力されて利用されます。 UPDATE では、他のデータと同時にってよりも、削除フラグだけを設定する事が考えられます。 その為に、他のデータと記述上で見分けが付くように、しておきたい為です。 また、入れるデータも プログラム言語上で利用する True や False を使って明示的に解るようにしたい為です。 この辺りは、何が合っていて、何が間違っているって言うのは少ないと思います。 ルールをしっかりして、混合する様なルールになっていなければ、正解だと思います。
- t_ohta
- ベストアンサー率38% (5238/13705)
PostgreSQLにもboolean型がありますよ。 でも、わたしもchar型を使うことが多いですね。 複数のRDBMSをプロジェクトによって使い分けるので、どのRDBMSでも共通で使える型を使用します。 理由は、その方が間違えが少ないですし、移植する時に修正が少なくなるからです。
補足
postgresにあるんですか。 運用上統一すべきなのですが、、 弊社にはoracleとpostgresがあり、両者で同じテーブルがあるため、データの移植、移行をよく行っています。そう考えると、postgresでboolean使うべきではないですね。