0

私のアプリケーションはある種の「仮想フォルダー」を使用しているため、ツリー構造をデータベースに保存する必要があります。データを保持するテーブルは非常に単純で、3 つの列があります。

  • id_folder (整数、主キー)
  • id_parent (整数、id_folder を参照)
  • フォルダー名 (文字列)

私の質問は次のとおりです。ルートを実装する最良の方法はどれですか?

  1. id_parent を null 可能にします。ルートは id_parent=null のフォルダーになります。または
  2. フォルダーをそれ自体の親にする (つまり、id_folder=id_parent)。

ありがとうございました。

4

2 に答える 2

0

追加の要件があるかどうかによって異なります。論理的に理にかなっている NULL が好きですが、他の要件では別のものが必要になる場合があります。

于 2010-08-10T18:01:48.560 に答える
0

私はオプション1を主張します。

オプション 2 を選択すると、サブフォルダーを表示するためのロジックで、id_folder と id_parent が一致しないことを確認するための複雑なチェックが必要になります。

オプション1:

SELECT * --don't kill me for using *, it's just for an example
FROM Folders
WHERE id_parent = @folderId

オプション 2:

SELECT * --don't kill me for using *, it's just for an example
FROM Folders
WHERE id_parent = @folderId AND id_parent <> id_folder
于 2010-08-10T18:02:05.307 に答える