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

时间:2012-11-20 11:37:42

标签: mysql appcelerator

我有多条巴士路线,其中的站点位于多条巴士路线上

布置表格的最佳方法是什么

目前我有表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& amp;对于每个不同的行,我需要显然为每个单个停靠点添加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

所以基本上我将如何建立查询,以便当我基于lat& amp;我回来的json可以用来构建例如tableview&显示6与2,12和4等,拆分配对,以便我可以在每个上做一个后续链接?

(我在appcelerator中这样做 - table1是iphone上的sqlite数据库,表2上的lat / lng查询是从php创建json数组的mysql数据库)

如果这有意义;)

1 个答案:

答案 0 :(得分:0)

除非你有非常做出不同的事情,否则rules of relational database规范化将定义如何构建数据库。

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

您当前的结构是错误的 - 如果bus_routes中的记录由line_no和direction唯一定义,那么为什么还有代理键呢?

  

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

你的SQL在哪里?

  

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

没有'表2'的'表1'有什么用?

相关问题