バージョン管理されたデータの情報を簡単に比較するための優れたデータベース設計ソリューションを探しています。たとえば、以下のシナリオを確認してください (ただし、実際のシナリオをアプリケーションに配置することはできません。申し訳ありません)。
サンプルデータ:
Assembly
-----------
AssemblyId AssemblyId
--------------------------
1 Assembly1
2 Assembly2
BOM
--------------------------
BOMId AssemblyId VersionName ParentBOMId
-----------------------------------------------------
1 1 V001 NULL
2 1 V002 1
3 1 V003 2
4 1 V004 3
5 1 V005 2
[BOM レコードが変更されるたびに、以前のバージョン (ParentBOMID) のいずれかから継承されます - それがアセンブリの最初のバージョンである場合、ParentBOMID は Null です]
BOMDetail
-----------
ID BOMID PartName Qty
---------------------------------------------------
1 1 Part1 2
2 1 Part2 1
3 1 Part3 2
4 2 Part1 2
5 2 Part2 1
6 2 Part4 2 {Change in PartName here in V002 Base Version V001}
7 3 Part1 2
8 3 Part2 1
9 3 Part4 2
10 3 Part5 9 {Added this part into V003 Base Version V002}
11 4 Part1 2
12 4 Part2 1
13 4 Part4 2
14 4 Part6 9 {this part changed into V004 Base Version V003}
15 5 Part1 2
16 5 Part2 1
17 5 Part9 2 {Change in PartName here in V002 Base Version V002}
異なる BOM バージョンを相互に比較する必要があります。V001 と V002 または V004 と V003 を比較する必要がある場合は、ParentBOMId の関係が簡単に利用できるため、簡単に比較できます。しかし、V002 から作成された V005 の場合、そして誰かが V004 と V001 を比較したい場合、それは少し難しくなります。
PS パーツ名のみを比較する必要があるため、パーツのマスター テーブルを作成できません。
バージョン管理の頻度が非常に高く、親>>親>>親の関係が階層内で非常に深くなる可能性がある場合、誰でも別のデータベース設計または簡単な解決策を提案できますか?
たとえば、V001 と V002 の出力を比較しています。
V001 パート 1 2 V002 パート 1 2
V001 パート 2 1 V002 パート 2 1
V001 Part3 2 V002 NULL 0
V001 NULL 0 V002 Part4 2
上記のように、任意のバージョンを互いに比較して違いを見つけることができるはずです。