gpt4 book ai didi

sql-server-2008 - 在 Sql Server 2008 中存储网站层次结构

转载 作者:行者123 更新时间:2023-12-04 07:20:04 25 4
gpt4 key购买 nike

我想将网站页面层次结构存储在表中。

我想要实现的是高效
1)通过路径解析(最后有效)项目(例如“/blogs/programming/tags/asp.net,sql-server”、“/blogs/programming/hello-world”)
2)获取面包屑的祖先元素
3) 编辑一个项目而不更新整个子树、大子树等。

由于第三点,我认为这张 table 可能像

ITEM
id type slug title parentId
1 area blogs Blogs
2 blog programming Programming blog 1
3 tagsearch tags 2
4 post hello-world Hello World! 2

我可以以某种方式使用 Sql Server 的 hierarchyid 类型(尤其是第 1 点,“/blogs/programming/tags”是最后一个有效项)?
树的深度通常在 3-4 左右。

实现这一切的最佳方式是什么?

最佳答案

您这样做的方式似乎很好,您可以利用 CTE 递归函数为您创建层次结构

就像是

DECLARE @ITEM  TABLE(
id INT,
type VARCHAR(20),
slug VARCHAR(50),
title VARCHAR(50),
parentId INT
)

INSERT INTO @ITEM SELECT 1,'area','blogs','Blogs', NULL
INSERT INTO @ITEM SELECT 2,'blog','programming','Programming blog',1
INSERT INTO @ITEM SELECT 3,'tagsearch','tags',',',2
INSERT INTO @ITEM SELECT 4,'post','hello-world','Hello World!',2

;WITH Items AS (
SELECT *,
CAST('/' + slug + '/' AS VARCHAR(50)) PathVal
FROM @ITEM
WHERE parentId IS NULL
UNION ALL
SELECT i.*,
CAST(Items.PathVal + i.slug + '/' AS VARCHAR(50))
FROM Items INNER JOIN
@ITEM i ON i.parentId = Items.ID
)

SELECT *
FROM Items

关于sql-server-2008 - 在 Sql Server 2008 中存储网站层次结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2566000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com