くだらない質問で申し訳ありませんが宜しくお願いします。
下記のようなデータを格納するテーブルを構築しています。
・ユーザーID
・名前
・カタカナ
・パスワード
・年齢
・郵便番号
・住所1
・住所2
・住所3
・電話番号
・メールアドレス
・備考
・削除フラグ
・登録者
・登録日
・更新者
・更新日
上記の内容を下記のようなテーブルのフィールドのデータ型を考えました。
・ユーザーIDのデータ型をVARCHAR(4)
・名前のデータ型をVARCHAR(32)
・カタカナのデータ型をVARCHAR(32)
・パスワードのデータ型をVARCHAR(255)
・年齢のデータ型をINTEGER
・郵便番号のデータ型をVARCHAR(8)
・住所1のデータ型をVARCHAR(255)
・住所2のデータ型をVARCHAR(255)
・住所3のデータ型をVARCHAR(255)
・電話番号のデータ型をVARCHAR(18)
・メールアドレスのデータ型をVARCHAR(255)
・備考のデータ型をTEXT
・削除フラグのデータ型をVARCHAR(1)
・登録者のデータ型をVARCHAR(4)
・登録日のデータ型をTIMESTAMP
・更新者のデータ型をVARCHAR(4)
・更新日のデータ型をTIMESTAMP
そうしたら下記のような風にテーブルのフィールドのデータ型にしたら格納する文字列の桁エラーが起こらないからどうといわれました。
・ユーザーIDのデータ型をVARCHAR(4)
・名前のデータ型をTEXT
・カタカナのデータ型をTEXT
・パスワードのデータ型をTEXT
・年齢のデータ型をTEXT
・郵便番号のデータ型をTEXT
・住所1のデータ型をTEXT
・住所2のデータ型をTEXT
・住所3のデータ型をTEXT
・電話番号のデータ型をTEXT
・メールアドレスのデータ型をTEXT
・備考のデータ型をTEXT
・削除フラグのデータ型をVARCHAR(1)
・登録者のデータ型をVARCHAR(4)
・登録日のデータ型をTIMESTAMP
・更新者のデータ型をVARCHAR(4)
・更新日のデータ型をTIMESTAMP
※現在、使用しているデータベースはPostgreSQLですが、Microsoft SQL ServerやOracleやMySQL等の他のデータベースでもいいものなのかもご教授いただけると助かります。
私の知識不足でどちらがいいのかがわからず投稿させてもらいました。
申し訳ありませんが皆さんのお知恵をお貸し下さい。
宜しくお願いします。
No.3ベストアンサー
- 回答日時:
> 文字列を格納するフィールド型は可変長文字列型にした方がいいのか、固定長文字列型にした方がいいのかです。
varchar 型も可変長文字列なので varchar と text を比べても意味はありません。
固定長と可変長を比べるなら char と varchar を比べなければ行けません。
CPUの性能が良くなり、メモリの搭載量が増え、HDDの読込速度が上がった今となっては、char 型の優位性はあまりないと考えていいでしょう。
データの取扱量が多い環境では、char より varchar の方が資源の有効利用という意味ではメリットが多いかもしれません。
text 型はRDBMSによっては検索時の性能や制限に差があるので、必要最小限にするべきだと思います。
よほど大きな文字列が入る予定が無ければ、varchar(2000) といった感じで varchar 型で大きく取った方が使い勝手がいい場合があります。
No.2
- 回答日時:
varcharは「可変長文字列」ですよ。
PostgreSQLでは、こんなのがありました。
http://lets.postgresql.jp/documents/technical/te …
これに従えば、textが有効的なのは「備考」くらいでしょう。
長いと有名なピカソの本名でも200文字までいきません。
MySQLでは、varcharに比べてtextには制限があります
http://dev.mysql.com/doc/refman/5.1/ja/blob.html
MS SQL Serverでは、textは「将来削除される予定」とあります
http://msdn.microsoft.com/ja-jp/library/ms187993 …
No.1
- 回答日時:
Oracleも視野に入れるなら TEXT 型は不適切です。
Oracleには TEXT 型がありませんので、そのままのDDLではテーブルを作成できませんし、PostgreSQLからデータをコンバートしようとした時、長い文字列が入っているとコンバートできない可能性が有ります。
また、検索をかける際も VARCHAR 型なら文字の正規化をDBにやらせてあいまい検索できる等のメリットがあります。(RDBMSによっては TEXT 型でも対応できる場合もありますが全てではありません)
TEXT 型は文字長を気にしなくて済むので便利ですが、使い勝手が悪い場合もありますし、郵便番号のように桁数が決まっているようなものの場合、不正なデータが入ってしまう可能性を残してしまいますので、どうしても必要な場合だけにとどめた方がいいと思います。
この回答への補足
回答ありがとうございます。
説明不足ですみません。簡単に説明をさせていただきます。
文字列を格納するフィールド型は可変長文字列型にした方がいいのか、固定長文字列型にした方がいいのかです。
ネットで調べてみましたがいい回答を見つける事ができませんでした。
※たぶん、私の探し方が下手なんだと思いますが・・・
大変申し訳ありませんが再度、説明していただけませんでしょうか。
宜しくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
隣の枝がはみ出してきたら切ってもいい?最もやってはいけないことは?
「隣の木が越境してきて困るが、勝手に切ってはいけないと聞くし…」そう思っている方も多いだろう。実は、2023年4月1日に民法が改正され、この「越境枝」のルールが大きく変わった。 教えて!gooでも「境界から出て...
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLにて指定日付より前、かつ最...
-
PostgreSqlでFunctionの作成に...
-
Windows10がインストールできま...
-
shellからpostgresqlへの変数の...
-
postgresql についてです
-
postgresqlでのトランザクショ...
-
SQLでUPSERTを一度に複数行やる...
-
postgreSQLのint型は桁数指定が...
-
エクセルで縦のカラムデータを...
-
列が存在しないと言われる
-
ポストグレにあるExcelファイル...
-
Postgressのデータ一覧へのデー...
-
select文の書き方で分からない...
-
Postgreのupdateコマンドでエラー
-
postgresqlのtableのカラムの型...
-
php、postgresqlを使ってwebア...
-
三段論法を真理値表で証明する
-
sqlの中で、 例えば条件句で AN...
-
tesuto 01
-
python3.12のインストール方法
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SQLのVARCHARとVARCHAR2の違い
-
VBAで変数内に保持された二次配...
-
INT型は金額の型に使用するべき...
-
経過時間(hhmmdd)をDATE型には...
-
postgreSQLのデータ型
-
-3.34 が -3.3399999999999999 ...
-
プライマリーキーの昇順でソー...
-
Excel VBA SelectedItems
-
insertでのエラーについて
-
オラクルのデータ型・通貨について
-
Float型の時の計算結果がおかしい
-
ヌル値は記憶容量を必要としな...
-
DB2 INSERT時の格納順序
-
AccessからOrcleのODBCリンクテ...
-
カラムの長さを指定する意味に...
-
mysql(mariaDB)の格納文字数は...
-
MySQLの型のサイズ指定で速度は...
-
ハングル文字が入らない。
-
MysqlにURLを登録する方法
-
“埋め込む”の意味を教えてください
おすすめ情報
