Мой друг строит продукт для использования различными независимыми медицинскими подразделениями.
В базе данных хранится обширная коллекция измерений, выполненных в разное время, таких как температура, кровяное давление и т. Д. *
Предположим, что они хранятся в таблице с именем 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 не является проблемой.