私は2つのテーブルを持っていますCHECKLIST_INSTANCE
:CHECKLIST_CLASS
にCHECKLIST_INSTANCE
外部キーを保存して、CHECKLIST_CLASS_ID
そのインスタンスが使用しているチェックリストを把握できるようにします。
CHECKLIST_CLASS
CHECKLIST_CLASS_ID
REVISION
NAME
CHECKLIST_CLASS のデータ例は次のとおりです。
1, A, ABC Checklist
2, A, XYZ Checklist
3, A, QWE Checklist
4, B, ABC Checklist
今問題になっているのは改訂です。チェックリストを改訂するとき、私の現在の戦略は、それに新しい代理主キーを与え、Rev を変更することです (checklist のようにABC Checklist
)
CHECKLIST_CLASS_ID
この戦略では、 1 と 4 が関連 しているという関連性が失われているように感じます。
コンビネーション PK を使用するように設計を変更する場合CHECKLIST_CLASS
1, A, ABC Checklist
2, A, XYZ Checklist
3, A, QWE Checklist
1, B, ABC Checklist
次に、CHECKLIST_INSTANCE テーブルを変更して CHECKLIST_CLASS_REV を外部キーとして含める必要があり、すべてのクエリも変更する必要があります。
もう 1 つのオプションは、列を に追加することCHECKLIST_CLASS
です。それぞれ PREVIOUS_REV_ID または NEXT_REV_ID のいずれか
using a PREVIOUS_REV_ID field
1, A, ABC Checklist, null
2, A, XYZ Checklist, null
3, A, QWE Checklist, null
4, B, ABC Checklist, 1
.
using a NEXT_REV_ID field
1, A, ABC Checklist, 4
2, A, XYZ Checklist, null
3, A, QWE Checklist, null
4, B, ABC Checklist, null
CHECKLIST_INSTANCE
最後の 2 つの方法では、テーブルやクエリを変更する必要はありません。最高のデザインについて何か考えはありますか?または、調査する必要がある別のアプローチがありますか?
== 編集 明確にするために、私は CHECKLIST_CLASS テーブルの編集の監査証跡を探していません。