我正在开发一个数据模型,它具有一组共享一些常见字段的类型,例如Id,Name,Description。更具体一点:
Document类有一个Attributes列表。这些属性在我们的域中,类型如String,Integer,DateTime和更多“复杂”类型,如地址和字符串,整数,地址等列表。现在,在我脑海中,我将模拟属性类,以便我有一个抽象基类(AttributeBase),包含公共属性(Id,Name,Description),然后在适当的子类中具有更具体的属性。例如。 StringAttribute(Value),IntegerAttribute(Value),AddressAttribute(Street等),StringListAttribute,IntegerListAttribute,AddressListAttribute。我们正在谈论15-20个不同的子类。但是,您如何在数据库中对这些类进行建模?你会选择TPH,TPT还是TPC?我已经阅读了选择TPT和EF 4.1时的性能损失,并且即使性能更好,TPH的一个质量表对我来说也不合适。我们在讨论表中可能有10000到1000000 ++行的数据。
在这些情况下,您有任何第一手经验吗?我真的很想在这里谈谈这个问题。
答案 0 :(得分:3)
TPT和TPC在数据库中看起来会更加规范化,但它们的使用会导致应用程序变慢。此外,将IntAttribute
标准化为Id
,Name
和Description
以及第二个表格Id
和整数Value
的标准化是大多数情况下标准化的恕我直言
顺便说一下。如果您正在对文档进行任何操作,并且您想要为文档指定属性,那么您一定要检查Sharepoint,因为它允许开箱即用。