Announcement

Collapse
No announcement yet.

Prinzipienfrage: Speichern von Zuständen in der Datenbank

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Prinzipienfrage: Speichern von Zuständen in der Datenbank

    Hallo,

    wir haben neulich bei uns in der Firma eine Diskussion über die Art und Weise geführt wie wir gewisse Zustände von Objekten/Daten in der Datenbank speichern.

    Dabei haben wir zwei Ansätze diskutiert:
    1. Zustände werden als einfache Zahlen gespeichert
    2. Zustände werden als kurze Zeichenketten gespeichert

    Beispiel für die o.g. Punkte anhand eines Objektes "Paket"
    1. Zustände 1,2,3,4
    2. Zustände: eingesammelt (COLLECTED) , im Versandlager(WAREHOUSE), unterwegs(ON_ROAD), zugestellt (DELIVERED)

    Vorteile für die zwei Ansätze:
    1. Repräsentation als Zahl
    • Wenig Speicher in der Datenbank notwendig
    • Dadurch Geschwindigkeitsvorteile
    • Zustandsübergänge erkennbar (1->2->3...)


    2. Repräsentation als Zeichenkette
    • Bedeutung der Zustände leicht erkennbar (selbst wenn Doku fehlt)
    • Vorheriger Punkt nicht nur für Entwickler sondern im Notfall auch für Service-Team großer Vorteil
    • Schnellere Einarbeitungszeit für neue Entwickler
    • Zustandsübergänge ebenfalls erkennbar
    • Erweiterungen (neuer Zustand zwischen '2' und '3') leicht realisierbar


    In beiden Fällen müssen die Zustände in der GUI für den Benutzer natürlich in einen verständlichen Text codiert werden (spricht eher für erste Variante).

    Welchen der beiden Ansätze bevorzugt ihr und warum?


    Gruß
    Rev

  • #2
    1.

    Für eine einfacher lesbare Variante kann man sich dann immer noch, falls nötig, eine View mit lesbaren (und lokalisierbaren!) Texten aus entsprechenden Lookup Tabellen drüber legen.

    Ich würde auch nicht versuchen den Zahlen der Zustände mehr Sinn zu geben als eine reine Zuordbarkeit. Also ein Gedanke wie '2 muss vor 3 aber nach Zustand 1 passieren' macht üblicherweise mehr Probleme als es löst. Eine solche denke funktioniert, wenn überhaupt, nur bei eindeutigen Ketten. Schon ein ~Annahme verweigert~ wäre ein anderer Endpunkt der Kette und würde in deinem Beispiel da schon nicht mehr richtig rein passen.

    Comment


    • #3
      In meinen Augen eine akademische Diskussion:

      Wenig Speicher in der Datenbank notwendig

      Kommt es wirklich auf die paar Bytes mehr an? Liegen tatsächlich derart viele Datensätze vor, das das beachtet werden muss

      Dadurch Geschwindigkeitsvorteile

      Bringt das Lesen als INT tatsächlich den Geschwindigkeitsvorteil? Liegen tatsächlich derart viele Datensätze vor das das eine Rolle spielt?

      Zustandsübergänge erkennbar (1->2->3...)

      -> siehe Beitrag von Ralf

      Erweiterungen (neuer Zustand zwischen '2' und '3') leicht realisierbar

      Ist das absehbar erforderlich?


      Wie gesagt, wenn soviele Datensätze vorliegen bzw. erwartet werden kann man drüber nachdenken.


      Welchen der beiden Ansätze bevorzugt ihr und warum?
      2.

      Beim rumfummeln an der DB ist Lesbarkeit ein Vorteil
      Zuletzt editiert von Christian Marquardt; 20.12.2010, 17:46.
      Christian

      Comment

      Working...
      X