代码之家  ›  专栏  ›  技术社区  ›  Mike

如何使用嵌套集模型链接数据库中的web内容?

  •  1
  • Mike  · 技术社区  · 16 年前

    我的嵌套集合表如下所示。

     create table depts (
      id int identity(0, 1) primary key
      , lft int
      , rgt int
      , name nvarchar(60)
            , abbrv nvarchar(20)
     );
    

    测试部门。

    insert into depts (lft, rgt, name, abbrv) values (1, 14, 'root', 'r');
    insert into depts (lft, rgt, name, abbrv) values (2, 3, 'department 1', 'd1');
    insert into depts (lft, rgt, name, abbrv) values (4, 5, 'department 2', 'd2');
    insert into depts (lft, rgt, name, abbrv) values (6, 13, 'department 3', 'd3');
    insert into depts (lft, rgt, name, abbrv) values (7, 8, 'sub department 3.1', 'd3.1');
    insert into depts (lft, rgt, name, abbrv) values (9, 12, 'sub department 3.2', 'd3.2');
    insert into depts (lft, rgt, name, abbrv) values (10, 11, 'sub sub department 3.2.1', 'd3.2.1');
    

     create table content (
      id int identity(0, 1)
      , dept_id int
      , page_name nvarchar(60)
      , content ntext
     );
    

    测试内容。

    insert into content (dept_id, page_name, content) 
     values (3, 'index', '<h2>welcome to department 3!</h2>');
    insert into content (dept_id, page_name, content) 
     values (4, 'index', '<h2>welcome to department 3.1!</h2>');
    insert into content (dept_id, page_name, content) 
     values (6, 'index', '<h2>welcome to department 3.2.1!</h2>');
    insert into content (dept_id, page_name, content) 
     values (2, 'what-doing', '<h2>what is department 2 doing?/h2>');
    

    我正在尝试根据给定的url查询正确的页面内容(从content表)。我可以很容易地完成这个任务与根部门。然而,事实证明,查询具有多个深度的部门有点困难。例如:

    http://localhost/departments.asp?d3/ (Should return <h2>welcome to department 3!</h2>)
    http://localhost/departments.asp?d2/what-doing (Should return <h2>what is department 2 doing?</h2>)
    

    我不确定这是否可以在一个查询中创建,或者是否需要某种递归函数。另外,如果在last/之后没有任何内容,那么假设我们需要索引页。

    如何做到这一点?也欢迎提出意见和建议。

    非常感谢。

    1 回复  |  直到 16 年前
        1
  •  2
  •   Matthew Groves    16 年前

    我做了些什么 非常

    我相信我的方法的主要区别在于,我没有一个单独的带有嵌套集的表,我只是将content和lft/rgt放在一个表中。内容管理允许用户创建一个尽可能深入的内容层次结构,这样网站就可以变成这样:

    http://site/tier1-page
    http://site/tier1-page/tier2-pageA
    http://site/tier1-page/tier2-pageB
    http://site/tier1-page/tier2-pageB/tier3-pageI
    http://site/tier1-page/tier2-pageB/tier3-pageII
    

    ……等等。

    推荐文章