Я возьму второй удар, основываясь на отзывах из моего первого поста. Главное, что нужно понять, это то, что дизайн и архитектура могут быть очень итеративными, и я сомневаюсь, что вы получите идеальную модель без большого количества возвратно-поступательных действий - что-то, что не очень хорошо работает при переполнении стека. Скорее всего, вы возьмете опубликованные идеи (у APC есть некоторые хорошие), поделитесь ими с людьми, с которыми вы работаете, и придумаете что-нибудь, что сработает.
В наши дни при разработке баз данных я стараюсь создать полностью нормализованную модель. Как только вы это получите, если это не кажется разумным или практичным, вы можете денормализовать для эффективности, целесообразности или чего-то еще - но главное, чтобы вы денормализовали после , вы нашли идеальную модель. Если вы остановите нормализацию до того, как вы полностью нормализуетесь, вы не денормализуетесь, вы просто получили небрежную модель.
Вот сущности, которые я вижу на сегодняшний день:
То, что вы назвали тестом верхнего уровня, для ясности здесь я собираюсь назвать Экзамен . Вы определяете экзамен и все его содержимое (ниже), и люди обращаются в вашу лабораторию для проведения этих экзаменов по своим проблемам.
Для любого данного экзамена, выполняемого для клиента, вы запускаете кучу Тестов . Любой данный тест может использоваться (требуется?) Любым количеством экзаменов.
Зачастую вы получаете набор тестов, которые проводятся вместе для более чем одного экзамена. Если есть свойства, применимые к конкретному набору тестов, вы можете определить каждый набор как свой собственный объект. Назовите эти TestGroups . Однако, если они используются только для того, чтобы связать определенный набор тестов с одним или несколькими экзаменами, вы можете не получить какой-либо конкретной выгоды от определения их как их собственной сущности. (Это ваши подтесты.)
Итак, экзамен «имеет» или «содержит» один или несколько тестов. Кроме того, экзамены связаны с одной или несколькими группами TestGroup. Тем не менее, попытка связать экзамен с нулевым или большим количеством TestGroups и нулевым или большим количеством отдельных тестов приведет к получению слишком сложной модели (не говоря уже о физической реализации), и я бы очень хотел этого избежать. Возможно, TestGroup может содержать один тест, поэтому экзамены только ссылаются на TestGroups? Возможно, экзамен может быть связан только с одной группой TestGroup - в этом случае это будет таблица «многие ко многим», относящаяся к экзаменам с тестами. Это зависит от дальнейшего обсуждения требований с экспертами в данной области.
Итак, у вас есть экзамены - определения экзаменов, действительно - так или иначе связанные с несколькими тестами. Далее у вас есть «платный экземпляр» экзамена (приходит клиент X и платит вам за проверку его виджетов). Назовите это CustomerExam ; он содержит всю контактную информацию и информацию для выставления счетов, определяет экзамен, который необходимо выполнить, и, таким образом, относится к тестам, которые должны быть выполнены для клиента. (Возможно, там тоже есть клиентская сущность ...?)
Испытания выполняются для тестов, которые являются частью CustomerExam. Они не связаны с экзаменом или тестом, они являются примером проведения испытания. (Кажется безопасным предположить, что «значение / определение» Испытания будет фактически частью теста - например, если Тест = Точность оружия, то работа, требуемая Испытанием для этого Теста = 50 раз огнестрельного оружия и измерения). Так как Испытания проводятся для Тестов данного CustomerExam. Они выполняются один раз или несколько раз? (Является ли пробная стрельба из пистолета 50 раз, или каждый выстрел засчитывается как пробный? Что делать, если они делают два выстрела по 50 выстрелов?) Как бы то ни было, атрибуты события испытания сохраняются здесь - когда это произошло, кто это сделал это, специальные примечания / обстоятельства, что угодно.
Меры производятся (или для?) Испытаний. Значение / определение каждой меры фактически является частью определения испытания (которое является частью определения теста); событие испытания дает конкретные значения для определенных / ожидаемых мер. Предполагается, что пробная версия сгенерирует ноль (?) Или более показателей, поэтому показатели являются их собственной сущностью.
Оглядываясь назад, кажется, что существует некая неявная двойная структура: набор таблиц для определения доступных экзаменов, тестов, испытаний и мер (что можно проверить, как это можно проверить, что мы будем измерять ) и сопутствующий набор таблиц для отслеживания конкретных экземпляров каждого (кто хотел, кто выполнял работу, когда они это делали, каковы были результаты)
Я должен быть слишком взволнован этой проблемой. Ключевым моментом здесь является то, что, как и на всех сеансах проектирования, при изложении идей и задании вопросов, они генерировали ваши собственные идеи, вопросы или ответы?