階層構造でDBMSの検索
-
10-10-2019 - |
質問
既存のRDBMSの上にオープンソースの階層データベースまたはエミュレーションはありますか?
階層データと階層データのクエリを実行できるDMB(または既存のRDBMSへのプラグイン)を検索しています(「選択レベル... connect ...」、「select parent ...」 )。 Oracleにはいくつかのサポートがあることは知っていますが、より複雑な解決策はありますか?
解決
これを行うための標準化されたプラグインはありません。私は複数回見ました。ただし、多くのオプションがあります。同じトピックに関する私の以前の質問をご覧ください。
リレーショナルデータベースに階層データを保存するためのオプションは何ですか?
要するに、IDとParentID(別名隣接リスト)を備えたテーブルを使用している場合、ほとんどのデータベースを持つ一般的なテーブル式(最も注目すべき例外の1つであることによるOracleの接続)を使用します。 otoは、具体化されたパスやネストされたセットのようなものがあなたの状況に適しているかもしれません - たとえば、隣接リストがあるためにこれが高価な操作である「系統」を簡単に見つける能力。
通常、階層データ(たとえばCMSなど)で広く動作する必要があるシステムで起こることは、これらのソリューションの複数を実装することです。仮定は読み取りです。
他のヒント
Nest Setモデルを試しましたか http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/
リレーショナルデータは、XMLのような本質的に階層構造が行うように、階層を直接サポートしていません。ネストされたセットなどのデータモデルや、階層をモデル化するためのストレートセルフ結合を使用する必要があります。
あなたが持っているシステムのタイプに応じて、 一般的なテーブル式 データで階層クエリを実行できます。 CTEは、2005年以降、SQL Serverバージョン、DB/2およびPostgreSQLの最近のバージョン、およびおそらく他のシステムでサポートされています。 CTEは接続よりも少し気が狂っていますが、かなりの種類のプラトルムで実行されます。