私のOracleデータベースでは、列がVARCHAR2であると予想しています。
米国の郵便番号は 9 です。
カナダ人は7です。
私は32文字が合理的な上限になると考えています
私は何が欠けていますか?
[編集] TIL: 質問に対する妥当な回答は 12 です。貢献してくれた皆さんに感謝します。
私のOracleデータベースでは、列がVARCHAR2であると予想しています。
米国の郵便番号は 9 です。
カナダ人は7です。
私は32文字が合理的な上限になると考えています
私は何が欠けていますか?
[編集] TIL: 質問に対する妥当な回答は 12 です。貢献してくれた皆さんに感謝します。
ウィキペディアの郵便番号のページに目を通すと、32 文字で十分なはずです。16文字でもいいと思います。
格納する予定の実際のデータよりも大きなフィールド サイズを宣言するのはなぜですか?
あなたのアプリケーションの最初のバージョンが米国とカナダの住所をサポートする予定である場合 (質問でそれらのサイズを呼び出しているという事実から推測しています)、フィールドを VARCHAR2(9) (または VARCHAR2( 10) ハイフンを ZIP+4 フィールドに格納する場合)。他の人が各国の郵便番号に対して行った投稿を見ても、VARCHAR2(9) または VARCHAR2(10) は、他のすべての国ではないにしても、ほとんどの国で十分です。
必要に応じて、いつでも列を ALTER して長さを増やすことができます。しかし、何らかの理由で (つまり、配送ラベルに別の行が必要なため)、誰かがどこかで「クリエイティブ」になり、VARCHAR2(50) フィールドに 50 文字を詰め込むことを決定するのを防ぐことは一般に困難です。また、境界ケースのテストにも対処する必要があります (ZIP を表示するすべてのアプリケーションは 50 文字を処理しますか?)。また、クライアントがデータベースからデータを取得する場合、通常、特定の行の実際の長さではなく、フェッチされるデータの最大サイズに基づいてメモリを割り当てます。この特定のケースではおそらく大したことではありませんが、状況によっては行ごとに 40 バイトが適切な RAM のチャンクになる可能性があります。
余談ですが、(少なくとも米国の住所の場合) 郵便番号と +4 拡張子を別々に保存することも検討してください。一般に、地理的な地域ごとにレポートを生成できると便利です。また、+4 拡張子で区切るのではなく、郵便番号にすべてをまとめたい場合がよくあります。その時点で、郵便番号の最初の 5 文字を SUBSTR しようとする必要がなくなると便利です。
正規化?郵便番号は複数回使用される場合があり、通りの名前や町の名前に関連している場合があります。テーブルを分離します。
あなたが見逃しているのは、郵便番号を特別に処理する必要がある理由です。
郵便番号を実際に操作する必要がない場合は、心配しないことをお勧めします。仕事とは、住所ラベルなどを印刷するためだけに使用するのではなく、特別な処理を行うことを意味します。
[たとえば]VARCHAR2(50)の3つまたは4つのアドレスフィールドを作成し、ユーザーが好きなように入力できるようにするだけです。
注文や取引を郵便番号でグループ化する必要が本当にありますか?国によってこの分野のスキームは大きく異なるので、私はそうは思いません。
英国は標準を公開しています: UK Government Data Standards Catalog
Max 35 characters per line
国際郵便住所:
Minimum of 2 lines and maximum of 5 lines for the postal delivery point
details, plus 1 line for country and 1 line for postcode/zip code
英国の郵便番号の長さは次のとおりです。
Minimum 6 and Maximum 8 characters
カナダの郵便番号は、文字と数字 (LNLNLN) の形式の 6 文字のみです。
郵便番号をデータベースに統合する場合は、ジオネーム データベースを使用するのが最適です。使い方も理解も難しいですが、私たちのようなユーザーが自由に利用できる最大の地理データベースです。
他のすべてのそのようなデータベースは、多かれ少なかれ同じデータと構造を持っている可能性があります。データベースから余分な/冗長な情報を削除するだけです。低負荷システムで無料のサービスを使用するだけの場合、制限は魅力的であり、json と ajax を使用してより簡単なインターフェイスを提供します。ここで制限を表示できます
参考までに、郵便番号を保存するには varchar(20) で十分です