Есть набор параметров с разными типами данных. У каждого параметра есть имя, набор ещё каких-то свойств и само значение параметра. Эта значение параметра может быть разных типов в зависимости самого параметра.
Вопрос: Как организовать хранение значений этих параметров в одной таблице?
Варианты которые сразу пришли в голову:
Хранить значение параметра в типа varchar и сделать ещё один столбец с описанием типа. И в случае необходимости этого параметра в приложении конвертировать его в нужный тип. Таблица с параметрами выглядела бы примерно так:
id | name | value | value_type
Сделать кучу полей на каждый существующий тип параметра. То есть таблица с параметрами выглядела бы примерно так:
id | name | value_varchar | value_int | value_bit | и так далее
Какие best practice есть для решения задачи такого рода?
Уточнение задачи:
Разумеется это будет две таблицы. Одна таблица-справочник с идентификатором и именем параметра, а другая таблица-связь параметра с другой сущностью.
Параметров этих будет не много. Не много в рамках БД конечно. Не 2 миллиона.
Использоваться это будет следующим образом: Будет хранимка которая получает набор параметров по идентификатору той самой другой сущности. И в приложении мне нужно их распарсить в плане типа и использовать. Если это какой-то размер, то конвертируем в int или double и применять. Если это какое-то название, то конвертируем в string и используем, и так далее.
Принятое решение: Использовать тип данных sql_variant
Ответ
В MS SQL Server, начиная с версии 2008, есть такой тип данных, как sql_variant. Это именно то, что нужно вам в вашей задаче.
Комментариев нет:
Отправить комментарий