mysql - 存储航线成本的DB设计

标签 mysql database-design

我想创建一个数据库来存储航类路线以及每条路线的成本。到目前为止,这是我当前的设计

+---------+---------+------+
| 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/

相关文章:

mysql - 加入两个表并保留不同的值

database - 对于可以由两个不同资源拥有并因此需要两个不同外键的数据库表,哪一个是好的设计?

php - 如何为访问数据库的应用程序分段数据库(也称为多个用户问题的单个数据库)?

mysql - 评论系统数据库

php - 来自用户帐户数据库的自动电子邮件

mysql:解决隐式事务提交?

php - 如何在 header 函数中添加变量?

sql - 数据库设计用户表拆分或单一

mysql - 在mysql中存储一组数字

php - 从文本文件php mysql将数据插入多行