我想模拟一个新的数据库。其中一个要求是保留不同行的版本。这里的2个版本的同一对象的示例:使用SQL Server解决行版本化
ID | UID | Name | Date
--------------------------------------------------------------
1 | 734FD814-024D-4795-AFD0-34FECF89A13A | Alpha | 2013-02-08
2 | 734FD814-024D-4795-AFD0-34FECF89A13A | Bravo | 2013-02-09
为了与此表作为参考我需要指定一个主键的外键。这两个候选人是ID
和UID
,第一个是auto increment
号码,第二个是每个对象手动生成的唯一标识符。
限制:
当选择ID
作为主键:
- 在创建对象的新版本,旧版本的所有引用变得无效,必须更新
- 手动更新每个插页上的所有参考文献不是一个选项,很重
当选择UID
作为主键:
UID
不是唯一的,因此不能单独使用它,必须使用其他字段相关联,并且复杂的主键- 所有其他将被使用的字段内使用的可改变外键参考的刹车。
任何有关克服这些限制的最佳方法(尽可能最轻)的建议?
PS:我正在使用OrmLite对使用POCO对象的数据库建模。
保持多个版本的原因是什么?为了保持对特定版本的引用,或纯粹是为了追踪历史变化? – 2013-02-09 11:18:12
你必须保持在同一个表中的版本?或者可以将它存储在某种历史表中 – WKordos 2013-02-09 11:52:39