Ankündigung

Einklappen
Keine Ankündigung bisher.

Default value oder manuell per Insert

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Default value oder manuell per Insert

    Tag,

    gibt es irgendwelche allgemeinen Pros und Contras dazu?

    Beispiel:

    User registriert sich, PDO binded Statement mit name, email, password und points wird executed... entweder wird 0 mitgegeben oder aber in der Datenbank als Default festgelegt.

    Ist das schneller, langsamer, pro Tipp, bad practice, altbacken oder so?

  • #2
    Solange du die Default-Werte nicht an verschiedenen Stellen definierst, ist das doch eigentlich egal, oder? Ich persönlich finde Default-Werte zwar praktisch, aber sie verschleiern oft auch, wer wo was einträgt. Insofern bevorzuge ich die Default-Werte ins Query zu schreiben, zum Beispiel durch eine Klassen-Konstante.
    "[URL="http://www.youtube.com/watch?v=yMAa_t9k2VA&feature=youtu.be&t=25s"]Mein Name ist Lohse, ich kaufe hier ein.[/URL]"

    Kommentar


    • #3
      Das Problem mit defaults in der Datenbank ist das die Anwendung davon nix weiß. Je nach dem wie du deine Anwendungen aufbaust ist das entweder völlig egal oder doch problematisch. Grade bei solchen Dingen wie ORM oder Active Records läuft es eher auf zweiteres hinaus. Damit kann es mit defaults passieren das deine Objekte unterschiedliche zustände annehmen, oder defaults doppelt definiert werden und das unterschiedlich.

      Kleines Beispiel mit einen Active Record. Angenommen jeder neue Nutzer erhält default 10 Punkt bei der Anmeldung (ist weit hergeholt das als Datenbank default umzusetzen, aber lass es z.B. ein status sein oder was auch immer).

      PHP-Code:
      $user = new user();
      $user->setName('blub');
      $user->setPassword('blub');
      $user->save();

      var_dump($user->getPoints()); //->0/NULL, obwohl in der Datenbank 10 Punkte steht

      $user = new user(id_des_neuen_users); //noch mal aus der Datenbank laden
      var_dump($user->getPoints()); //->10 
      Das ist ein Problem was mit defaults in der Datenbank passieren kann. Lösungsansätze gibts dafür einige, manche berücksichtigen die defaults, andere nicht.

      Kommentar

      Lädt...
      X