2

WebサイトまたはWebアプリケーションを開発しているときに、世界の国のリストが必要な場合のベストプラクティスは何でしょうか。SQLでCountriesテーブルを使用し、すべての値をXMLなどに保存する方がよいでしょうか。

たとえば、ユーザーごとに国を(SQLで)保存する必要があり、Webサイトの1つ(または複数)のドロップダウンで国のリストを使用する必要があるとします。

4

3 に答える 3

5

ユーザーごとに国を保存する場合 (おそらく、ユーザー テーブルに CountryId を保存するのが最適です)、国ごとに別のテーブルを用意しFOREIGN KEY、ユーザー テーブルから国テーブルへの参照を用意する必要があります。国名が変更されたときに、管理パネルを使用して国名を追加/変更することもできます。

しかし興味深いのは、ページが読み込まれるたびにデータベースにクエリを実行して、「ほぼ一定」の国名をすべて取得する必要があることです!!.

この状況の回避策は、最初にすべての国名を取得し、それに応じてキャッシュすることです。国コンボを 2 回目に入力するときは、キャッシュから国のリストを取得します。

  • キャッシュが空の場合、国テーブルからすべての国を取得してキャッシュします
  • キャッシュ アイテムが存在する場合は、キャッシュされた国を使用します (データベース クエリなし)。
  • 管理セクションから国名を変更すると、国のキャッシュも再生成されます

このアプローチは、ほぼ一定でめったに更新されない200 以上のレコードがページに読み込まれるたびにデータベースにクエリを実行するのが嫌いな場合に最適です。また、このアプローチにより、データベースのオーバーヘッドが削減されます。

于 2012-09-24T10:39:01.713 に答える
2

ユーザーがそのリストからのみ国を持つようにしたい場合、DBMSはユーザーからリストに外部キーを適用する必要があります。これは、リストがデータベーステーブルにある場合にのみ可能です。

また、必要に応じて、フィルタリングやデータベーステーブルとのJOININg1を簡単に行うことができます。

ちなみに、国は変わるので、このリストを完全に一定にすることはできません。これは、データベーステーブルに格納するための追加の引数です。


1たとえば、ユーザーテーブルに国コードのみが格納されている場合、完全な国名を取得するには、countriesテーブルと結合する必要があります。

于 2012-09-24T10:08:11.590 に答える
0

i think, there are many good ways to do this. To fit your requirements, you should describe what exactly you need (Translations?)

If you store your countries in a SQL Database, there is a ready-to-import solution on geonames.org, the dumps can be downloaded here: http://download.geonames.org/export/dump/

In my opinion it is a good starting point.

于 2012-09-24T07:53:27.130 に答える