2011-04-10 13 views
0

私はこれらの一連の点をデータベースに格納する良い方法を見つけようとしています。ベストMySQLのデータ型

私は良いだろうと思ったカップルの方法は、最初のテキスト型であり、それがその後のWebアプリはポイントを引っ張るだろうデシベル

+----------------------------+ 
| x_points | 1:2:3:4:5... | 
| y_points | 1:2:3:4:5... | 
+----------------------------+ 

で次のようになりますので、ポイントをsperateする区切り文字を使用しますそれらをキャンバスにプロットします。

データベースのポイントにポイントを保存するには、より良い方法がありますか?

複雑な関数の場合、ポイントはグラフごとに1000ポイント、各ポイントの区切り文字になりますので、ボートには文字が読み込まれます。


コメントのために私はもっと詳しく説明しようとします。私は、ユーザーが入力する関数をプロットするためにキャンバスを使用しています。ユーザーはグラフを描くことができ、図面のラインデータも保存したいと思います。同様の方法で保存することができ、ポイントの計算は一度だけ行う必要があります。

サンプルseniroはy = x^2をプロットしてy切片を丸で囲むことができます。そのキャンバスにリンクすると、y切片とグラフのサークルを描き直します。もちろんこれは単純な例ですが、キャンバス上にポイントを保存する方法を理解することはできません。

これはもっと役立つと思っています。

+1

要件は何ですか、このデータをまったく照会しますか?ある種のベクトル形式をBLOB(バイナリ)またはテキスト(SVG)として保存することを検討しましたか? – Novikov

+0

もし私がおそらくちょうどPHP配列をシリアライズするのであれば、テキスト形式を使用する必要があるなら...フォーマットのために長くなるでしょうが、この方法ではあなたのデコード/エンコードのプロセスを間違ってしまうことを心配する必要はありません。後でフォーマットを切り替えるには、ポイントに追加情報を追加する必要があります – prodigitalson

答えて

5

これは1対多の関係と呼ばれます。あなたは一つの形と多くの実際の点を持っています。通常は、ポイントを別のテーブルに配置したいと思うでしょう。

+----------------------+  +-----------------+ 
|  Shape   |  | Point_Values | 
+----------------------+  +-----------------+ 
| shape_id (INT)  |  | shape_id (INT) | 
| shape_name (VARCHAR) |  | point_x (INT) | 
+----------------------+  | point_y (INT) | 
           +-----------------+ 

Shapeテーブルに新しい図形を挿入、新しい形を作るために。次に、Point_Valuesテーブルに1つ以上の値を作成します。あなたが戻って値を取得したいときは、このように、結合を使用します:

SELECT s.shape_name, v.point_x, v.point_y 
FROM Shape s 
JOIN Point_Values v ON s.shape_id = v.shape_id 
WHERE s.shape_id = 5 

これは非常に柔軟であるという利点があります。各図形は0以上の点を持つことができ、xとy点の数が等しくなければならないという暗黙の強制があります。

関連する問題