Мой друг строит продукт, который будет использоваться различными независимыми медицинскими подразделениями.Каков предпочтительный способ хранения пользовательских полей в базе данных SQL?
В базе данных хранится обширная коллекция измерений в разное время, как температура, кровяное давление, и т.д. ...
Допустим, они проводятся в таблице под названием 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 не является проблемой.
Спасибо за указание на этот термин (внутриплатформенный эффект). Это ново для меня, но я чувствую, что здесь очень хорошо. –