我目前正在重写一个应用程序,教师可以在线规划课程表。在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