2014-10-28 2 views
0

Ситуация:дизайн базы данных, это отношения один к одному?

Наша лаборатория получает образцы из разных источников. После получения мы назначаем им номер идентификатора лаборатории, который является уникальным для каждого образца. Мы выполняем множество тестов по каждому образцу, давайте скажем, test1, test2, test3 .... и результаты этих тестов часто бывают нескольких значений.

Пока что я думаю:

Образцы Таблицы:

  • Лабид (PK)
  • SampleDescription
  • SourceId (FK)

Источники Таблица :

  • SourceId (PK-генерироваться автоматически)
  • Источник

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

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

Например, test1 таблица может быть, как это:

Тест1 Таблица:

  • Лабид (ПК)
  • Test1_data_1
  • Test1_data_2
  • ...... .

Аналогично, другие таблицы испытаний:

Test2 Таблица:

  • Лабид (ПК)
  • Test3_data_1
  • Test3_data_2
  • .......

Test3 Таблица:

  • Лабид (ПК)
  • Test1_data_1
  • Test1_data_2
  • .......

и так далее .. .

Моя дилемма (вещи Я неясно):

Это для меня ясно, что Lab ID может служить уникальный ключ (PK) для каждого из тестовых таблиц. Теперь, если я создаю отношения «один к одному» между таблицей Образцов и таблицей «Тесты», это требует, чтобы каждый LabID повторялся во всей таблице тестов (исправьте меня, если я ошибаюсь!). Однако образец не может подвергаться такому конкретному тесту.

Почему я думаю, что один-на-один не правильный выбор?

Если запись удалена из таблицы Test1, все же могут быть другие тесты и данные в другой таблице, поэтому удаление записи из таблицы образцов (что, я думаю, произойдет, если я пойду с отношением один к одному) не является правильным.

Мой вопрос:

Как я могу указать правильные отношения в подобной ситуации? Я совершенно новичок в дизайне базы данных, и мой опыт - это 3-х дневные случайные тит-биты чтения здесь и там.

+0

Являются ли ваши результаты тестов всегда одинаковыми для каждого теста? например test1 всегда имеет 3 значения - значение1, значение2, значение3 - test2 всегда имеет 2 значения - значение1, значение2 или test1 может иметь 2 значения для значений sample1 и 5 для образца2? – geoandri

+0

Нет, результаты различны для испытаний, проведенных на каждом образце. Представьте себе, как измерение углерода, водорода, азота для одного образца (таблица испытаний), цифры будут отличаться для другого образца, а также следует с другими тестами. –

+0

Да, это было ясно, я спрашивал, будет ли тест1, например, всегда иметь 3 параметра для измерения. – geoandri

ответ

1

Я бы создавать тесты и значения таблицы, как показано ниже

испытаний

  • Ид
  • имя_проверки
  • другие данные

значений

  • ID
  • Value_label (углерод, водород, азот)
  • другие данные

Кроме того, я бы создать измерения (или что вы хотите) таблица со столбцами

Измерения

  • ID
  • test_id (fk ссылается на таблицу тестов)
  • value_id ((fk ссылки id на таблицу значений))

Эта таблица представляет вашу структуру тестов.Например, если test1 имеет 3 параметра для измерения, в таблице будут присутствовать три соответствующие строки, по одному для каждого параметра.

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

Результаты

  • ID
  • sample_id (Fk ссылки Лабид на столе образцов)
  • measurement_id (ссылки FK ID на таблицу измерений)
  • значение (значение из)

Надеюсь, что это не слишком сложно

+0

Спасибо за ваш ответ! Это очищает многое. –

Смежные вопросы