2011-01-14 18 views
3

私の最初の英語はごめんなさい... データベースにポリラインをたくさん保存しなければなりません。 私はテーブル呼び出し「ポイント」を作成し、各ポリラインからすべてのポイントを保存することがありました。 私に起こったもう一つの事は、ポリラインをシリアル化して(各ポリラインを1行に格納)、ポリライン(Googleマップ)をデータベースに保存するにはどうすればよいでしょうか?

どのオプションが良いと思いますか?

あなたはこれらの点を介してクエリを実行する場合を除き、非常に個別に各ポイントを格納するテーブルを作成おかげ

+1

mysqlには空間的な拡張がありますhttp://dev.mysql.com/doc/refman/5.0/en/spatial-extensions.htmlこれはデータのクエリ方法に応じて一見価値があります – goat

答えて

0

は、やり過ぎや過度の正規化のように聞こえます。

私は単純に文字列にシリアル化し、テキストフィールドに格納します。

+1

ポイントに対するクエリかなり一般的な使用例です。 – ceejayoz

3

MySQLと結婚していない場合、PostgreSQLにはクエリを含む地理的データをネイティブに処理するPostGIS extensionがあります。

もしあなたがMySQLで設定されていれば、私はそれをポイントとして扱うので、個々のポイントに対して照会することができます。シリアライゼーションはラインをフェッチするのに少し効率的かもしれませんが、それはクエリを失います。

0

いずれかまたはポイントテーブルを使用してデザインを正規化するか、すべてのポイントをポリラインテーブルの1つのフィールドに配置することができます。

最初の方が拡張性が高く、DBモデルの方がデータをより密接にモデル化しています。 2番目の方法は、DBの読み込み/書き込み回数を減らすことができ、高速化が可能ですが、コード内でポイントを解析する必要があり、特定のポイントを検索することが難しくなります。

アプリケーションによって異なります。 :)

+0

または特定のポイント* O(n * m)を検索するのが非常に遅いですか? (1行中の平均個数*行数) – sova

0

セットをポリライン/ポリゴンにマッピングする別の関係を持つポイントテーブルを作成することは悪いことではありません。私はこのアプローチでいくつかの1-off GISスキーマを書いています。はい、いくつかのDBは空間的な拡張機能を持っていますが、単純に単一点を調整したり、スケールしたりすることができない他の多くの作業を行うこともできます。& c。

正規化のポイントがありますが、それを利用しています。

関連する問題