0

我想设计一个数据库来存储几辆公共汽车的位置(纬度和经度)(它将是一个跟踪应用程序)。因此,我将在每条总线上安装一个设备,每 10 秒将这个位置发送到服务器,并将其存储在数据库中。而且我还会有客户查找给定巴士的位置。

我考虑了 2 种可能的解决方案,一种是创建 2 个表,一个用于存储完整的报告以及下一列:公共汽车号、时间日期、纬度和经度。和第二个表一样,但只是为了存储最后一个位置,所以这个表的公共汽车条目会一直更新。在第一个中,我会有很多行,增长太快,这就是为什么我考虑创建第二个表来存储最后一个位置并提高客户端查询的性能。

我之所以不只保留第二张表(这对于客户端功能来说已经足够了),是因为我希望一个完整的报告能够拥有统计数据。

第二种解决方案是只创建一个包含所有报告的表,当客户想知道位置时,我会查找按该特定总线的时间日期排序的最后一个。但正如我之前所说,如果表增长太多,将来可能会花费太多时间。另一种可能性是每周清理数据库条目,例如,获取统计信息,将它们存储在一个表中并清理主表。

所以,此外,我还想知道该表中的主键应该是什么。我读过不建议使用 timedate 作为主键,因为有时如果时间差太小,它会将其视为相同的 timedate 而不会存储条目。但是因为我将每 10 秒报告一次,所以这应该不是问题。另一种选择是为每个报告添加一个 ID,但我认为这只是浪费空间。或者也许我可以在没有主键的情况下拥有它(我认为也不建议这样做......)。

对于第二个表,我将使用总线的行号作为主键,因为每条总线我只有一个条目(最后一个),所以不会有重复。

对这一切有什么帮助吗?正如你在这个领域看到的那样,我很新,我将非常感激。

所以总结一下,我的问题是:

  • 它会提高有 2 个表的性能还是只有 1 个就足够了?
  • 包含所有报告的表中的主键是什么?

感谢您的阅读和帮助:D

4

1 回答 1

1

只需使用两张表的方法即可。简单干净。

恕我直言,在大桌子上坚持使用简单的自动递增整数键。如果你不这样做,许多引擎都会为你创建一个(所以它不会通过不创建它来保存任何东西)

作为一个简单的数字,它也非常适合按日期排序结果(技术上是他们收到的订单,但通常应该是相同的)。将比日期排序执行得更好,并且不需要创建另一个索引。

(时间戳不好。因为虽然它通常对于一辆公共汽车应该是唯一的,但如果所有公共汽车碰巧在同一秒发送它们的更新()

于 2013-05-15T17:59:12.943 回答