Ich arbeite an einer Erweiterung eines Flex-Dashboards, mit der Benutzer Suchvorgänge speichern können. Ich benutze BlazeDS und Java/Spring/SpringJdbc auf der Serverseite.Speichern von Suchkriterien in einer Datenbank
Meine Frage lautet: Wie würden Sie eine Suche modellieren, die ein oder mehrere Kriterien hat, wie zum Beispiel:
- Wert Datum zwischen 2009-10-01 und 2009-10-31
- Währung = 'USD'
- Name der Bank beginnt mit 'First'
Mein erster Stich an dieser die Kriterien in 3 Typen einzuteilen:
- Numerische Kriterien
- Datum Kriterien
- String Kriterien
Jede der Kriterien Typen hat einen anderen Satz von Vergleichsoperatoren:
- Numerische Operatoren: =,>,> =, <, < =, <>
- Datum Operatoren: vor, nach, zwischen
- String-Operatoren: Beginnt mit, Endet mit, enthält
I-Codes haben jede dieser Betreiber zu identifizieren.
Mein Objektmodell ist eine such Schnittstelle und 3 Klassen, die sie implementieren: NumericCriteria, DateCriteria und StringCriteria
Alle diese Klassen zur gleichen Tabelle Karte mit den folgenden Spalten:
- 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
Ist gibt es einen saubereren Weg, dies zu tun? Ich bin nicht verrückt nach dem Datenmodell, aber ich kann keine Ressourcen zu diesem Thema finden ... Alle Kommentare werden geschätzt, egal wie grausam :)
Nun, das Hauptproblem beim Speichern von SQL in der db ist, dass das SQL dann so analysiert werden müsste, dass der Flex-Client es verwenden könnte, um die Kriterien erneut anzuzeigen, wenn der Benutzer eine gespeicherte Suche abgerufen hat. –