Get property field von Name

beta20

Top Contributor
Hallo zusammen,

ich habe zwei Tabellen:
a) Tabelle1: hier steht in einem String der Name des Felds von Tabelle2
ID, NameDatabaseField

b) Tabelle2: Hier sind die Felder tatsächlich physikalisch angelegt
ID, eine Vielzahl von Felder (databaseField001, databaseField002, databaseField003....)

Was ich nun brauche, ich möchte mir von Tabelle1 das Feld "NameDatabaseField" holen und dann das entsprechende Feld von Tabelle2 holen:

Also sowas ähnlich wie hier:
Code:
    public Object test(Table1 table1, Table2 table2){
       
        // Von Tabelle2 das entsprechende Feld von table1.getDatabaseFieldname() bekommen
       
        return // Feld von Table2, das gefunden wurde;
    }

Dort wo der Kommentar steht, komme ich nicht weiter. Wie kann ich das machen?

Danke für jede Hilfe
 
Bist Du sicher, dass Deine Datenbankstruktur richtig überdacht ist? Für mich hört sich das eher so an als solltest Du da nochmal neu machen.
 
Wenn du andere Vorschläge hast, gerne.

Ich möchte ein dynamisches Formular haben:
Tabelle1 ist mein Mapping quasi, also welche Felder soll es geben, welcher Datentyp, wie soll das Feld heißen...
Tabelle2 ist dann der Output, also wenn das Formular ausgefüllt wird, das in die Felder eingetragen wurde....

"Vorname" mapped auf string_field001
"Startdatum" mapped auf date_field001
usw.

Ich habe in Tabelle2 als einige Platzhalter - Felder.
Ob diese genutzt werden oder nicht, kommt auf den Anwendungsfall drauf an.....

Wobei je länger ich drüber nachdenke, wäre dies eventuell auch möglich:
Eine dritte Tabelle erstellen:
Table2 1....n Table3

Table3 (hier werden die Ergebnisse dann gespeichert)
ID Result Table2_FK
= hätte dann aber den Nachteil, dass ich unter Umständen pro ausgefülltes Formular hier über 100 neue Einträge (Columns) generiere bzw. speichere... Wenn ich pro Tag 100 Formulare ausfülle, sind das pro Tag 10.000 neue DB-Einträge.....

Als DB nutze ich MYSQL...
 
Wie sollte denn deine erste Lösung aussehen? Wolltest du in Tabelle2 einfach mal 500 Spalten erstellen und dann die maximale Anzahl der auszuwählenden Formularfelder auf 500 begrenzen oder wie?

Normal ist es doch ganz einfach:

Formular Tabelle:

id INT PRIMARY KEY, AUTOINCREMENT
name VARCHAR[]

Felder-Tabelle

formular_id INT
Feldname VARCHAR[]
feldvalue VARCHAR[]

MEhr brauchst Du doch nicht.
 
Meine erste Idee war, dass ich in die Tabelle (in welcher der Output gespeichert wird) z.B. 500 Felder habe, die dann je nachdem gefüllt werden oder nicht.

Die Frage ist wie gesagt, wenn ich nun eine weitere Tabelle mit dem Output habe (je Feld), dann habe ich bei 100 ausgefüllten Formularen mit 100 Feldern alleine 10.000 neue DB-Einträge. Im Gegensatz zu Ansatz1, habe ich nur 100 DB-Einträge....
Was ist performanter?
 
Das hat nichts mit Performance zu tun da du ja immer nur die 100 Datensätze aus der Tabelle 2 liest die zu dem entsprechenden Formular gehören. Wenn Du einen Index auf die formular id in tabelle 2 setzt kann die Tabelle auch ein paar Millionen Datensätze haben und Du list die 100 innerhalt von ein paar millisekunden aus.
 
Wie willst du das in deinem Fall lösen?

In einem Formular hast du ja auch nur Strings.

Ich würde nur ein Datum im SQL DATETIME Format speichern. Also YYYY-MM-DD HH:II:SS

Alles andere kann man mit einem Varchar abbilden. Alternativ kannst du natürlich auch für jeden Datentyp eine Tabelle anlegen. Ob das aber irgendwelche Vorteil bringt glaube ich nicht.
 

Neue Themen


Zurück
Oben