ER : диаграмма отношений сущностей

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

Рабочий процесс моих приложений:

1.) Пользователь может создать объект «ReleaseVersion» и дать ему имя, например «MyApp_v7.5.0.132». 2.) Для этой ReleaseVersion он создаст шаблон с именем вроде «BookingTest», который состоит из множества объектов OrganisationUnit (иерархическая структура), где каждый OrganisationUnit может иметь множество объектов TemplateTeststep.

3.) Объект TemplateTeststep состоит из следующих полей:

 a) PreCondition
 b) Teststep
 c) ExpectedResult

4.) После того, как он создал объект «Шаблон», он создает объект «План тестирования» на основе ранее созданного шаблона. 5.) План тестирования ДОЛЖЕН отображать в пользовательском интерфейсе те же самые OrganisationUnits, но вместо объектов TempalteTeststep мне нужно отображать дополнительные поля, которые относятся ТОЛЬКО к названному плану тестирования:

 d) Error/Exception
 e) TestStatus

Таким образом, в Testplan есть TreeView OrganisationUnit и DataGrid с 5 полями a, b, c, d, e.

5.) Когда я нажимаю кнопку «Сохранить план тестирования», поля a, b, c обновляются полями, принадлежащими шаблону. Когда я нажимаю кнопку «Сохранить план тестирования», поля d и e обновляются полями, принадлежащими XXX.

Неизвестный компонент — XXX. Я уже думал о таблице под названием «TestplanTeststep» с двумя полями.

Но с какой другой таблицей это должно быть связано?

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

Пока это "описание" отношения сущностей:

1 ReleaseVersion имеет N Testplan (мне кажется, что это правильно, потому что Testplan действителен только для определенной ReleaseVersion)

В плане тестирования N используется блок M (здесь что-то не так)

У 1 модуля есть N TestplanTeststep (здесь что-то не так)

1 шаблон имеет N Testplan (мне кажется, что это правильно, потому что Testplan не может принадлежать другому шаблону, после его создания он не используется ни в каком другом контексте, а просто открывается)

1 шаблон имеет N единиц (мне кажется, что это правильно, потому что определенный UnitId не может использоваться в другом шаблоне, в нем нет необходимости, каждый шаблон имеет свое собственное дерево/данные OrganizationUnit)

У 1 модуля есть N TemplateTeststep (мне кажется, что это правильно, потому что эти 3 поля a, b, c принадлежат определенному UnitId, а в TreeView представлены только загруженные OrganisationUnits, связанные с шаблоном плана тестирования)

Заключительный вопрос:

Что нужно сделать в моих отношениях сущностей, чтобы все имело смысл?

Глупость заключается в разделении TemplateTeststep и TestplanTeststep, потому что на самом деле они могут быть ОДНИМ объектом или ОДНОЙ таблицей. Но тогда я бы сохранил много повторяющихся данных с полями a, b, c, которые одинаковы для каждого шаблона, а значит, и для каждого плана тестирования.


person Pascal    schedule 24.01.2012    source источник
comment
Вы можете получить лучшие ответы, если сможете немного больше разгадать это, чтобы помочь нам увидеть суть вопроса... Тем не менее, я пытался.   -  person grossvogel    schedule 25.01.2012
comment
Кроме того, как следует из вашего заголовка, может быть полезно дать ссылку на диаграмму.   -  person grossvogel    schedule 25.01.2012


Ответы (1)


Главный вопрос, который я здесь вижу, заключается в следующем: если в каждом шаблоне есть TemplateTeststeps, но каждый из них также может быть частью TestPlan, как мы можем отслеживать результаты? Похоже, вы рассматриваете возможность того, чтобы каждый TestPlan содержал копию этих TestSteps с дополнительными полями результатов, но это не выход.

Я бы справился с этим с помощью таблицы «многие ко многим» (внешние ключи для TestPlan и TemplateTeststep), которая также содержит эти дополнительные поля результатов (Error и TestStatus). Таким образом, вы не дублируете информацию о шаге тестирования (поля а-в), но получаете возможность поместить каждый из этих шагов во множество планов тестирования и записать их результаты.

person grossvogel    schedule 24.01.2012
comment
ты это так имеешь в виду? =› i42.tinypic.com/2f06tkk.png и первичный ключ таблицы результатов быть оба внешних ключа. - person Pascal; 25.01.2012
comment
@Паскаль: Да. Вот как обычно реализуется много-ко-многим, и в этом случае отношение также несет немного дополнительных данных. - person grossvogel; 25.01.2012
comment
на моем снимке экрана вы видите, что TestplanId (FK) имеет ДВА раза больше Id == 1 Я думаю, это невозможно, верно? - person Pascal; 26.01.2012
comment
@Pascal: если первичный ключ состоит из 2 столбцов, две записи могут иметь одинаковое значение в одном из этих столбцов, если они различаются в другом. - person grossvogel; 26.01.2012
comment
непосредственно применяя то, что вы сказали, к моему изображению, какой столбец должен иметь одинаковый Ids (FKs)? TestplanId или TemplateTeststep? - person Pascal; 26.01.2012
comment
Я снова нарисовал свой эээ: i40.tinypic.com/212d6jm.png, вы видите любой осложнения между отношениями сейчас? Я использовал только FKs and PKs в диаграмме. - person Pascal; 26.01.2012
comment
@Pascal: Насколько я понимаю вашу ситуацию, мне это кажется подходящим. Ваши результаты попадут в Testplan_TemplateTeststep, верно? - person grossvogel; 26.01.2012
comment
справа будут некоторые поля, такие как Error/Exception/UiStatus/TestStatus и т. д. - person Pascal; 26.01.2012