См 'Почти Решила' нижеДополнительные базы данных Сущности (часть 2)
ПРИМЕЧАНИЕ: Это продолжение и упрощение Optional Database Entities.
Я разрабатываю новую лабораторную базу данных, которая тестирует широкий спектр тестов для самых разных типов образцов.
Основные Сущности:
Каждый должен иметь ровно один родителя (за исключением REQ
) и по меньшей мере, один ребенка (за исключением MEA
).
Request REQ - the form Sample SAM - the materials on the form to be tested Test TST - the procedures to be performed on the sample (Trial ** TRI - instance of duplicate methods for statistics) Measurement MEA - a single measured number ** A Trial is optional. (see below)
Дополнительные Пробные Объяснение
Многие тесты простая процедура с несколькими измерениями. Например, «Добавить 10 мл 15% KNO3 в образец, затем получить плотность и pH».
Однако некоторые тесты требуют, чтобы одна и та же процедура выполнялась на отдельных участках образца. В качестве примера рассмотрим баллистическое тестирование. Заявитель может запросить среднюю скорость и точность выхода для этих 20 пуль. sample
- это набор из 20 пуль. test
«собирает скорость и точность выхода». trials
- это 20 отдельных выстрелов. measurements
- скорость и точность выхода для каждого кадра (trial
).
ВОПРОС
Как я должен моделировать объекты Test
, Trial
и Measurement
, так как Trial
объект является необязательным?
Вариант 1: Используйте «пустую» пробную сущность в качестве заполнителя, если это необходимо.
Хорошо: родительский объект всегда одинаковый.
Плохо: Trial
записей существуют, даже если они не нужны.
Вариант 2: Ролл Trial
в Test
таблицу в качестве суб-теста. Тогда измерение всегда будет иметь test
в качестве родителя.
Хорошо: Один родителя типа для измерения (Test
)
Bad: Multiple родительского типа для Test
: Sample
или Test
Вариант 3: измерения еще имеет один из родителей, но родитель может быть либо test
или trial
.
Хорошо: Один родителя типа для Test
(и Event
при необходимости)
Bad: Multiple родительского типа для Measurement
: Test
или Trial
Вариант 4: Trial, как к югу от объекта.Measurement
потребовалось test_id
и дополнительно trial_num
. Испытание имеет PK (test_id
, trial_num
).
Хорошо: не существует нескольких родительских типов.
Плохо: Не уверен, что
Вариант X: Любой другой вариант уже не упоминается.
Почти Постановили: Сейчас я считаю Вариант 4 (Trial в качестве суб-организации) является лучшим. Ниже приводятся основные правила для варианта 4. - A measurement
всегда относится к test
. - A trial
существует только при необходимости. - Trial_num
устанавливается при наличии нескольких испытаний под множеством. - В противном случае trial_num
имеет значение null, указывающее, что trial
не требуется.
Simple ER Diagram
-----------------
REQ <- SAM <- TST <- MEA
^ |
| |
|-(TRI)<-|
Table Keys
----------
Table | PK | FK
------+-----------------+----------------
REQ | REQ_id |
SAM | SAM_id | REQ.PK
TST | TST_id | SAM.PK
(TRI | TST_id, TRI_num | TST.PK)
MEA | MEA_id | TST.PK, TRI.PK*
* TRI.PK is null if trial entity is not needed.
Просьба представить информацию о том, почему это хороший или плохой вариант.
Это упрощение? –
Не могли бы вы объяснить «Trial» немного больше? Как «пробная версия» отличается от «теста» с несколькими «измерениями»? –
Считаете ли вы использование нереляционной базы данных, например couchdb? – David