2

我正在研究一个数据模型,该模型具有一组共享一些常见字段(例如 Id、Name、Description)的类型。更具体地说:

Document 类有一个属性列表。这些属性在我们的域中,类型如 String、Integer、DateTime 和更“复杂”的类型,如 Address 和 String、Integer、Address 等列表。现在,在我的脑海中,我将对 Attribute 类进行建模,以便我有一个抽象基类 (AttributeBase),它包含公共属性(Id、Name、Description),然后在相应的子类中具有更具体的属性。例如 StringAttribute (Value)、IntegerAttribute(Value)、AddressAttribute(Street 等)、StringListAttribute、IntegerListAttribute、AddressListAttribute。我们谈论的是 15-20 个不同的子类。但是您将如何在数据库中对这些类进行建模?你会选择 TPH、TPT 还是 TPC?我已经阅读了有关选择 TPT 和 EF 4.1 并为 TPH 设置一个 massiv 表时的性能损失的信息' 即使性能更好,对我来说听起来也不错。我们正在讨论表中可能有 10000 - 1000000++ 行数据。

当涉及到这些场景时,您有任何第一手经验吗?我真的很想从你这里谈谈这个问题。

4

1 回答 1

5

从 DB 的角度来看,TPH 听起来并不好,但它实际上是许多使用此类元数据的产品使用的存储模型。示例是 SharePoint (2007),它在单个表中包含所有数据 - 它遵循更复杂的模型,但基础是相同的。我不喜欢 SharePoint 及其存储数据的方式,但通过思考这个问题,我没有找到更好的解决方案来为支持大量数据的通用解决方案建模。

TPT 和 TPC 在 DB 中看起来会更加规范化,但它们的使用会导致应用程序缓慢。此外,在大多数情况下,使用 和整数对表进行归一化是恕我直言,过度归一化IntAttributeIdNameDescriptionIdValue

顺便提一句。如果您正在对文档进行任何操作并且想要为文档分配属性,那么您绝对应该检查 Sharepoint,因为它允许开箱即用。

于 2011-10-12T10:28:42.690 回答