Я использую SQLite3 (и python, но это не важно для вопроса, я не думаю), чтобы построить базу данных деталей в иерархической сборке с несколькими уровнями вложенности, где каждая деталь в сборке может иметь нескольковарианты.База данных может содержать записи из нескольких сборок, которые могут иметь различное количество элементов-элементов.У меня есть таблица с записью для каждой уникальной детали, в которой есть столбец для идентификатора детали, столбец для идентификатора сборки и столбец для идентификатора родительской детали в иерархии сборки (если есть).Кроме того, у меня есть вторая таблица, в которой перечислены уникальные варианты для всех деталей со столбцами для свойств детали и столбец для идентификационного номера детали сборки, для которой запись представляет собой вариант.
Мне бы хотелосьчтобы можно было составить список всех возможных уникальных вариантов сборки .Можно ли сделать это как представление в базе данных SQLite, и если да, то как бы я структурировал этот запрос?Или есть способ, которым я могу по-разному структурировать свою базу данных, чтобы упростить эту задачу?
РЕДАКТИРОВАТЬ:
Пример структуры:
Table: "PARTS"
PART_ID PART_NAME PARENT ASSEMBLY
1 'Foo' NULL 1
2 'Bar' 1 1
3 'Thing' 1 1
4 'Doodad' 1 1
5 'Bauble' 3 1
6 'Oof' NULL 2
7 'Rab' 6 2
8 'Trinket' 6 2
Table: "VARIATIONS"
VAR_ID PART_ID PROPERTY_1 PROPERTY_2 PROPERTY_3
1 1 3.14159 0.63 0
2 1 3.24359 0.68 1
3 1 3 0.5 0.9999999
4 2 0.1 0.1 0.1
5 3 0.11 0.01 0.0005
6 3 0.11 0.01 0.0006
7 4 0.05 0.05 0.05
8 5 0.001 0.08 0.001
9 5 0.001 0.085 0.0011
10 6 5.5 1.0 3.2
11 7 1.1 0.99 1.2
12 8 0.05 0.05 0.05
Я хотел бы перечислить всевозможные комбинации вариантов деталей в сборке, которые выглядели бы так для деталей в сборке 1 из таблицы выше.Ниже приведены столбцы VAR_ID из таблицы VARIATIONS для соответствующих номеров деталей.
ROWNUM PART1_VAR PART2_VAR PART3_VAR PART4_VAR PART5_VAR
1 1 4 5 7 8
2 2 4 5 7 8
3 3 4 5 7 8
4 1 4 6 7 8
5 2 4 6 7 8
6 3 4 6 7 8
7 1 4 5 7 9
8 2 4 5 7 9
9 3 4 5 7 9
10 1 4 6 7 9
11 2 4 6 7 9
12 3 4 6 7 9