Einzelnen Beitrag anzeigen

webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#25

Re: Was muss man beachten bei eine DB Anwenung in Netz?

  Alt 20. Mär 2006, 09:13
Noch ein kleiner Tip bezüglich Normalisierung:

Ich verwende Firebird für eine Auftragsbearbeitung. Dort habe ich z.B. für Artikel ein Feld 'Einheit'
für dieses habe ich eine Domain erstellt vom Typ smallint.
In der Domainbeschreibung hinterlege ich die Einheiten in Key=Value Form, e.g. 0=<unbekannt>, 1=Stk usw.
Wenn das Programm startet bzw. sich ein Benutzer anmeldet, liest mein Program diese Beschreibung in ein TStrings-Liste, somit ist das visuelle Update seitens des Anwenders gewährleistet.
Abfragen laufen über ViEWS, wobei die Werte mittels case construkt ersetzt werden (nicht unbedingt notwendig, da Feldwert=ItemIndex = Klartext!).

Delphi-Quellcode:
procedure TdmMain.InitComboboxes(const DomainName: string; List: TStrings);
const
   sql = 'select RDB$DESCRIPTION from RDB$FIELDS where RDB$FIELD_NAME = %s';
var
   i : integer;
begin
   List.Clear;
   try
      query.SQL.Text := Format(sql, [QuotedStr(DomainName)]);
      query.open;
      List.Text := query.Fields.AsString[0];
   finally
      query.close(etmCommit);
   end;
   for i := 0 to pred(List.Count) do
      List.Strings[i] := List.Values[List.Names[i]];
end;
Somit schlage ich zwei oder mehr Fliegen mit einer klappe:
Vorteile:
1. Keine weitere Tabelle mit dazugehörigem Index nötig (DB-Größe und Verwaltungsaufwand minimiert)
2. weniger joins in Abfragen
3. Trotzdem keine Redundanz, da der Benutzer keine unsinnigen Werte eingeben kann
4. kleine Feldgröße (smallint vs. varchar)
5. Datenänderungen finden in der DB statt, kein erneutes kompilieren der Clientsoftware notwendig
6. Auf Clientseite bleiben derartige Wertvorgaben trotzdem editierbar, wie in einer Tabelle

Nachteile:
1. Durch Substitution der Feldwerte mit Klartext in Abfragen größe Bandbreite bei Übertragung, wie bei VarChar-Feldern halt üblich. Naja, geht halt nicht anders
2. Nur für kleine Lookuplisten mit wenigen Werten sinnvoll umsetzbar
3. man muß Änderungen immer an mindestens zwei Stellen einpflegen, Domain Description und case-Construkte, aber hey, besser als etwa das Clientprogramm anzupassen und neu zu kompilieren und auf etlichen Clients neu aufzusetzen, oder?
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat