2009-07-22 14 views
0

Für GUIs, die viele Datenbankfelder anzeigen, ist es wünschenswert, ein Feld zu haben: label map, so dass die GUI-Etiketten nicht fest codiert sind, sondern dynamisch gesetzt werden. Zum BeispielWie ordnen Sie GUI-Beschriftungen Datenbankfeldern zu?

  • Höhe: "Höhe (cm)"
  • Alter: "Alter in Jahren"
  • bloodAlcPct: "Blutalkohol%"
  • monthsIncarcerated: "Monate im Gefängnis"

Wo speichern Sie diese Zeichenfolgen und wie werden sie den Datenbankfeldern zugeordnet? Sie können davon ausgehen, dass Benutzer häufige Änderungen an diesen Labels anfordern.

Antwort

1

Sie können eine Metatabelle verwenden, die Informationen zu den Feldern der Tabelle enthält. Sie werden immer mehr Anwendungen für diese Tabelle finden, sobald Sie sie haben.

+1

Wäre das nicht eine Menge zusätzlicher Abfragen? – Glenn

+0

Je nach den Anwendungsfällen können Sie einfach die Etiketten in einer Klasse/Struktur mit einer einzigen Abfrage beim Start laden und damit fertig sein. Normalerweise ändern sich Ihre Etiketten nicht so oft, oder? – Mostlyharmless

1

Ich würde nicht die in Ihrer Datenbank speichern, sondern sie in Ihrem OO-Modell abgebildet sind, die die Datenbanktabelle darstellt, wie es in jedem guten ORM getan wird (siehe django, kohana-orm, active etc.)

EDIT:

Nun .. das kommt darauf an, was Sie hart codierten beziehen. Hardcodiert bezieht sich normalerweise auf jedes Mal, wenn Sie es im Code haben, wenn Sie das Feld in einem Formular oder einer Ausgabe verwenden. In der ORM-Klasse wird es nur einmal definiert und von da an wiederverwendet. Sie können auch die Methode _get verwenden, wenn Sie verschiedene Sprachen verwenden möchten.

Sie müssen das Etikett irgendwo definieren. Ich finde es verursacht zu viel Overhead, wenn Sie in die Datenbank setzen, da Sie die Informationen aus der Datenbank abrufen müssen. Abhängig davon, welche Art von GUI Sie verwenden, vielleicht viele Male.

Am Ende haben Sie zwei Dinge zu balancieren, Leistung und Lesbarkeit/Erweiterbarkeit des Codes. Wenn Sie es in eine Klasse einkapseln, wird es aus beiden Perspektiven bereinigt, außer in dem Fall, dass das Label von den Benutzern geändert wird, dann handelt es sich um dynamische Daten, die in der Datenbank enthalten sein sollten.

Wie auch immer, oft ist dies eine Frage der besonderen Situation und des persönlichen Geschmacks. Daher gibt es hier keine richtige oder falsche Lösung.

+0

Meinen Sie die Etiketten hart in die Klassendateien kodieren? – Glenn

+0

Also .. das OO-Modell, das die Datenbanktabelle darstellt ... Wenn Sie die Etiketten dort speichern, wäre es immer noch hart codieren ... oder? (Niemals zuvor irgendwas davon benutzt, also bin ich mir nicht sicher. Ergo, ich muss fragen.) – Mostlyharmless

+0

Wie ich in meinem Edit sage, wenn du es einmal in der Klasse definierst und dort mit DRY konformierst (wiederhole dich nicht) es ist nicht wirklich hart codiert, außer, es gibt einen Grund, warum es regelmäßig geändert werden muss (sogar mehrsprachig kann man in diesem Fall mit _get tun). – txwikinger

Verwandte Themen