Как лучше всего связать таблицу с базой данных

Я работал с базами данных и выключал их, но я впервые разрабатываю их с нуля. Извиняюсь, если где-то уже есть ответ, я не нашел ничего удовлетворительного.

Цель состоит в том, чтобы хранить данные проверки качества во время сборки продукта. На каждом модуле может выполняться различное количество тестов, поэтому у меня есть связанные таблицы «многие к одному» для тестов и сборок.

введите здесь описание изображения

Следующая таблица, которую нужно добавить, — это список номеров деталей в сборке (каждая единица состоит из нескольких сотен деталей). С физической и логической точки зрения имеет смысл связать их с таблицей Builds. Однако клиент заявил, что они должны быть связаны с тестами, потому что части иногда меняются местами между тестами, если обнаруживается ошибка.

Кажется огромной тратой места дублировать сотни частей каждый раз при повторном запуске теста, когда на самом деле изменяются только одна или две. Тем не менее, я не могу придумать лучшего способа. Любые идеи?

Заранее спасибо.


person Alecg_O    schedule 09.08.2016    source источник
comment
Я бы перевернул стрелку между сборками и тестами. Много тестов, одна сборка, если я правильно понял.   -  person Walter Mitty    schedule 09.08.2016
comment
@WalterMitty Возможно, вы правы, но не могли бы вы объяснить, почему?   -  person Alecg_O    schedule 11.08.2016
comment
Соглашение состоит в том, что наконечник стрелки идет на одном конце, а не на многих концах. Если вы используете ворсинки, соглашение состоит в том, что ворсинки идут на многих концах.   -  person Walter Mitty    schedule 11.08.2016


Ответы (1)


Похоже, вы тестируете саму сборку, а не отдельные ее части. Получается, что у сборки есть версии, каждая из которых отличается от предыдущей, потому что часть была изменена.

Это наводит меня на мысль, что вам нужна таблица build_version, относящаяся к набору частей и являющаяся предметом теста.

Если есть очень много частей, но только некоторые из них меняются между версиями, у вас может быть таблица build_version_part_changes, которая выражает связь между build_version и ее частями с точки зрения добавленных частей и удаленных частей.

Таким образом, в случае сбоя теста и изменения частей создается новая запись build_version с соответствующим набором изменений частей. Затем новая версия build_version подвергается еще одному тесту.

person David Aldridge    schedule 09.08.2016
comment
Спасибо за отличные предложения, Давид! Идея связать тесты с набором частей вместо объединения с именами частей напрямую показала наибольшее уменьшение размера, не знаю, почему я не мог до этого додуматься. Чтобы сократить еще больше, я изучаю модификацию концепции управления версиями, в которой набор частей и таблица build_version_part_changes связаны с моей текущей таблицей Builds. Любая конкретная версия может быть сгенерирована по мере необходимости путем просмотра изменений во время обработки. - person Alecg_O; 09.08.2016