Я работаю над усовершенствованием панели инструментов Flex, которая позволит пользователям сохранять поисковые запросы. Я использую BlazeDS и Java/Spring/SpringJdbc на стороне сервера.Хранение критериев поиска в базе данных
Мой вопрос заключается в следующем: как бы вы модель поиска, которая имеет один или несколько критериев, таких как:
- валютирования между 2009-10-01 и 2009-10-31
- Валюта = «USD»
- Название банка начинается с «Первый»
Моя первая попытка в это разделить критерии на 3 типа:
- Числовые критерии
- критерии Дата
- критерии Струнные
Каждый из типов критериев имеет различный набор операторов сравнения:
- Числовые операторы: =,>,> =, <, < =, <>
- Операторы передачи данных: До, После, Между
- Строковые операторы: Начинается с, Заканчивается, содержит
У меня есть коды для идентификации каждого из этих операторов.
Моя объектная модель представляет собой интерфейс SearchCriteria и 3 классов, которые реализуют его: NumericCriteria, DateCriteria и StringCriteria
Все эти классы отображаются на одной и той же таблицы со следующими столбцами:
- SAVED_SEARCH_ID: id of the saved search
- SEQ_NUM: criteria order. We want to load the criteria in the same order each time
- CRITERIA_TYPE: Operator code. I can use this later to determine what kind of criteria this is.
- FIELD: currency, valueDate, bank, etc
- FIRST_VALUE_NUMERIC
- SECOND_VALUE_NUMERIC
- FIRST_VALUE_DATE
- SECOND_VALUE_DATE
- FIRST_VALUE_STRING
- SECOND_VALUE_STRING
ли там более чистый способ сделать это? Я не сумасшедший по поводу модели данных, но я не могу найти какие-либо ресурсы на эту тему ... Все комментарии оценены, как бы ни жестоко :)
Ну, основная проблема с хранением SQL в db заключается в том, что SQL затем должен анализироваться таким образом, чтобы клиент Flex мог использовать его для повторного отображения критериев, когда пользователь извлекал сохраненный поиск. –