Einzelnen Beitrag anzeigen

Furtbichler
(Gast)

n/a Beiträge
 
#17

AW: Datenbankdesign: wiederkehrende [Ereignisse] Aktionen

  Alt 8. Jan 2014, 08:04
Was nahpetS da gemacht hat, nennt sich 3NF. Kann man so machen, muss man aber nicht. ("Spatzen fliegen auch weg, wenn man sich pazifistisch nähert")

Insofern ist es eben nicht abwägig für die Wochentage eine Tabelle anzulegen
Richtig. Aber damit ist die Semantik ja nicht geklärt. (PS: "abwegig")
Zitat:
- gerade auch um darüber Übersetzungen zu ermöglichen...
Kann, muss aber nicht. I.a. hat man hier mehrere Orte, wo Übersetzungsinformationen angelegt werden (was ja nicht gerade ein Vorteil ist). Die Lookup-Tabellen haben nur dann Sinn, wenn die Ausprägung in einer View/Query verwendet wird (Stichwort: Report). Es ist dann nämlich überflüssig, im Report die Ausprägungen vorzuhalten (was nebenbei manchmal echt lästig ist, vor allen Dingen, wenn es sich um einen externen Reportgenerator handelt).

Lookuptabellen sind u.a. sinnvoll, wenn man die Dateneingabe per Auswahl (Combo, Radio, etc.) ermöglichen will. Früher gab es ja die beliebten 'Kennziffern' (die gar keine 'Ziffern', sondern Ziffernfolgen waren), die die Datentypisten in ausgedruckter Form rund um den Bildschirm geklebt haben. Da war dann der Staubsauger '0125' und der Montag die '1'.

Viele der führenden Anbieter eines RDBMS bieten Datumsarithmetik inkl. Wochentag nach ISO.
Richtig, Aber: Vorsicht! Falle! 'SET DATEFIRST'

Allgemein gesehen dreht sich die Diskussion bzw. das Unverständnis von nahpetS' Ansatz um die Frage, ob man seine DB als 2.xNF oder 3NF ablegen sollte sowie enventuell einiger nicht geklärter Fragen, wozu man Lookuptabellen verwendet (Ausprägung vs. Semantik).

In der DB habe ich natürlich irgendwann eine Abfrage auf '1' (wenn z.B. jeden Montag eine Wartung durchgeführt wird oder sonstwas gemacht wird). Irgendwann muss ich mich im DB-Umfeld auf die Bedeutung der einzelnen Werte festlegen. Es wäre fatal, hier in der Lookuptabelle nachzuschlagen, ob da 'Montag' drinsteht.

aber warum sollte man denn beim Programmieren dann so was umständliches wie Enums und Konstanten verwenden?
Es erzeugt besser lesbaren Code:
Delphi-Quellcode:
If Day=1 Then
  StarteDieWartung;
// vs.
If Day=Monday Then
  StarteDieWartung;

Geändert von Furtbichler ( 8. Jan 2014 um 08:08 Uhr)
  Mit Zitat antworten Zitat