0

我的应用程序使用某种“虚拟文件夹”,因此我需要将树结构存储在数据库中。保存数据的表非常简单,它有 3 列:

  • id_folder (int, 主键)
  • id_parent (int, 引用 id_folder)
  • 文件夹名称(字符串)

我的问题是:这是实现根的最佳方法?

  1. 使 id_parent 可以为空;根将是 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 回答