データベースを使って多階層のディレクトリ構造を実現するには?ということを現在考えています。簡単に考えると、親ディレクトリIDを保持するようにして、自己のテーブルと1:nの関係を持てるようにする…。
| ID | 親ディレクトリID |
|---|---|
| 1 | 0 |
| ID | 親ディレクトリID |
|---|---|
| 2 | 1 |
| ID | 親ディレクトリID |
|---|---|
| 3 | 1 |
| ID | 親ディレクトリID |
|---|---|
| 4 | 2 |
とすれば、
- 1
- 2
- 4
- 3
- 2
というディレクトリ構造になる。
でも、こうするとディレクトリをたどるときにはどうすればいいでしょう?SELECT文で親ディレクトリIDを元に、ディレクトリをたどっていくしかないような気がしますが…。そうすると、たとえば1/2/4というパスからID4のテーブルを得るときには、最低で2回のSQL文を発行する必要があるのかな…と*1。
やっぱりデータベースを使ってのデータ管理には限界があるのかな…。
*1:ここでは主キーをパス名としているのでディレクトリを辿らなくてもいいですが