我目前在设计数据库时遇到问题。我正在建造一个小型车共享平台,我很不确定如何存储“分享优惠”。
我让人们从 A 前往 D (通过 B , C )
A→B→C→D
我已经从 C 旅行到 D 。
我想过将第一次旅行分成子行程(A→B,B→C,C→D)。通过 B 上的“加入”,我可以找到来自 A → C 的关联。但是通过更多的中间步骤,这将变得非常缓慢(我假设),请记住,您不应该在一次驾驶中更换驾驶员/汽车。
我读了一些关于'嵌套集'的内容,以构建一棵树。但是我不确定这种方法是否适合我的问题,因为我没有root(我也不知道如何在sql中遍历那个树)。目前我不知道从哪里开始。如果您确认使用嵌套集,我将深入研究 但我感谢任何其他想法或建议
PS。这是我的第一篇文章,我希望我把一切都做对了:)
答案 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
);
这样,无论子条目如何,查询都将始终相同。