Oracleデータベースでは、列がVARCHAR2になると予想しています。
米国の郵便番号は9です。
カナダ人は7です。
32文字が妥当な上限だと思っています
私は何が欠けていますか?
[編集] TIL:12は、貢献したすべての人に感謝の質問に対する合理的な答えです。
ウィキペディアの郵便番号ページ をすり抜けて、32文字で十分です。 16文字でもいいと思います。
すでに@ neil-mcguiganによって提起されているように、ウィキペディアにはトピックに関するまともなページがあります。その12文字に基づいてそれを行う必要があります: http://en.wikipedia.org/wiki/List_of_postal_codes
ウィキペディアの記事には〜254の国がリストされていますが、これは PU(Universal Postal Union) 192か国に相当します。
格納する予定の実際のデータよりも大きいフィールドサイズを宣言するのはなぜですか?
アプリケーションの初期バージョンが米国とカナダの住所をサポートする場合(質問でこれらのサイズを呼び出すという事実から推測しています)、フィールドをVARCHAR2(9)(またはVARCHAR2( 10)Zip + 4フィールドにハイフンを保存する場合)。他の国が郵便番号に対して行った投稿を見ても、他のすべての国ではないにしても、ほとんどの場合、VARCHAR2(9)またはVARCHAR2(10)で十分です。
必要に応じて、いつでも列を変更して長さを増やすことができます。ただし、何らかの理由(つまり、出荷ラベルに別の行が必要なため)で「クリエイティブ」を取得して50文字をVARCHAR2(50)フィールドに詰め込むことを決定することを誰かが阻止することは一般的に困難です。また、境界ケースのテストに対処する必要があります(Zipを表示するすべてのアプリケーションは50文字を処理しますか?)。また、クライアントがデータベースからデータを取得する場合、通常、特定の行の実際の長さではなく、取得されるデータの最大サイズに基づいてメモリを割り当てます。この特定のケースではおそらく大した問題ではありませんが、行ごとに40バイトがRAMの状況によってはまともな塊になる可能性があります。
余談ですが、郵便番号と+4拡張子を別々に保存することを検討することもできます(少なくとも米国の住所の場合)。一般に、地理的な地域ごとにレポートを生成できると便利です。また、+ 4拡張子で分割するのではなく、すべてを郵便番号にまとめたい場合があります。その時点で、郵便番号の最初の5文字をSUBSTRにしようとする必要がないのは便利です。
不足しているのは、郵便番号を特別に処理する必要がある理由です。
郵便番号で[〜#〜] work [〜#〜]を本当に必要としない場合は、心配しないことをお勧めします。仕事とは、単に住所ラベルなどの印刷に使用するのではなく、特別な処理を行うことを意味します。
[たとえば] VARCHAR2(50)の3つまたは4つのアドレスフィールドを作成し、ユーザーが必要なものを入力できるようにします。
本当に必要注文またはトランザクションを郵便番号でグループ化するのですか?国ごとにこの分野のスキームは大きく異なるため、そうではないと思います。
正規化?郵便番号は複数回使用される場合があり、通り名または町名に関連する場合があります。別のテーブル。
カナダの郵便番号は、文字と数字の形式で6文字のみです(LNL NLN)
英国は次の規格を公開しています: K Government Data Standards Catalogue
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
データベースに郵便番号を統合する場合は、ジオネームデータベースを使用するのが最適です。使用して理解するのは難しいですが、私たちのようなユーザーが自由に利用できる最大の地理データベースです。
他のすべてのそのようなデータベースは、多かれ少なかれ、同じデータと構造を持っています。データベースから余分な/冗長な情報を削除するだけです。低負荷のシステムで無料のサービスを使用するためにそれを行う場合、制限は魅力的であり、jsonとajaxを使用したより簡単なインターフェイスを提供します。制限を表示できます こちら
参考までに、郵便番号を保存するにはvarchar(20)で十分です。