TigerJython4Kids | HomeTurtlegrafikRobotikDatenbanken |
DU LERNST HIER... |
wie du eine Datenbank für die gemeinsame Nutzung durch mehrere Benutzer einrichten kannst und welche Vorsichtsmassnahmen du dabei beachten musst. Bisher warst du der einzige Benutzer deiner Datenbank, die sich als Datei mit der Dateierweiterung .db auf deinem Computer befindet. Du konntest eine bestehende Tabelle aus der Datenbank holen, bearbeiten und wieder abspeichern. Es ist aber durchaus denkbar, dass du die Datenbank auch anderen Benutzer zur Verfügung stellen möchtest, die gleichzeitig darauf zugreifen möchten. Das kannst du beispielsweise so realisieren, dass du das Verzeichnis, in dem sich die Datenbank befindet, über ein Computernetzwerk frei gibst oder die Datenbank auf einer Cloud beispielsweise Dropbox speicherst und anderen Benutzern Zugriffsrecht erteilst. Solange die einzelnen Benutzer auf die Daten nur lesend zugreifen, ergeben sich bei gleichzeitiger Nutzung keine weiteren Probleme. Können die Benutzer hingegen die Daten auch verändern, muss du Vorsichtsmassnahmen ergreifen, damit die Daten der Datenbank korrekt bleiben. |
MUSTERBEISPIEL |
from dbtable import * persons = DbTable('id', 'name', 'vorname', 'wohnort', 'geschlecht', 'jahrgang') persons.insert(1,'Huber','Lia','Bern','w', 2002) persons.insert(2,'Meier','Luca','Basel','m', 2003) persons.insert(3,'Frech','Marc','Bern','m', 2000) persons.insert(4,'Bauer','Jan','Luzern','m', 2003) persons.insert(5,'Zwahlen','Noah','Thun','m', 2002) persons.insert(6,'Meier','Nina','Biel','w', 2001) print(persons) persons.save('schule.db') |
Zwei Benutzer A und B wollen nun die Datenbank gemeinsam nutzen. (Du kannst dies so simulieren, dass du zwei TigerJython-Fenster öffnest und zwei Programme so schreibst, dass sie auf die gleiche Datenbank zugreifen.) Um die Probleme zu demonstrieren, die sich dabei ergeben können, spielst du folgendes Szenario durch: A und B führen kurz nacheinander folgendes Programm aus, um die Daten zu lesen: from dbtable import * persons = DbTable() persons.restore("schule.db") print(persons) Wie du erwartest, "sehen" A und B dieselben Daten. Als nächstes führt A einen Update eines Datensatzes durch, beispielsweise ändert er den Wohnort von Bauer Paul, da dieser nach Zürich umgezogen ist. from dbtable import * persons = DbTable() persons.restore("schule.db") print(persons) persons.update(name = "Bauer", vorname = "Jan")(wohnort = "Zürich") print(persons) persons.save("schule.db") Etwas später ändert B den Wohnort von Zwahlen Noe, da diese nun in Biel wohnt. from dbtable import * persons = DbTable() persons.restore("schule.db") print(persons) persons.update(name = "Huber", vorname = "Lia")(wohnort = "Davos") print(persons) persons.save("schule.db") Voller Vertrauen, ihre Arbeit gewissenhaft ausgeführt zu haben, beenden A und B ihre Tätigkeit. Etwas später schaut sich ein Benutzer C mit folgendem Programm die Personendaten an: from dbtable import * persons = DbTable() persons.restore("schule.db") print(persons) Was sieht der Nutzer C als Wohnorte von Bauer Paul und Zwahlen Noe? Begründe deine Antwort. |
MERKE DIR... |
Bei der Benutzung von Datenbanken durch mehrere Personen, welche die Datenbank verändern können, ergeben sich heikle Zugriffskonflikte. Diese müssen durch besondere Vorsichtsmassnahmen vermieden werden. Im nächsten Kapitel lernst du, wie du dabei vorgehen kannst. |
ZUM SELBST LÖSEN |
|
Man spricht auch von der Konsistenz der Datenbank, die es zu bewahren gilt.
Du musst die Cloud so einrichten, dass die Datei in deinem lokalen Dateisystem sichtbar ist, beispielsweise indem du bei Dropbox das lokale Dropbox-Verzeichnis synchronisierst