1

郵便番号データを保持するデータベーステーブルを作成しようとしています(後でアプリケーションで参照されます)。

次のデータが含まれているhttp://www.populardata.com/zipcode_database.htmlから.csvファイルを取得しています。

  • ジップ
  • 緯度
  • 経度
  • zip_class

私がこれまでに試みたことは次のとおりです。

CREATE TABLE `finder_zip_codes` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `zip` mediumint(128) DEFAULT '0',
  `latitude` varchar(128) DEFAULT NULL,
  `longitude` varchar(128) DEFAULT NULL,
  `city` varchar(128) DEFAULT NULL,
  `state` varchar(128) DEFAULT NULL,
  `county` varchar(128) DEFAULT NULL,
  `zip_class` varchar(128) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

しかし、私はMySQLに慣れていないので、ベストプラクティスなどが私に忍び寄ってきました。たとえば、zipテーブルは郵便番号の先頭を削除しているようです。調べましZEROFILLたが、ここで必要なことはないと思います。基本的にzipはintフィールドとして使用したいのですが、内部のデータを自動修正(または切り捨て)しないようにします。

どんな助けでも大歓迎です-私はいくつかのドキュメントサイトを試してきました、そしてこれは私がこれまでに思いついたものです-それで追加のヒントは素晴らしいでしょう。ありがとう!

4

4 に答える 4

3

郵便番号は実際には整数ではないため、整数フィールドとして保存することはおそらく望ましくありません。1つのように見えますが、整数演算を実行することは意味がありません(たとえば、実行することはありません12034 + 32523-無意味です)。

これをchar(5)フィールドとして保存することをお勧めします。これは、実際には5文字の文字列であり、たまたま数字のみを含むように制限されているためです。

編集

Latitude実際にLongitude数値であるため、数値データ型(おそらく10進数またはdouble)として格納できます:)

于 2012-11-19T16:07:01.810 に答える
1

整数は、数値と同じ方法で格納されます。ほとんどの場合、これは「ストリッピング」ではありません。テーブルを調べるために使用しているインターフェイスは、先行ゼロを削除して、人間にわかりやすいものにしています。

同様に、画面またはレポートで作成する場合も、ゼロを埋める必要があります。

于 2012-11-19T16:09:26.423 に答える
0

郵便番号データを販売しているため、この質問をよく受けます。Microsoft製品はデフォルトで先行ゼロを取り除き、ニューイングランドのプエルトリコとニュージャージーの郵便番号の一部には1つ以上の先行ゼロがあります。私がSQLで見た最良の方法は、RIGHT(100000 + zip、5)を使用することです。

これは、メキシコの郵便番号および先行ゼロが必要な整数に対しても機能します。ゼロの数とコンマの後の整数式を変更するだけです。たとえば、先行ゼロを含めるために6桁のチェック番号フィールドが必要な場合は、次のようになります。RIGHT(1000000 + check_num、6)

于 2014-01-08T17:17:23.703 に答える
0

米国の郵便番号を制限しているようです。外国の郵便番号も検討することをお勧めします。その場合、国を含めるためにデータベーススキーマを再構築する必要があります。これには、テーブル間に外部キーが関連付けられた複数のテーブル(正規化)が必要になります。例:country_idとstate_id。

また、郵便番号の形式は国によって異なります。参照: http: //en.wikipedia.org/wiki/List_of_postal_codes

finder_zip_codesではなく、テーブル名にもっと意味のある名前を付けることをお勧めします。通常、テーブル名には複数形を使用しません(末尾の「s」を削除します)。また、テーブル名は名詞である必要があります。「finder」は動詞を意味します。より適切な名前はusa_zip_codeです。

また、主キーは多くの場合、テーブルの名前の後に「id」が続きます。例:usa_zip_code_id。このように、外部キーとして別のテーブルにusa_zip_code_idがある場合、それがどのテーブルを参照しているかがすぐにわかります。最後に、どの列をnullにしないか、一意にしないかを検討します。

于 2014-01-08T19:13:45.207 に答える