簡體   English   中英

在數據庫中存儲目錄結構

[英]Storing a directory structure in database

在我的rails應用程序中,用戶可以擁有一個目錄結構,其中包含子文件夾中的文件夾和文件。 哪種是存儲此類數據的最佳方式?
此外,哪個數據庫提供了最佳方法?

您可以使用任何SQL數據庫將目錄樹存儲在單個表中,方法是使表自引用。 一個很好的例子是Windows Installer的Directory表 ,您將在其中看到如下結構:

  • Directory =主鍵id字段,通常是整數
  • Directory_Parent =“外鍵”id字段,指向同一表中另一個Directory的id
  • Value =包含目錄/文件夾名稱的字符串

然后,您的文件表將具有引用目錄ID的外鍵。 要查找完整路徑,必須在鏈中跟進並從末尾(右)構建路徑,將每個父目錄添加到前面(左側)。 例如,文件將使用Value'子文件夾'指向目錄ID“4”,然后您獲取父級的值'文件夾',然后再次顯示父級值,直到您到達根目錄,創建類似/root/folder/subfolder/filename的路徑/root/folder/subfolder/filename

如果您的數據庫支持遞歸查詢(Oracle的連接或標准的遞歸公用表表達式),那么自引用表就可以了(它很容易更新和查詢)。

如果您的DBMS不支持分層查詢,那么Eimantas建議使用預先排序的樹遍歷方案可能是最好的方法。

它是存儲在sql中的簡單樹。 檢查標准parent-child方案或實現預先排序的樹遍歷方案(左 - 右)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM