0

バス停が複数のバス路線にある多数のバス路線があります

テーブルをレイアウトする最良の方法は何ですか

現時点では、テーブル1(iPhoneのsqlite db)があります

unique id | line_no | direction | etc

表 2 (オンライン mysql)

unique id | parent_id (= unique id from table1) | lat | lng | line_no |

異なる行ごとに同じ緯度と経度を持つ複数のエントリを持つ代わりに、親への参照と行番号を含む単一の停留所ごとに2つの追加の列フィールドが明らかに必要です

各行のポイントを示すマップでは、クエリは親 ID に基づいてストップをプルするだけなので問題ではありませんが、ストップに複数のルートがある場合に「最も近い」ストップクエリを実行すると、複数のマーカーが表示されます

たとえば、table2 (オンライン mysql) で a を停止する場合、必要になります

unique id | parent_id      | line_no    | lat    | lng

1         | 6, 12, 16, 19, | 2, 4, 7,10 | 55.111 | 12.444

基本的に、緯度と経度に基づいてクエリを実行すると、返されたjsonを使用してテーブルビューを作成し、6を2、12を4などで表示し、ペアリングを分割して、それぞれの後続のリンク?

(私は appcelerator でこれを行っています - table1 は iphone の sqlite db です。テーブル 2 の lat/lng クエリは、json 配列を作成する php の mysql データベースにあります)

これが意味を成すなら;)

4

1 に答える 1

0

別のことを行う非常に正当な理由がない限り、リレーショナル データベースの正規化のルールによって、データベースの構造が定義されます。

あなたの場合、bus_stop と bus_route の組み合わせごとに bus_stops の複数のレコードではなく、テーブル 1 (bus_routes) とテーブル 2 (bus_stops) の間の n:m 関係を分解するために 3 つ目のテーブルが必要です。

そして、あなたの現在の構造は間違っています - bus_routes の aa レコードが line_no と方向によって一意に定義されている場合、なぜ代理キーもあるのですか?

しかし、ストップに複数のルートがある場合に「最寄りの」ストップクエリを実行すると、複数のマーカーが表示されます

SQL はどこにありますか?

table1 は iphone の sqlite データベースで、テーブル 2 の lat/lng クエリは mysql データベースにあります

「表 2」のない「表 1」は何に使用されますか?

于 2012-11-20T11:46:36.403 に答える