Grafische IDE für Workflows in PHP/SQL?

Hallo,

in PHP/MySQL gibt es viele sich wiederholende Programmierschritte.
Gibt es eine grafische Umgebung, mit der man sich schnell ein Workflow zusammenklicken kann? Ähnliche Ansätze gibt es z.B. im Visual Studio.NET 3.x Workflow Foundation…

Hier was ich damit meine:

Z.B. ich will eine Verwaltung für eine Jugenherberge aufbauen. Die Datenbank besteht aus einer Tabelle „Zimmer“, die mit Tabelle „Personen“ 1:n verknüpft ist. Die Tabelle mit Verknüpfungen heißt „Zimmer_Person“.

Nun wären die typischen Aufgaben, Personen von einem in ein anderes Zimmer zu verschieben, neue Zimmer zu eröffnen, personen rauszulöschen usw.

Nun muss ich penibel die ganzen SQL-Abfragen manuell formulieren und hoffen, dass ich da nichts vergessen habe und dass die Integrität der Datenbank nicht verletzt wird.

Verschiebe ich Personen von einem Zimmer in ein anderes, muss ich eine z.B. Query formulieren, die die Personen umbucht. Dann gibt es noch Fallunterscheidung: bleibt nur eine Person im Zimmer, wird sie rausgeschmissen. Die Verkn. in „Zimmer_Person“ muss konsistenterweise gelöscht werden. usw. usw. usw.

Da muss doch inzwischen eine Abhilfe geben! Wie werden sonst solche große Portale wie StudiVZ oder Facebook entwickelt? Ich kann mir irgendwie nicht vorstellen, dass da die Entwickler da jede einzelne SQL-Abfrage formulieren und manuell darauf achten, dass alles richtig ist…

Hallo,

in PHP/MySQL gibt es viele sich wiederholende Programmierschritte.
Gibt es eine grafische Umgebung, mit der man sich schnell ein Workflow zusammenklicken kann?

Nicht das ich wüsste. Du kannst ein Programm wie Dreamwaver nehmen, da kannst du dir ne Webseite per klick klack zusammenbauen und auch PHP einbinden.

Nun muss ich penibel die ganzen SQL-Abfragen manuellformulieren und hoffen, dass ich da nichts vergessen habe.

Ja, genau. Das sollte man können und schwer ist es auch nicht.

Wie werden große Portale wie StudiVZ oder Facebook entwickelt? Ich
kann mir irgendwie nicht vorstellen, dass da die Entwickler da
jede einzelne SQL-Abfrage formulieren und manuell darauf
achten, dass alles richtig ist…

Doch, natürlich. Was spricht dagegen.

Aber du könntest dich auch von den PHP Gedanken verabschieden und mit JSF arbeiten. Da geht vieles Automatisiert. Ich selbst bevorzuge PHP.

Aber wenn du die SQL Operationen nicht in PHP durchführen führen willst, kannst du dir ne Datenbankapplikation mit Stored Procedures erstellen.

Dann musst du nur noch die Prozeduren auf rufen (Bsp: umbuchen(alteZimmerNr, neueZimmerNr)).

Hallo,

in PHP/MySQL gibt es viele sich wiederholende
Programmierschritte.
Gibt es eine grafische Umgebung, mit der man sich schnell ein
Workflow zusammenklicken kann? Ähnliche Ansätze gibt es z.B.
im Visual Studio.NET 3.x Workflow Foundation…

in php gibt es frameworks, die z.t. so wtwas abbilden, cakephp, zend, symfony
http://www.heise.de/developer/PHP-Frameworks-Zend-eZ…

Hi,

wenns Dir um die Integrität der Datenbank geht, würde ich mit InnoDB und Foreign Keys arbeiten. Wenigstens können dann Datensätze nicht verwaisen. In Kombination mit den bereits vorgeschlagenen Stored Procedures dürfte das eine solide Sache werden.

Ciao
Rudy

Hi Rudy,

danke für den Tipp mit den Fremdschlüsseln. Dass diese Funktion in InnoDB zur Verfügung steht, habe ich bereits bemerkt. Doch die Tabellen, gefüllt mit Daten sind bereits vorhanden. Gibt es da einen Weg, eine Attribute nachträglich in ein Fremdschlüssel im Sinne von InnoDB umzuwandeln?

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

Doch die Tabellen, gefüllt mit Daten sind bereits
vorhanden. Gibt es da einen Weg, eine Attribute nachträglich
in ein Fremdschlüssel im Sinne von InnoDB umzuwandeln?

Solange Du keine Werte in den Tabellen hast, die die Integrität verletzten, kannst Du auch Fremdschlüssel anlegen. Natürlich musst Du zuerst die Tabellen in das InnoDB-Format umwandeln (in PHPMyAdmin unter „Operationen“, mit SQL
ALTER TABLE xy ENGINE=InnoDB).

Bei InnoDB muss aber ein Feld, welches Du per Foreign Key referenzierst, auch einen Index haben. Über PHPMyAdmin kannst Du diese Foreign Key Constraints leicht über den Link „Beziehungen“ in der Strukturansicht der (abhängigen) Tabelle festlegen. Dort kannst Du dann auch nur Felder auswählen, die Du als Index definiert hast (oder eben den Primärschlüssel, was aber wohl nicht viel Sinn macht)

Beispiel: Du hast eine Tabelle mit den Zimmern „rooms“ {id, title}, eine mit den Gästen „guests“ {id, name} und eine Tabelle mit der Belegung „rooms_guests“ {id, roomsid, guestsid}. Du legst dann einen Index auf rooms_guests.roomsid und einen auf rooms_guests.guestid. Gehst auf „Beziehungen“ bei rooms_guests und stellst die Fremdschlüsselbeziehungen von „roomsid“ auf „rooms->id“ und von guestsid auf „guests->id“ ein. Über die Kaskadierung bei Löschung und Aktualisierung musst Du selbst entscheiden.

Wenn Du lieber SQL schreibst:

ALTER TABLE rooms\_guests ADD INDEX (roomsid);
ALTER TABLE rooms\_guests ADD INDEX (guestsid);
ALTER TABLE rooms\_guests ADD FOREIGN KEY (roomsid) REFERENCES rooms(id) ON DELETE CASCADE;
ALTER TABLE rooms\_guests ADD FOREIGN KEY (guestsid) REFERENCES guests(id) ON DELETE CASCADE;

Ciao
Rudy