3

ユーザーがサインアップできるPHPとMySQLを使用してWebサイトを開発しています。サインアップ フォームでは、国、州、都市を入力する必要があります。データベースに保存するのが良いかどうか知りたいです。Facebook や Google などにはオートコンプリート フォームがあり、これらの入力タグが国、州、さらには都市を提案するので、私は混乱しています。

4

6 に答える 6

3

country_id、 、 のように、state_id3つすべてを個別に保存しないでくださいcity_id。これは冗長な情報だからです。都市は暗黙のうちに州に属し、国に属します。それらを個別の値として保存することで情報を取得することはなく、データを台無しにするリスクを導入するだけです (日本、ワシントン、ベルリンをセットとして保存できるため、これは無効で一貫性のない情報です)。

データベースに階層ツリーを作成する必要があります。都市には親州があり、親国があります。次に、ユーザーに都市を尋ねるだけでよく、他のすべての情報は暗黙的です。そのデータをどこから取得するかは別のトピックです。たとえば、Google の API を試すことができます。

于 2011-07-07T04:46:24.783 に答える
2

問題は、それを世界中のすべての人のために機能させたいのか、それとも米国の住所だけのために機能させたいのか、また、どのような目的で情報を収集しようとしているのかということです.

あなたのサイトが e コマースで、配送先住所を収集したい場合は、入力の妥当性を十分に確認する必要があります。そうしないと、UPS は商品を顧客に配送しません。

一方、人がどこにいるかをかなり正確に把握したいが、住所の品質は必須ではない場合は、PlaceFinder などの無料の Web サービスを使用してください。

http://developer.yahoo.com/geo/

ユーザーが住所を都市/州/国に分割せずに入力するだけで、結果の場所 ID (woeid) をデータベースに保存できるようにする必要があります。

于 2011-07-07T04:44:01.073 に答える
1

また、同じ名前で別の国にある都市があることも考慮してください。リガはラトビアの首都で、リガはアメリカのミシガン州にあります。

于 2011-10-24T08:04:46.210 に答える
1

一般に、国のリストは読み取り専用にすることをお勧めします。これにより、ユーザーは選択のみが可能になり、追加はできなくなります。次に、州と引用の場合、それらのリストが事前にロードされていますが、ユーザーがリストを追加できるようにします。(このリストは、yahoo のような任意のインターネット データベースまたはサービスから事前に読み込むことができます)。

すべての場合において、提案は彼らにとって(使いやすさのため)、あなたにとって(データの重複を減らすため)非常に良いプラスです。

お役に立てれば。乾杯

于 2011-07-07T04:43:44.243 に答える
0
CREATE TABLE `pl_countries` (
  `countryID` int(4) NOT NULL auto_increment,
  `iso` char(2) NOT NULL,
  `name` varchar(80) NOT NULL,
  `printable_name` varchar(80) NOT NULL,
  `iso3` char(3) default NULL,
  `numcode` smallint(6) default NULL,
  `top_flag` tinyint(1) NOT NULL,
  `status` tinyint(1) NOT NULL,
  PRIMARY KEY  (`countryID`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

CREATE TABLE `cities` (
  `city_id` bigint(20) NOT NULL auto_increment,
  `countryID` bigint(20) NOT NULL,
  `city` varchar(30) NOT NULL default '',
  `top_city` tinyint(1) NOT NULL,
  PRIMARY KEY  (`city_id`),
  KEY `country_id` (`country_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

上記の構造を都市から国へのマッピングに使用します。上位の都市や国をマークすることもできます。

于 2011-07-20T17:39:35.510 に答える
0

これは、ビジネスの要件によって異なります。地域化されたサービス (ユーザーの地理的地域に基づいたログを持つ) を提供したい場合は、もちろん、DB に地域を保持する必要があります。

一方、地域を保持するように DB を設計し (1 対 n の関係にある少なくとも 3 つのテーブル、または親子関係にある 1 つのテーブル)、その DB に有効なデータを入力する必要があります。 /世界中の州や都市?

于 2011-07-07T04:43:06.957 に答える