旅行者的数据库设计

时间:2011-03-24 00:19:19

标签: mysql sql

我目前在设计数据库时遇到问题。我正在建造一个小型车共享平台,我很不确定如何存储“分享优惠”。

我让人们从 A 前往 D (通过 B C ) A→B→C→D
我已经从 C 旅行到 D

我想过将第一次旅行分成子行程(A→B,B→C,C→D)。通过 B 上的“加入”,我可以找到来自 A C 的关联。但是通过更多的中间步骤,这将变得非常缓慢(我假设),请记住,您不应该在一次驾驶中更换驾驶员/汽车。

我读了一些关于'嵌套集'的内容,以构建一棵树。但是我不确定这种方法是否适合我的问题,因为我没有root(我也不知道如何在sql中遍历那个树)。目前我不知道从哪里开始。如果您确认使用嵌套集,我将深入研究 但我感谢任何其他想法或建议

PS。这是我的第一篇文章,我希望我把一切都做对了:)

1 个答案:

答案 0 :(得分:2)

旅行期间每站一排怎么样,包括停车的订单号?像这样:

trip | stop | place
-----+------+------
   1 |    1 |    A
   1 |    2 |    B
   1 |    3 |    C
   1 |    4 |    D

通过这种方式,您可以轻松找到例如从A到C:

SELECT t.trip
FROM trips t
JOIN trips s ON (
    t.trip = s.trip AND
    t.place = "A" AND
    s.place = "C" AND
    t.stop < s.stop
);

这样,无论子条目如何,查询都将始终相同。