Datenbank Migrationen (Liquibase)
Das Datenbank-Schema wird mit Liquibase migriert. (Liquibase Dokumentation)
- Das Master-File liegt in
src/main/resources/changelog/db.changelog-master.xml - Unsere Konvention ist für jeden Sprint eine neues Changelog-File anzulegen und im Master-File einzubinden.
- Möglichst nur eine Änderung pro Change-Set.
Siehe auch: Best Practices
Achtung
Wenn Tabellen mit Foreign-Key-Beziehungen zu anderen Tabellen anzulegen sind, bitte auch darauf achten die entsprechenden Foreign-Key-Contstraints in der Migration anzulegen.
Beispiel: Neue Entitätstabelle mit Foreign Key
<!-- Beispiel für eine neue Entitätstabelle mit Foreign Key -->
<!-- Bisherige Konvention zu Cascade-Triggern: ON DELETE RESTRICT -->
<changeSet id="<Release-Nummer>-<laufende Nummmer>" author="<Autor>">
<comment>
Kurze Erklärung warum Änderung.
</comment>
<createTable tableName="foo">
<column name="id" type="int8">
<constraints nullable="false" primaryKey="true"
primaryKeyName="foo_pkey"/>
</column>
<column name="r_event" type="int8">
<constraints nullable="false"
foreignKeyName="fk_foo_account"
references="event(id) ON DELETE RESTRICT" />
</column>
<column name="created" type="TIMESTAMPTZ">
<constraints nullable="false"/>
</column>
</createTable>
</changeSet>
Beispiel: Spalte hinzufügen
<changeSet id="<Release-Nummer>-<laufende Nummmer>" author="<Autor>">
<comment>
Kurze Erklärung warum Änderung.
</comment>
<addColumn tableName="<Tabellenname>">
<column name="type" type="VARCHAR(36)">
</column>
</addColumn>
</changeSet>
Konventionen zu Datentypen in der Datenbank
- Primary Key: int8
- Datumsfelder: TIMESTAMPZ