2011-02-11 67 views
0

我有什么似乎可能是一个简单的问题,但可能比预期更困难。假设我试图追踪用户和企业的经纬度。现在,我有一个名为locTable的表,它包含3列:索引,纬度,经度。数据库中的共享表或多个数据?以数据库方式存储真实世界的位置

存储用户和企业信息的表包含locTable的FK。这使我可以使用一张表来存储位置数据,但是我注意到对这些数据进行查询可能很困难。

现在,我可以在用户和企业的每个表中存储纬度和经度信息,但是如果我需要对数据进行更改,则需要更新查询以及两个(或更多)不同的表。

你会怎么建议?共享表格或单独存储信息?

回答

0

首先,确定lat/long是否是“查找”表。我不会认为Lat/Long是查询。这意味着你不会存储每个可能的经纬度组合的详尽列表。它们通常被指定为小数点后4位。理论上可以有无限的经纬度组合,如果你有无限的尺度。

我不认为它在两个表中都存储lat/long的重复。想想生日。为了避免BirthDate重复,您可以在过去的300年中每天都有一个“BirthDates”表格。这将避免生日重复人员,狗和公司。但这不是“查找”意义上的重复。

我不是说在自己的表中存储纬度/长度是错误的。我只是建议在两个表中都可以不考虑重复来存储Lat/Long。

+0

是的。我也忘记了城市也有位置。多个地点,如果这是有道理的(城市有不同的邮编,根据邮编)。我只是想知道,在现实中,这些疑问究竟有多噩梦。例如,试图找出用户和企业之间的距离,如果两者的位置在同一个表中 – 2011-02-11 03:58:06

0

位置是否改变?如果是这样,请反转外键。位置表具有用户和企业表的外键。将日期列添加到位置表,并且您还可以通过添加新位置来随时追踪它们。

在您的模型中,您可能必须更新两个表以更新位置。切换外键时,您只需在位置更改时将新行添加到位置表中。

+0

理论上,这两个位置都可以改变是。 – 2011-02-11 03:55:51