Zwischenstände speichern / auf Mehrfachnutzer umstellen
Pirx
- programmiertechnik
Hallo Forum,
ich habe ein kleines PHP-Anwendung mit MySQL-Basis geschrieben. Geht um eine Art Projektverwaltung. Gleich 2 Probleme kommen gerade auf:
1. Es ist der Wunsch nach Einlesen von gespeicherten Zwischenständen aufgekommen. Wie mache ich das ma besten? Meine Idee war jetzt:
Gibt es irgendwelche Bedenken? Außer, dass ich mich mit dem mysqldump/Shell auseineindersetzen muß.
2. Außerdem sollen mehrere Nutzer mit dem System arbeiten (gleiche Struktur, aber andere - eigene Daten). Ist es da besser alles in den gleichen Tabellen zu regeln, also
//dokumente_tbl
id nutzer_id name
--------------------
1 1001 xyz.pdf
2 1001 abc.pdf
3 1002 edf.pdf
oder lieber für jeden Nutzer eine eigene Tabellenstruktur anlegen und diese dann bspw. über dokumente_1001_tbl anzusprechen?
Ich bin gespannt auf eure Meinungen.
Pirx
Hi!
- Es ist der Wunsch nach Einlesen von gespeicherten Zwischenständen aufgekommen. Wie mache ich das ma besten? Meine Idee war jetzt:
- Nutzer sichert über Button --> Skript (dump) den kompletten Inhalt der DB (.sql wird irgendwo abgelegt und gleichzeitig in einer backup_tbl der Pfad zu der Datei geschrieben)
- Nutzer will alten Stand einspielen: aktueller Stand wird wie oben gespeichert, dann komplette DB geleert und ausgewählter Zwischenstand eingelesen.
Gibt es irgendwelche Bedenken? Außer, dass ich mich mit dem mysqldump/Shell auseineindersetzen muß.
Kann man so machen, ist aber quasi ein Medienbruch. Du musst nicht mehr nur mit PHP und MySQL hantieren sondern auch noch mit der Shell, wenn du das darüber machen willst. Du kannst auch in PHP/MySQL bleiben, indem du die Sicherung als weitere Tabelle(n) oder Datenbank(en) anlegst. Das Kopieren von Tabellen kann MySQL mit Bordmitteln und sehr wenig Aufwand erledigen, beispielsweise so:
CREATE TABLE backup_20090815 SELECT * FROM original
Das Rückspielen ist auch nicht schwerer:
DELETE FROM original oder TRUNCATE TABLE original (Die Nebenwirkungen beider Statements dürften dir vermutlich egal sein - vielleicht abgesehen vom auto_increment-Wert.)
INSERT INTO original SELECT * FROM backup_20090815
- Außerdem sollen mehrere Nutzer mit dem System arbeiten (gleiche Struktur, aber andere - eigene Daten). Ist es da besser alles in den gleichen Tabellen zu regeln, also oder lieber für jeden Nutzer eine eigene Tabellenstruktur anlegen und diese dann bspw. über dokumente_1001_tbl anzusprechen?
Wenn keine Sicherheitsargumente für eine Trennung sprechen, dann ist es üblicherweise besser alles in einer Tabelle zu haben. Die Unterscheidung macht man ja mit entsprechenden Bedingunen in der WHERE-Klausel.
Lo!
Danke für die Antworten dedlfix.
Kann man so machen, ist aber quasi ein Medienbruch. Du musst nicht mehr nur mit PHP und MySQL hantieren sondern auch noch mit der Shell, wenn du das darüber machen willst. Du kannst auch in PHP/MySQL bleiben, indem du die Sicherung als weitere Tabelle(n) oder Datenbank(en) anlegst. Das Kopieren von Tabellen kann MySQL mit Bordmitteln und sehr wenig Aufwand erledigen, beispielsweise so:
CREATE TABLE backup_20090815 SELECT * FROM original
Das Rückspielen ist auch nicht schwerer:
DELETE FROM original oder TRUNCATE TABLE original (Die Nebenwirkungen beider Statements dürften dir vermutlich egal sein - vielleicht abgesehen vom auto_increment-Wert.)
INSERT INTO original SELECT * FROM backup_20090815
An die Bordmittel habe ich auch schon gedacht, nur hat mich bisher das einzelne kopieren von Tabellen zurückschrecken lassen (Das Projekt hat bisher > 50 Tabellen) aber ist wahrscheinlich der bessere Weg.
Wenn keine Sicherheitsargumente für eine Trennung sprechen, dann ist es üblicherweise besser alles in einer Tabelle zu haben. Die Unterscheidung macht man ja mit entsprechenden Bedingunen in der WHERE-Klausel.
Auch da bin ich deiner Meinung. Wenn sich nämlich die Tabellenstruktur ändert, müßte ich die Änderung x-mal für jeden User machen.
Gut, dann werde ich das mal angehen und umbauen...