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 |

而不是为每个不同的行设置多个具有相同 lat & lng 的条目,我显然需要为每个包含对父母的引用和行号的单个站点有 2 个额外的列字段

在显示每条线的点的地图中,这不是问题,因为查询只是根据父 ID 提取停靠点,但是当我执行“最近”停靠点查询时,如果停靠点有超过 1 条路线,我会得到多个标记

所以例如在table2(在线mysql)中停止a,我需要

unique id | parent_id      | line_no    | lat    | lng

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

ETC

所以基本上我将如何构建查询,以便当我基于 lat & lng 查询时,我返回的 json 可用于构建例如 tableview & display 6 with 2, 12 with 4 etc, split the pairing so I can do a每个后续链接?

(我在 appcelerator 中执行此操作 - table1 是 iphone 上的 sqlite db,表 2 上的 lat/lng 查询位于 php 的 mysql 数据库上,该数据库创建了一个 json 数组)

如果这有任何意义;)

4

1 回答 1

0

除非您有充分理由做不同的事情,否则关系数据库规范化规则定义了如何构建数据库。

在您的情况下,您只需要第三个表来分解表 1(bus_routes)和表 2(bus_stops)之间的 n:m 关系,而不是 bus_stops 中针对 bus_stop 和 bus_route 的每个组合的多个记录。

而且您当前的结构是错误的-如果 bus_routes 中的一条记录由 line_no 和方向唯一定义,那么为什么您也有代理键?

但是当我做一个“最近的”停止查询时,如果一个站点有超过 1 条路线,我会得到多个标记

你的 SQL 在哪里?

table1 是 iphone 上的 sqlite 数据库,表 2 上的 lat/lng 查询在 mysql 数据库上

没有“表2”的“表1”有什么用?

于 2012-11-20T11:46:36.403 回答