Datenmodell für Regeln + Bedingungen & Referenz auf andere Tabelle

Hallo,

ich habe mal eine Frage zur Erstellung von Regeln mit Bedingungen in einem Datenmodell.
Was ich habe ist:

Tabelle: Rule
- ID
- Name
- Description

Tabelle: RuleAction
- ID
- Operator (+, -, ....)
- FieldName (bspw. email)
- FieldDataType (String)
- FieldValue ([email protected])
- RuleFK

So funktioniert das für einzelne Felder, wie bspw. die Emailadresse wunderbar.
Mein Problem ist nun aber, wie speichere ich Referenzen auf andere Tabellen.

Bspw:
FieldName "CUSTOMER_FK" soll die ID = 1 sein
Wäre dann eben:
- Operator (=)
- FieldName (CUSTOMER_FK)
- FieldDataType (SINGLE_LIST)
- FieldValue (ID = 1)

Hat jemand eine Idee?
 
Naja, da sehe ich weniger Hindernisse.
Dann generiere ich mir eben ein SQL Statement auf Basis der RuleAction.
vllt sollte ich als Attribut in RuleAction noch gleich den Tabellennamen mitgeben.

Dann kann ich mir ja eben sowas basteln, wie:
Java:
public void generateSql(RuleAction ruleAction) {
"SELECT * FROM" + ruleAction.getTableName()....
"WHERE " + ruleAction.getFieldName()
}
Für die RuleCondition mache ich dann eben ein Mapping, was mir dann die SQL Syntax ausgibt.

Problem ist dann eben, wenn ich anstatt ein Feldname eine Referenz auf eine andere Tabelle speichern will.
Was ich machen könnte wäre, dass ich mir die den Tabellenname als String speichere und dann die ID des Objekts von der anderen Tabelle?

Wie kann ich dann aber eine Multiple List speichern? Also zB muss die Bedingung zutreffen für Kunde1, Kunde2, Kunde3.... (Ohne, dass ich 3 Regeln anlegen muss)
 
Naja, da sehe ich weniger Hindernisse.
Eine Regel wäre für mich etwas wie:
1. wenn Kunde 0815 seit mindestens 180 Tagen nichts mehr bestellt hat, dann schick ihm ein E-Mail.
oder
2. wenn eine E-Mail im Betreff XYZ enthält und sich im Posteingang befindet, dann verschiebe sie in den Folder ABC
o. ä.
Ich sehe hier nirgends ein DB-Feld oder eine Tabelle.
 
Wir sollten zwischen Bedingung und Aktion differenzieren:

Bedingung:
Kunde = Tabelle
0815 = Kundennummer (=DB Feld)
seit mind. 180 Tagen (Operator ist dann >)
180 = conditionValue
 
1. was soll diese Bedingung denn aussagen? Kunde 0815 seit mind. 180 Tagen.
2. wer sagt denn, dass der Kunde in einer Tabelle liegt?
 
nein, ich baue mir doch nur anhand dessen meine SQL Query...
Ob der Kunde in der DB ist, ist ja meine Prüfung...
 
nein, ich baue mir doch nur anhand dessen meine SQL Query...
Die Frage ist, woher Du weißt, dass "180" in dem Fall bedeutet: keine Bestellung seit mind. 180 Tagen?

Ob der Kunde in der DB ist, ist ja meine Prüfung...
Deine Prüfung ist, ob es einen Datensatz mit einer ID abc in einer Tabelle XYZ in einer DB existiert. Das ist eine mögliche Implementierung. Das Konzept sehe ich aber auf anderer Ebene.
 
Nochmal die Bitte, versuch doch deine Threads halbwegs in ein passendes Forum einzuordnen. Keines deiner Themen ist im Anfängerforum (Fragen ausschließlich zu Java-Grundlagen von Ein- und Umsteigern.) passend aufgehoben.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben