私はSQLを初めて使用し、隣接リスト、ネストされたセット、クロージャーテーブルについて学んでいますが、私が理解したことから、これらのソリューションは通常非循環データに適用されます。
この種の問題は、Neo4j などのグラフィカル データベース エンジンに適している可能性があることを認識しており、それについても調査しています。しかし、この質問については、SQLite でこの目標を達成できるかどうかを具体的に知りたいです。
これに対する可能な答えを出す前に、問題をよりよく定義または説明する方法を理解するのを手伝ってください. 問題の定義が洗練されたら、正しい方向性 (テクニック、参考資料) を教えてくれます。
目的:
- エリアのリストとそれらがどのように接続されているかを維持します。
- エリアには、国、高速道路、州、市、近隣など、さまざまなタイプがあります。
- 領域は、循環 (無向) で接続できます。
- エリアには複数の出口がある場合があります。
- エリア内で、ある出口から別の出口への加重リストを維持します。
- ある地域から別の地域への最適な経路を抽出します (この近隣から最も近い高速道路まで)。
仮定:
- SQLite 3 (最新バージョン) を使用します。
- 小さなデータ セット (< 1,000 エリアと接続、< 5 秒の DB 作成)。
- 比較的静的 (< 5 回の挿入または更新/年)。
- 更新するよりもデータベースを最初から再作成する方が簡単でしょうか?
- ハイウェイはエリアであり、コネクタではありません。
- 道路は、論理的なコネクタであり、長さも重さもありません。
エリアと接続は、複数のドアのある部屋がたくさんある家のようなものです。ドアは部屋を接続します。ドアを通過するトラバーサル ウェイトはありません。ドアを選択する際の重みは、ドア間の距離に由来します。廊下は引き戸のようなものなので重量があり、タイプの部屋とされています。部屋のサイズは大きいかもしれませんが、2 つのドアだけが近くにある場合、その重量は小さいかもしれません。私の目的で重要なのは部屋の大きさではなく、ドア間の距離です。
いつものように、お読みいただき、建設的なコメントをお寄せいただきありがとうございます。