этот вопрос возник на основе ответов, которые я получил на вопрос
Странная проблема с функцией TO_NUMBER в Oracle
Поскольку все предполагали, что сохранение числовых значений в столбцах VARCHAR2 не является хорошей практикой (с чем я полностью согласен), меня интересует основной выбор дизайна, который сделала наша команда, и есть ли лучший способ проектирования.
Постановка задачи: у нас есть много таблиц, в которых мы хотим указать определенное количество пользовательских полей. Количество обязательных настраиваемых полей известно, но какой тип атрибута сопоставлен со столбцом, доступен пользователю
например. Я излагаю гипотетический сценарий ниже
Допустим, у вас есть ноутбук, в котором хранится 50 значений атрибутов для каждой записи ноутбука. Атрибуты каждого ноутбука создаются неким администратором, который создает ноутбук.
Пользователь создал продукт для ноутбука, скажем, lap1 с атрибутами String, String, numeric, numeric, String
Второй пользователь создал ноутбук lap2 с атрибутами String, numeric, String, String, numeric
В настоящее время данные в нашем дизайне сохраняются следующим образом
Laptop Table
Id Name field1 field2 field3 field4 field5
1 lap1 lappy lappy 12 13 lappy
2 lap2 lappy2 13 lappy2 lapp2 12
Этот пример моделирует наше требование и наш дизайн
Теперь, если кто-то просматривает записи для таблицы lap2 и выполняет сравнение с field2, нам нужно применить TO_NUMBER.
select * from laptop
where name='lap2'
and TO_NUMBER(field2) < 15
TO_NUMBER завершается ошибкой в некоторых случаях, когда план запроса решает сначала применить to_number вместо другого фильтра.
ВОПРОСЫ
Это действительный дизайн?
Каковы другие альтернативные способы решения этой проблемы?
Один из наших товарищей по команде предложил создавать таблицы на лету для таких случаев. Это хорошая идея?
Как популярные инструменты ORM предоставляют настраиваемые или гибкие поля для обработки?
Надеюсь, я смог разобраться в этом вопросе.
Извините за такой длинный текст ..
Это заставляет нас использовать TO_NUMBER, когда queryio