概念:在mysql中在多个表中构造字段的最佳实践

概念:在mysql中在多个表中构造字段的最佳实践,mysql,appcelerator,Mysql,Appcelerator,我有许多公交线路,其中的站点位于多条公交线路上 摆桌子的最好方式是什么 目前我有表1(iphone上的sqlite db) 表2(在线mysql) 我不需要为每个不同的行设置多个具有相同lat&lng的条目,而是需要为每个单站设置两个额外的列字段,其中包含对父站的引用以及行号 在显示每条线路的点的地图中,这不是问题,因为查询只是基于父id提取站点,但当我执行“最近”站点查询时,如果站点有多条路线,我会得到多个标记 例如,在表2中的stop a(在线mysql)上,我需要 unique id |

我有许多公交线路,其中的站点位于多条公交线路上

摆桌子的最好方式是什么

目前我有表1(iphone上的sqlite db)

表2(在线mysql)

我不需要为每个不同的行设置多个具有相同lat&lng的条目,而是需要为每个单站设置两个额外的列字段,其中包含对父站的引用以及行号

在显示每条线路的点的地图中,这不是问题,因为查询只是基于父id提取站点,但当我执行“最近”站点查询时,如果站点有多条路线,我会得到多个标记

例如,在表2中的stop a(在线mysql)上,我需要

unique id | parent_id      | line_no    | lat    | lng

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

那么,基本上,我应该如何构建查询,以便在基于lat&lng进行查询时,我返回的json可以用于构建一个tableview&display 6 with 2,12 with 4等,拆分配对,以便我可以对每个配对进行后续链接

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

如果这有意义的话;)

除非您有很好的理由做一些不同的事情,否则规范化定义了如何构造数据库

在您的例子中,您只需要第三个表来分解表1(公交线路)和表2(公交车站)之间的n:m关系,而不是公交车站和公交路线的每个组合的公交车站中的多个记录

而且您当前的结构是错误的-如果公交线路中的a记录是由行号和方向唯一定义的,那么为什么您还有一个代理键

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

你的SQL在哪里

表1是iphone上的sqlite db,表2上的lat/lng查询位于mysql数据库上


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

表1是用于建立可用路线列表的表-还有另一个单独的sqlite表,其中包含每条路线的所有时间表信息(单独但仅供参考)唯一使用的时间表2是在构建地图点时-因为用户无论如何都必须在线,我使用在线mysql数据库查询“最近的”:$query=sprintf(“选择*,(6371*acos(弧度('%s'))*cos(弧度(lat))*cos(弧度(lng)-弧度('%s'))+sin(弧度('%s'))*sin(弧度(lat)))作为距离
行的距离,其中type='1'的距离<%s'按距离排序“$limit\u sql、mysql\u real\u escape\u string($center\u lat)、mysql\u real\u escape\u string($center\u lng)、mysql\u real\u escape\u string($center\u lat)、mysql\u real\u escape\u string($radius));
unique id | parent_id (= unique id from table1) | lat | lng | line_no |
unique id | parent_id      | line_no    | lat    | lng

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