Да, сорри. Вот как это выглядит (аттач).
Папка с голубыми значками - уникальные ключи (что под папкой)
Все что с 'FK' создано програмой, не правильно. Все что с _id это уникальные ключи которые передаются.
В таблицах basic находится сама инфа. Каждой комбинации присваивается свой ID, комбинация повторяется в таблице только 1 раз (уникальная).
ID из basic идет в sample. Там они пишется порядок в котором они идут относительно другим в этот раз. Сюда идет произвольное количесов basic. Комбиниция всех значений тоже уникальная.
В hash идет хэш (мд5) всех значений из sample. md5(sample_1.sample_2... sample_n). Им присваивается индекс hash_id. Сюда прога добавила кучу других индексов, но тут должно их быть только 2 (hash_id и хэш всех значений sample). Комбинация этих 2х уникальная.
В navtable идет hash_id и подобные. Комбинация как вы уже догадались должна получиться уникальная
Как происходит запись:
записать в basic (да и везде) INSERT... ON DUPLICATE KEY UPDATE. Получить последний вставленный id. При этом используется id уже существующейкомбинации если она существует.
каждое значение basic_1, basic_2 получают свой порядковый номер в sample. Опять же если такое уже есть то берется только id. Так как комбинаций несколько то берется их хэш.
Этот хэш является sample_hash в таблице hash. Тут он получает hash_id и еще несколько вещей (не рисовал). Используется существующий ид если есть. Можно так же писать сам хэш сразу в navtable.
Hash_id идет в navtable, где получает дату, линк наружу и еще парочку подобных ключей.
Все что с _id = primary key not null auto_increasement.
Таким образом если внутрь идет уже существующая комбинация несколько раз то наружу для всех них будет только один линк.
Если внутрь идет та же что-то из уже существующего (допустим просто в другом порядке) то создается только новая navtable и hash (таблица, да и то не всегда).
Будет такое работать? ))