我目前正在重寫一個應用程序,教師可以在線規劃課程表。在PHP中使用最佳表示方式/深度樹(MySQL/XML /?)
該應用程序指導教師通過爲學生創建工作單元的過程。該工具目前在三種狀態下使用,但我們計劃獲得比這更大的作用。
該應用程序的主要抽獎卡之一是,所有的學生成果都預先加載到系統中。這允許教師搜索或瀏覽並選擇在每個工作單元中將滿足哪些結果。
當我最初設計系統時,我做了一個假設,即所有學生的成果都遵循相似的層次結構。也就是說,有命名嵌套容器,然後是結果。
我輸入的最初結果集是三層。因此我的數據庫具有以下結構:
=========================
表以粗體
H1
ID,名稱
H2
號,parent___id(h1_id),名稱
H3
ID,parent___id(h2_id),名稱
結果
ID,parent___id(h3_id),名稱
=========================
其他比明顯無法添加n /層次的層次結構還要難以在不遞歸查詢數據庫的情況下顯示所有標準的列表。
一旦學生的成績(和他們的父類別)被添加,他們沒有什麼理由以任何方式進行修改。主要的要求是它們很容易和有效的閱讀。
到目前爲止,來自不同學校/州/國家的所有學生成績都大致遵循了我的假設。這可能並非總是如此。
當然,所有現有數據都必須從當前數據庫傳輸。
鑑於以上所述,我存儲所有不同套學生成果的最佳方式是什麼?下面列出了我的一些想法。
繼續使用數據庫中的4個表,選擇或者使用recusion或地段時加入
使用嵌套組
XML(可能是全球性的XML文件的所有不同套或每個XML文件)
請參閱我的答案http://stackoverflow.com/questions/192220/what-is-the-most-efficientelegant-way-to-parse-a-flat-table-into-a-tree#192462 – 2008-12-04 07:53:18