Я создаю новую лабораторную базу данных. Я хочу хранить необработанные результаты для всех тестов вместе. Однако результаты могут быть либо единичным измерением, либо необработанным сигналом. (репост см. нижний колонтитул)
Какой случай ниже идеален (и почему)? ... или предоставьте свой идеальный вариант.
TEST
test_id*
(other TEST fields)
ВАРИАНТ 1: Отдельные отдельные значения и результаты осциллограммы
TEST (1 -- many) MEASUREMENT
( \-- many) RAW_HEADER 1 -- many RAW_POINT
MEASUREMENT RAW_HEADER
measurement_id* raw_header_id*
test_id (FK) test_id (FK)
rec_time as DATE start_time as DATE
measurement sample_rate
RAW_POINT
raw_header_id* (FK)
point_index*
raw_measurement
ВАРИАНТ 2: Перекрывать общие поля из опции 1
TEST (1 -- many) MEASUREMENT (1 -- many) RECORDING_POINT
То же, что и OPTION 1
, за исключением:
MEASUREMENT
: measurement
для сигналов - sample_rate
RAW_POINT
: raw_header* (FK)
изменено на measurement_id* (FK)
RAW_HEADER
: не требуется
ОПЦИЯ 3: Кодировать сигналы в BLOB
ТЕСТ (1 - много) ИЗМЕРЕНИЕ
MEASUREMENT
measurement_id*
test_id (FK)
rec_time as DATE
measurement
signal as BLOB
Для одного значения measurement
- это измерение, а signal
- NULL
Для сигналов measurement
- это sample_rate, а signal
хранит кодированные точки данных
.
ВАРИАНТ 4: Перекрывать общие поля, но использовать BLOBS
TEST (1 -- many) MEASUREMENT (1 -- many) RAW_DATA
MEASUREMENT
measurement_id*
test_id (FK)
rec_time as DATE
measurement
RAW_DATA
measurement_id* (FK)
raw_data as BLOB
Для одного значения measurement
- это измерение
Для сигналов measurement
это sample_rate
Легенда:
__*_
Поля, отмеченные звездочкой,
полный первичный ключ.
(FK)
Поля, за которыми следует (FK)
, указывают, что поле имеет ограничение внешнего ключа.
____
Все поля имеют тип NUMBER
, если не указано иное.
Другая информация:
Необработанные данные формы волны будут использоваться несколькими способами:
- построено (выглядит ли сюжет правильно)
- отфильтрованный / сглаженный (для лучшей презентации)
- получить значения (время при максимуме, минимальное значение, время падения и т. д.)
Кроме того, данные будут получены одновременно по нескольким каналам. Было бы полезно узнать, каково значение канала 2, когда канал 1 впервые достигает 500 (некоторой единицы).
Форма сигнала обычно имеет от 4000 до 25 000 точек данных.
Другие мысли / вопросы:
Можно ли вернуть часть BLOB? Другими словами, можно ли извлечь 4 байта, начиная с байта 4000?
Может ли BLOB-объект иметь упакованный тип Oracle, чтобы значения могли быть прочитаны самим Oracle (т. Е. Для получения max, min и т. Д.)
ПРИМЕЧАНИЕ: Это репост Общее хранилище сбора данных Oracle с улучшенными параметрами.