This is an old revision of the document!


Änderungen in der Datenbank einbauen

Wir haben ein graphische Darstellung des Datenbankmodells mit Hilfe der kostenlosen Software MySQL-Workbench (Download) erstellt. Die aktuelle Projektdatei mit unserem Datenmodell für MySQL-Workbench kann unter folgendem Link über Subversion geladen werden:

https://admidio.svn.sourceforge.net/svnroot/admidio/trunk/documentation/admidio.mwb

Zu folgenden Versionen kannst du das Datenmodell hier herunterladen:

Änderungen oder Erweiterungen zu dem Datenmodell müssen zuerst über die MySQL-Workbench in der admidio.mwb gepflegt werden! Erst danach sollen die Änderungen in die Installationsscripte von Admidio eingebaut und im Sourcecode verwendet werden.

Änderungen in der Datenbankstruktur müssen an zwei Stellen eingebaut werden. Einmal im Installationsscript, welches die Datenbank bei Neuinstallationen einrichtet und zum anderen im Updatescript, welches bestehende Datenbanken mit den Neuerungen anpasst.

Das Installationsscript greift im Ordern adm_install/db_scripts auf die Datei db.sql zu. Diese beinhaltet die Struktur der kompletten Admidio-Datenbank und ist identisch mit dem Datenmodell aus der MySQL-Workbench. Hier müssen die Änderungen aus dem Datenmodell 1 zu 1 umgesetzt werden.

Für das Update gibt es bis einschließlich Version 2.x 2 Dateien im Ordner adm_install/db_scripts zu. Es gibt eine SQL-Datei upd_2_4_0_db.sql in der nur SQL-Statements mit Semikolon getrennt eingetragen werden können. Die Datei muss ggf. mit der aktuellen Versionsnummer, in der die Änderungen eingebaut werden sollen, noch erstellt werden. Zusätzlich gibt es noch eine PHP-Datei upd_2_4_0_conv.php, welche z.B. Datenkonvertierungen ermöglichen soll oder weitere Logik beinhalten kann. Auch diese muss ggf. mit der aktuellen Versionsnummer noch erstellt werden.

Ab Version 3.0 gibt es weiterhin 2 Dateien im Ordner adm_install/db_scripts zu. Allerdings wurde die SQL-Datei z.B. upd_2_4_0_db.sql durch eine flexiblere xml Datei ersetzt. Hierzu gibt es im nächsten Kapitel eine ausführliche Beschreibung. Da wir noch nicht alle nötigen Funktionen in der XML-Syntax umgesetzt haben, gibt es weiterhin eine PHP-Datei z.B. upd_3_0_conv.php, welche spezielle Logiken z.B. Datenkonvertierungen ermöglichen soll.

Die XML-Datei wird auch in dem Ordner adm_install/db_scripts abgelegt und folgt dem Namenschema update_Hauptversion_Unterversion.xml. Für Version 3.0.0 wäre das update_3_0.xml. Der XML-Aufbau sieht dann folgendermaßen aus:

<?xml version="1.0" encoding="UTF-8"?>
<update>
    <step id="10">1. SQL-Statement</step>
    <step id="20">2. SQL-Statement</step>
    <step id="30">usw...</step>
    <step>stop</step>
</update>

Hieran kann man schon erkennen, wie das Update funktioniert. Es werden mit aufsteigender ID einfach jeweils ein SQL-Befehl in einen step geschrieben.

<step id=40>UPDATE %PREFIX%_organizations SET org_homepage = 'http://www.example.com' WHERE org_homepage IS NULL</step>

Bei Tabellen muss immer hier der Platzhalter %PREFIX% genutzt werden, damit die installationsspezifischen Tabellenpräfixe berücksichtigt werden. Wichtig ist auch der letzte step mit dem Inhalt stop. Hieran erkennt das System das das gewünschte Ende erreicht wurde und das Script nicht irgendwo abgebrochen ist.

Möchte man Datenbankabhängige SQL-Befehle erstellen, welche nur auf einer bestimmten Datenbank ausgeführt werden sollen, so muss noch das Attribut database mit dem definierten Namen der Datenbank als Wert hinterlegt werden.

<step id='50' database='mysql'>ALTER TABLE %PREFIX%_organizations ADD COLUMN org_example varchar(255)</step>
  • de/entwickler/aenderungen_in_der_datenbank_einbauen.1374094638.txt.gz
  • Last modified: 2013/07/17 22:57
  • by fasse