我是 SQL 新手,正在学习邻接列表、嵌套集、闭包表,但据我了解,这些解决方案通常适用于非循环数据。
我知道这类问题可能更适合 Neo4j 等图形数据库引擎,我也在探索这一点。但是对于这个问题,我特别想知道我是否可以在SQLite中实现这个目标。
在提出可能的答案之前,请帮助我了解如何更好地定义或说明问题。一旦问题定义被提炼出来,然后给我指出正确的方向(技术、参考资料),让我试着弄清楚。
目标:
- 维护区域列表及其连接方式。
- 区域可以有不同的类型:国家、高速公路、州、城市、社区。
- 区域可以循环连接(无向)。
- 区域可以有多个出口。
- 维护区域内从一个出口到另一个出口的加权列表。
- 提取从一个区域到另一个区域的最佳路径(从这个社区到最近的高速公路)。
假设:
- 将使用 SQLite 3(最新版本)。
- 小型数据集(< 1,000 个区域和连接,< 5s 创建数据库)。
- 相对静态(< 5 次插入或更新/年)。
- 从头开始重新创建数据库可能比更新更简单?
- 高速公路是区域,而不是连接器。
- 街道是合乎逻辑的连接器,没有长度,没有重量。
区域和连接就像一个有许多房间的房子,有多个门。门连接房间。没有穿过门的横向重量。选择门的重量来自门之间的距离。走廊就像一扇延伸的门,所以它有重量,被认为是一个类型的房间。一个房间的面积可能很大,但如果只有两扇门彼此靠近,它的重量可能会很小。对我来说,重要的不是房间的大小,而是门之间的距离。
一如既往,感谢您抽出宝贵时间阅读并提出建设性意见。