新しいデータベースをモデル化しようとしています。要件の 1 つは、異なる行のバージョンを保持することです。同じオブジェクトの 2 つのバージョンのサンプルを次に示します。
ID | UID | Name | Date
--------------------------------------------------------------
1 | 734FD814-024D-4795-AFD0-34FECF89A13A | Alpha | 2013-02-08
2 | 734FD814-024D-4795-AFD0-34FECF89A13A | Bravo | 2013-02-09
このテーブルを参照として外部キーを作成するには、主キーを指定する必要があります。2 つの候補はID
、UID
1 つ目はauto increment
数値、2 つ目はオブジェクトごとに手動で生成された一意の識別子です。
制限:
ID
主キーとして選択する場合:
- オブジェクトの新しいバージョンが作成されると、古いバージョンへのすべての参照が無効になり、更新する必要があります
- 各挿入のすべての参照を手動で更新することはオプションではなく、非常に重い
UID
主キーとして選択する場合:
UID
は一意ではないため、単独では使用できません。他のフィールドに関連付けて、複雑な主キー内で使用する必要があります- 使用される他のすべてのフィールドが変更される可能性があり、外部キー参照にブレーキがかかる可能性があります。
これらの制限を克服するための最良のアプローチ (可能な限り軽量) について何か提案はありますか?
PS : OrmLite を使用して、POCO オブジェクトを使用してデータベースをモデル化しています。