• ベストアンサー

フォルダ構造のような仕組みの作り方について

添付ファイルのようなフォルダ構成の追加・更新・並び替え・削除をデータベースで実現したいと思います。 そのため、データベースに下記の項目を格納すれば良いのではと思いました。 1. フォルダID 2. フォルダ名 3. 親フォルダID 4. 並び順 ただ上記では並び替えの際に、多くのレコードの更新が必要になりそうで、 考え方として間違っているのではないかと思いました。 そのため、添付ファイルのようなフォルダ構成をデータベースで実現する場合、 どのようにするのが良いかご教示いただければと思います。 以上、よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

経路列挙モデルというのを使うといいと思います。以下サイトで、SQL文でのtable 構築~新規登録、削除、更新方法も載っています。 「SQLで木と階層構造のデータを扱う(2)―― 経路列挙モデル」 http://www.geocities.jp/mickindex/database/db_tree_pe.html 「経路列挙モデル(準備編):MySQLで階層化データを使う」 http://www.makizou.com/archives/1662 サイトマップに応用した例 http://miztools.so.land.to/php5_list/map/

iroha_168
質問者

お礼

ご回答ありがとうございます。 ご教示いただいたリンク先を参考にさせていただきたいと思います。 このたびはどうもありがとうございました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • noyuo
  • ベストアンサー率39% (33/84)
回答No.1

通常の手法として、チェーン構造が良いのでは? 並び順の番号でなく、前のID、次のIDをぞれぞれ保持します。 フォルダ自体も、前のフォルダID、次のフォルダIDを保持し、 親のIDのみでなく、子供の先頭IDでも、上下関係を管理したほうがいいかなぁ? あとは、先頭場合の前のファイルIDの値、最終の場合の次のフォルダIDの値を予め決めておきます。(-1など) 挿入、削除はチェーンのつなぎ変えのみで行います。 フォルダ名にインデックスを設定すれば、検索も早くなると思います。 階層の番号などは持たせないほうがいいと思います。 まだ不足な点もあるかと思いますが一案として、ご参考になりましたでしょうか?

iroha_168
質問者

お礼

ご回答ありがとうございます。 自分の中でまだ消化できてない点はありますが、参考にさせていただきたいと思います。 このたびはどうもありがとうございました。

すると、全ての回答が全文表示されます。

関連するQ&A