Мой друг строит продукт, который будет использоваться различными независимыми медицинскими подразделениями.
В базе данных хранится обширная коллекция измерений, выполненных в разное время, например, температура, кровяное давление и т.д.
Предположим, что они хранятся в таблице с именем exams
с столбцами temperature
, pressure
и т.д. (а также id
, patient_id
и timestamp
). Большинство измерений хранятся как поплавки, но некоторые из них относятся к другим типам (строки, целые числа...)
Хотя многие из этих измерений обрабатываются их продуктом, он должен позволять различным медицинским единицам регистрировать и обрабатывать другие пользовательские измерения. Очень элегантный пользовательский интерфейс позволяет администратору редактировать эти таможенные поля, указывать их имя, тип, возможный диапазон значений и т.д.
Он не уверен, как сохранить эти настраиваемые поля.
Он наклоняется к отдельной таблице (скажем, таблица custom_exam_data
с полями, такими как exam_id
, custom_field_id
, float_value
, string_value
,...)
Я беспокоюсь, что это сделает поиск более трудным для достижения и менее эффективным.
Я склоняюсь к изменению таблицы экзамена напрямую (избегая конфликтов с именами столбцов с помощью какой-либо схемы, такой как префикс всех настраиваемых полей с подчеркиванием или их имя custom_1,...)
Он боится динамически модифицировать базу данных и иметь разные схемы для каждой медицинской единицы.
Надеюсь, что некоторые люди, которые могут испытать больше опыта в этой проблеме,
Примечания:
-
он использует Ruby on Rails, но я думаю, что этот вопрос в значительной степени является агностиком рамки, за исключением того факта, что он ищет решения только в SQL-базах данных.
-
Я немного упростил проблему, так как пользовательские поля должны быть доступны для нескольких таблиц, но я считаю, что это действительно не влияет на направление.
-
(добавлено) Очень общий модуль отчетности должен будет искать, сортировать, генерировать статистику и т.д. этих данных, поэтому требуется, чтобы эти данные сохранялись в столбцах соответствующего типа
-
(добавлено) Входы пользователя будут отфильтрованы как для стандартных полей, так и для настраиваемых полей. Например, числа будут проверяться в пределах заданного диапазона (не может иметь температуру от -12 или +444) и т.д. Таким образом, преобразование в соответствующий тип SQL не является проблемой.