我想创建一个数据库来存储飞行路线以及每条路线的成本。到目前为止,这是我目前的设计
+---------+---------+------+
| start | dest | cost |
+---------+---------+------+
| Chicago | NY | 250 |
| Denver | Chicago | 250 |
| Denver | NY | 400 |
| Denver | SF | 250 |
| SF | Chicago | 550 |
| SF | Denver | 300 |
| SF | NY | 700 |
+---------+---------+------+
使用此设计,获取成本价的查询将非常简单。例如:
select cost from routes where start = 'SF' and dest = 'NY';
但是我必须定义每个“目标”的每个“开始”来获取成本。 如果要存储1000个机场,那么1000个航空公司和每个机场都是相连的。那么也许它将存储成百万个数据?而且查询会很繁琐。
是否还有其他设计来存储飞行路线,所以我不必存储数百万个数据?
谢谢
答案 0 :(得分:0)
您可以制作路线,航空公司和联接表的表。最终,第3个表将有很多记录,但是id应该表现得更好。
Routes
+----+---------+---------+
| id | start | dest |
+----+---------+---------+
| 1 | Chicago | NY |
| 2 | Denver | Chicago |
| 3 | Denver | NY |
| 4 | Denver | SF |
+----+---------+---------+
Airlines
+----+-----------+
| id | name |
+----+-----------+
| 1 | American |
| 2 | Delta |
| 3 | Southwest |
| 4 | Denver |
+----+-----------+
AirlineRoutes
+------------+----------+------+
| airline_id | route_id | cost |
+------------+----------+------+
| 1 | 1 | 250 |
| 1 | 2 | 250 |
| 2 | 1 | 400 |
+------------+----------+------+
答案 1 :(得分:0)
“真的很简单”-哦?我看到三种从旧金山到纽约的方式:
另外,我看到一种进入循环的方法(SF-> Denver-> SF-> ...)。
我怀疑用于此目的的算法最好使用应用程序语言而非SQL来完成。
根据Google的资料,全球每天有102465趟航班。您的表可以在这么多行中正常工作。
但是,我将对机场(SFO,ORD等)和航空公司使用标准代码。然后,如果需要,可以使用另一个表查找全名。