数据库架构问题

时间:2011-03-09 16:12:07

标签: sql join

我有一个理论数据库方案,可以存储类似于谷歌地图的信息。它为您提供了如何从一个地方到另一个地方的指示,但它不仅仅是驾驶,还告诉您如何通过一些运输方式(步行,自行车,汽车,公共汽车,火车,飞机,船等)到达那里。 )。

我在想这些中的每一个都有自己的表。

汽车: 制作,模型,年份,MPG,Drive_Train等。

平面: 制造,型号,Jet / Prop,最大速度,Max Eleveation,座椅数量,浴室数量等

船: 制作,模型,长度,宽度,小屋数量,最大深度,最大速度,有游泳池等。

等。等

然后,“运输”表:

Rider_ID,Trip_ID,Trans_ID,Trans_Type(Car,Boat,Plane等),To,From,Distance

旅行的每一段都是表格中的另一行。每次旅行都是一个独特的Rider_ID / Trip_ID对,旅行的每一段都将被分配不同的Trans_ID。这个设置有意义吗?

如果是这样,我将如何进行查询,向我显示有关所有行程的所有信息?是否存在某种条件连接机制?

2 个答案:

答案 0 :(得分:1)

我认为你是从错误的角度看待主题。如果您的申请是为了提供指导或计划从A点到B点的替代路线,您应该专注于它。没有人关心飞机的最大速度,更重要的是从A到B需要的时间。浴室的数量相同,你有没有跳过一架飞机,因为它只有5个浴室? :)更有甚者,你无法获得所有这些数据来填充你的数据库。

忘了提到这种应用程序必须基于高级图论alghoritms并且你不会得到所有路径在简单的sql查询中结合不同类型的传输,即使使用动态连接,无论你将如何存储你的数据。

答案 1 :(得分:0)

您可能正在寻找Union关键字。它将加入不同形状和大小的查询。

如果您将给定阶段的行程时间作为一列,则可以将其相加以产生总行程时间。

您可能需要查看Google Transit Trip Planner。可以找到北卡罗来纳州夏洛特的一个here。它们还具有Tripplanner链接,可让您最大限度地减少步行,公交车更换或运输时间。