所以我正在重新设计一个小型数据库(可能是一个更大的数据库),但希望显示使用业务对象的修订/历史记录的价值。我正在将数据从Access切换到MSSQL 2008.
我正在就设计本身使用的“修订历史”版本进行大量内部辩论 - 并且我认为我决定在所有表格中添加“RevisionId”。
使用此设计 - 将RevisionId添加到我们想要跟踪的所有表中 - 在两个表之间创建导航属性和关系的最佳方法是什么
| Vendor | VendorContact |
供应商可以拥有多个联系人。联系人本身将进行修订。它需要自定义扩展还是我在想这个?
提前致谢。
答案 0 :(得分:1)
因此,大概是您的Contact表的密钥现在是(生成的唯一ID +修订ID)。
只有使用唯一ID,供应商和联系人之间才会有FK关系。所以它将是1:多的映射。
获取当前联系人的简单请求将变为vendor.Contacts.OrderByDescending(c => c.RevisionId).First()
,或者您可以根据需要获取该联系人的整个修订历史记录。
或者您是否正在尝试跟踪该联系人随时间的变化情况(即是A人而不是B人)?即关系本身是否需要有一个RevisionId?
或者您是否正在尝试跟踪关系的修订和对其指向的联系的修订?
vendor.VendorContacts.OrderBy...().First().Contact.OrderBy...().First()
这可能会很快变得难看!