1

因此,我正在重新设计一个小型数据库(可能还有一个更大的数据库),但想展示使用业务对象的修订/历史记录的价值。我正在将数据从 Access 切换到 MSSQL 2008。

我对在设计本身中使用什么版本的“修订历史”进行了很多内部辩论 - 并认为我已决定向所有表格添加一个“RevisionId”。

使用这种设计 - 向我们想要跟踪的所有表添加 RevisionId - 在两个表之间创建导航属性和关系的最佳方法是什么,例如

| Vendor | VendorContact |  

供应商可以有多个联系人。联系人本身将在修订中。它需要自定义扩展还是我想太多了?

提前致谢。

4

1 回答 1

1

因此,您的联系人表的键现在可能是(生成的唯一 ID + 修订 ID)。

供应商和联系人之间将存在仅使用唯一 ID 的 FK 关系。所以这将是一个 1:many 映射。

获取当前联系人的简单请求将变为vendor.Contacts.OrderByDescending(c => c.RevisionId).First(),或者您可以根据需要获取该联系人的整个修订历史记录。

或者您是否试图跟踪该联系人随时间的变化(即是 A 人而不是 B 人)?即关系本身是否需要有一个RevisionId?

或者您是否正在尝试跟踪对关系的修订和对它所指向的联系人的修订?

vendor.VendorContacts.OrderBy...().First().Contact.OrderBy...().First()

这可能会很快变得丑陋!

于 2010-05-01T06:14:29.793 回答