关于在分层对象模型中使用(或不使用)XML的建议

时间:2010-07-07 04:38:28

标签: c# xml sql-server-2008 hierarchy class-hierarchy

我正在开发一个自我引用为0/1的分层对象模型 - > *关系。没有parentID的对象是根元素。 parentID也是自联接的外键。根据我的理解,使用parentID作为外键只会指向可以找到子元素的列 - >这会强制迭代该列的整个数据集吗?这是一个应该形成聚集索引的场景吗? ....使用XML数据类型将所有childrenID存储在单个字段中然后为每个对象加载和引用该文档是否合适?看起来这样做至少可以让我简化我的对象持久层,并让我更好地控制记录事务。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

我强烈建议不要使用XML来存储子ID。它会引起无数令人头痛的问题,试图将其维持在路上,更不用说尝试在应用程序之外使用它了(例如,从报告解决方案或ETL)。

您是否研究过HIERARCHYID数据类型?它位于SQL 2008中,可能对您有用。我不知道各种编程语言/ ODBC / OLE DB对它有什么样的支持,但你可以将它转换为带有.ToString()的字符串,并且可以很容易地进行操作。然后它还允许您在T-SQL中使用HIERARCHYID的其他方法,如.GetAncestor()等。