【发布时间】:2013-09-09 20:47:20
【问题描述】:
我们有多个类别层次结构,其中类别可以嵌套 N 级深度,并且我们的产品可以属于多个层次结构中的多个类别。我和我的同事在什么是最好的表结构上存在分歧。
他的结构是:
Nodes
---------------------------
NodeId (identity)
ParentNodeId (nullable)
ProductId (nullable)
Description (this is the category or product description)
我的结构是:
Categories
-----------------------------
CategoryId
ParentCategoryId (nullable)
Description
ProductCategories
-----------------
CategoryId
ProductId
两者都会假设也有一个产品表
Products
-------------------
ProductId
ProductDescription
UnitPrice
etc...
所以基本上,他通过在Nodes 表中添加另一条记录来跟踪每个类别中的产品,而我会在ProductCategories 表中创建一条新记录。他说他的方式对性能更好,这是微软推荐的方式。任何人都可以验证这一点吗?是否有任何性能或维护问题可以让我们选择其中一个?有数百个类别和数万种产品。
谢谢。
【问题讨论】:
-
您的设计清楚地建立了独立于产品的类别层次结构,然后将每个产品分配给所有适用的类别。性能问题通常应在出现时进行处理,或者,如果预测到瓶颈,则应通过对各种设计执行基准测试来处理。应避免过早的优化。
标签: sql sql-server recursion sql-server-2012 hierarchical-data