<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hallo Gregor,<br>
    <br>
    das Schema, also die Datenbankstrukturen, muss man ansich immer erst<br>
    einmal vorab definieren und erzeugen. Bei einem guten OR Mapper
    braucht<br>
    man anschließend die Modellklassen aber nicht mehr detailliert bis<br>
    auf Feldebene spezifizieren (DRY-Prinzip). Das finde ich schon ganz
    klar<br>
    besser als redundante Angaben in den Modellklassen.<br>
    <br>
    Grüße<br>
    Frank<br>
    <br>
    <div class="moz-cite-prefix">On 09/14/2017 09:16 PM, Gregor Goldbach
      wrote:<br>
    </div>
    <blockquote type="cite"
cite="mid:CAGWbjPTZ9ymM1PESF2WZnw_5XUx5tH7x1TttkqhBdGn7B6gQ0Q@mail.gmail.com">
      <pre wrap="">Moin Renée,

wenn ich dich richtig verstehe, ist der Code dann die Quelle der
Weisheit und bestimmt das Schema.

Es gibt ja auch die Sichtweise, dass im Sinne von DRY das
Datenbankschema die Quelle der Weisheit ist und der Code dann aus dem
Schema generiert wird.

Im echten Leben habe ich schon beide Varianten gesehen. Ich habe nicht
den Eindruck gewonnen, dass eine der beiden Varianten "die beste" ist,
sondern immer im Kontext betrachtet und bewertet werden muss.
Inwieweit hier das DBIx::Class-Ökosystem hilft, interessiert mich
sehr.

Aber die Frage hebe ich mir dann für die Diskussion nach Rackes Vortrag auf :-)

  Gregor


Am 8. September 2017 um 10:06 schrieb Renee B <a class="moz-txt-link-rfc2396E" href="mailto:pm.list@perl-services.de"><pm.list@perl-services.de></a>:
</pre>
      <blockquote type="cite">
        <pre wrap="">Moin,

Am 08.09.2017 um 08:37 schrieb Gregor Goldbach:
</pre>
        <blockquote type="cite">
          <pre wrap="">Moin,

ich habe den Raum jetzt reserviert: 5 Dezember 2017, wieder ab 18.30
Uhr. Der Termin steht, jetzt weiter zum Inhalt :-)

Mich würden Geschichten aus der echten Arbeit mit DBIx::Class
interessieren. Insbesondere wüsste ich gerne, inwieweit die Arbeit mit
einem versioniertem Datenbankschema funktioniert und worauf man bei
Migrationen achten muss (etwa nach Refactorings oder sonstigen
größeren Umbauten).

  Gregor
</pre>
        </blockquote>
        <pre wrap="">

Ich nutze z.B. für das OTRS Package Archive
(<a class="moz-txt-link-freetext" href="http://github.com/reneeb/OPAR">http://github.com/reneeb/OPAR</a>) DBIx::Class... Das ER-Modell mache ich mit
MySQL Workbench, da Nicht-Programmierer mit Bildchen besser
zurechtkommen als mit reinem Code. Mit MySQL::Workbench::DBIC
erstelle ich das Schema
(<a class="moz-txt-link-freetext" href="https://github.com/reneeb/OPAR/blob/master/scripts/create_schema.pl">https://github.com/reneeb/OPAR/blob/master/scripts/create_schema.pl</a>)
und dann nutze ich DBIx::Class::DeploymentHandler
für das Ausrollen der Datenbank(-änderungen) -
<a class="moz-txt-link-freetext" href="https://github.com/reneeb/OPAR/blob/master/scripts/database.pl">https://github.com/reneeb/OPAR/blob/master/scripts/database.pl</a>

Bisher gab es da aber nur Sachen, die hinzugefügt oder rausgenommen
wurden und keine komplette Schemaänderungen.

- Renée
_______________________________________________
Hamburg mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Hamburg@pm.org">Hamburg@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/hamburg">http://mail.pm.org/mailman/listinfo/hamburg</a>
</pre>
      </blockquote>
      <pre wrap="">_______________________________________________
Hamburg mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Hamburg@pm.org">Hamburg@pm.org</a>
<a class="moz-txt-link-freetext" href="http://mail.pm.org/mailman/listinfo/hamburg">http://mail.pm.org/mailman/listinfo/hamburg</a>
</pre>
    </blockquote>
    <br>
    <div class="moz-signature">-- <br>
      Dipl.-Inform. Frank Seitz<br>
      IT Consultant / {Web, Database, Linux} Developer<br>
      Tel: +49-176-78243503, Hauptstr. 32-34, D-25462 Rellingen<br>
      <br>
      Blog: <a href="http://fseitz.de/blog">http://fseitz.de/blog</a></div>
  </body>
</html>