gpt4 book ai didi

sql-server-2008 - 使 HierarchyID 保持最新

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

我正在将旧的国家/地区/位置数据库结构重构为分层表。

我将使用新表的主键和一个自引用的 ParentID 列(在主键上)作为 hierarchyid 列的基础。

因此我的表看起来像:

PK 名称 ParentID HierarchyID

1 世界 NULL/

2 英国 1/1/

3 维冈 2/1/2

我的问题是:其他人实现了哪些方法来在创建记录或更改记录的父项时使 hierarchyid 列保持最新?

注意;我正在使用 LINQtoSQL(我正在使用一个计算的 hierarchyid.ToString() 列来公开代码中的沿袭,加上存储过程来为我提供 hierarchyid 查询的性能优势)。

对于插入/更新管理:

我考虑过为我的新表覆盖 LINQtoSQL 中的插入/更新过程。

我考虑过使用存储过程来管理更新/插入新记录。

我考虑过插入/更新之后的递归触发器来执行基于 ParentID 的更新。

不过,我还没有决定选择哪门类(class)!

有人使用过这些方法来管理 hierarchyids 吗?是否有我没有考虑过的更好的方法,或者我是否遗漏了一些非常明显的东西!!?

最佳答案

我最近做了一个类似的项目,我使用存储过程来处理 ID 管理。如果您正在执行一些简单的查询,LINQ 很酷,但它会在调试和维护数据模型时带来困难。

使用存储过程的好处在于,它从应用程序层抽象了 ID 管理,因此开发人员无需了解底层数据库模型。同样不好的一面是,它从应用层抽象了 id 管理,因此开发人员如果不前往数据库并查看存储过程就无法理解底层数据库模型。

使用数据库触发器可能是最好的解决方案,但我决定不采用它,因为它会增加另一个抽象级别。这是因为它通过留下另一个位置来寻找可能试图弄清楚它是如何工作的人,从而进一步混淆了真正的数据过程。

底线是,您应该以在您的系统(或至少您的项目)中保持一致的方式强制执行参照完整性。

关于sql-server-2008 - 使 HierarchyID 保持最新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8234967/

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