我想创建一个数据库来存储航类路线以及每条路线的成本。到目前为止,这是我当前的设计
+---------+---------+------+
| 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条航空公司,并且每个机场都是相连的。那么也许它会存储数百万数据?并且查询会很重。
是否有其他设计来存储航类路线,这样我就不必存储数百万数据?
谢谢
最佳答案
您可以创建航线、航空公司表和连接表。最终第三个表将有很多记录,但 ids 应该表现更好。
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 |
+------------+----------+------+
关于mysql - 存储航线成本的DB设计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56136159/