internet‎ > ‎develop‎ > ‎

Datenbanken


2011-06-10: unfertig; vorbereitet für eine Publikation in PCNEWS

Alle modernen Portalsysteme benutzen Datenbanken zur Steuerung des Inhalts, des Aussehens und der Kommunikation mit den Benutzern.

Mitglieder von ClubComputer verfügen über kostenlosen Webspace und können dort ohne weitere Kosten eine Access-Datenbank betreiben. Aber nur wenige nutzen diese Möglichkeit, weil sie doch einiges Know-How über den Umgang mit den Zugriffen erfordert.

In diesem Artikel wird der kostenlose Visual Web Developer 2008 benutzt, um die Zugriffsmechanismen zu beschreiben. Eine Einführung in die Arbeitsweise mit diesem Tool gibt es in PCNEWS-117, Seite 18.

Grundsätzlich kann man Daten auch in Textdateien ablegen, doch bei einer größer werdenden Zahl von Daten wird der Zugriff rasch zu langsam, ganz zu schweigen von der Komplexität beim sequenziellem Lesen und Schreiben in Textdateien.

Eine Access-Datenbank für den Einstieg hat viele Vorteile. Man kann die Datenbank mit Microsoft Office 2007 entwerfen. Alle erforderlichen Abfragen können getestet werden und die bei der Programmierung erforderlichen Sql-Anweisungen können direkt aus Access entnommen werden. Die Datenbank besteht aus nur einer Datei, der Upload auf den Server ist daher denkbar einfach. Wer mit Access nicht vertraut ist, kann zum Beispiel den Kurs von Karel Štípek „besuchen“. Siehe PCNEWS-Ausgaben 101, 102, 103104.
Beschriftung Feldname Felddatentyp Bemerkung
nicht notwendig ID Autowert Primärer Schlüssel
Titel CDP_Titel Text max. Länge 255 Zeichen
Anzahl der CDs CDP_Anzahl_CD Zahl/Integer
Ausgabejahr CDP_Ausgabejahr Zahl/Integer
IdentifikationsNr CDP_IdentNr Text Std.Länge 50 Zeichen

Die einfachste Nutzung einer solchen Datenbank besteht in der Speicherung variabler Daten in einer Tabelle. Beispielsweise könnte man eine CD-Sammlung im Internet publizieren wollen. Diese Sammlung wird von Zeit zu Zeit erweitert. Ohne Datenbank muss man die Html-Seiten direkt editieren. Je nachdem, welchen Editor man dazu verwendet, ist das eine mehr oder weniger mühsame Angelegenheit; immerhin muss man immer wieder auf dieselbe Formatierung achten. Das Schicksal solcher Seiten ist, dass sie einmal mit viel Euphorie erstellt werden, doch angesichts des Wartungsaufwandes dann nicht mehr ganz so freudig aktualisiert werden. Hat man dagegen die Daten in einer Access-Datenbank (irgendein Verwaltungsprogramm benötigt man ja ohnehin dazu), dann genügt es, eine aktualisierte Version davon auf den Server zu laden und alles andere besorgt ein Programm.

Als Ausgangspunkt benutzen wir eine vereinfachte Version der Datenbank, die im Detail in PCNEWS 101 beschrieben ist, eine Datenbank für CDs. Die Datenbank CDs.mdb wird auf eine einzige Tabelle CDP (CD-Packung) reduziert (Das Feld CDP_KATEG_ID wurde weggelassen und der primäre Schlüssel wurde auf ID umbenannt.) Ausnahmsweise wird der Primärschlüssel nicht CPD_ID sondern nur ID genannt. Das erfolgt mit Rücksicht auf das am Ende dieses Beitrags vorgestellte Programm zum Editieren der gesamten Datenbank.

Wir entwerfen eine solche Tabelle in Access und geben einige Datensätze ein.

Die eigentliche Aufgabe ist es jetzt, diese Tabelle im Internet zu publizieren.

Die Schritte dazu sind folgende:
  • Die Access-Datenbank auf den Server laden
  • Mit den Entwurfshilfen von Visual Studio 2008 und mit möglichst wenig Programmieraufwand eine Webseite herstellen, die den Inhalt der Datenbank anzeigt.
Wenn die Arbeitsweise so ist, dass die eigentliche persönliche Datenbank immer am Desktop ist und die Webversion nur von Zeit zu Zeit aktualisiert wird, kann die hier gezeigte Technik verwendet werden. Es könnte aber auch sein, dass die Webdarstellung sich sehr bewährt hat und man gar nicht mehr diese Zweigleisigkeit benötigt und man sich auf die Webversion der Datenbank beschränken möchte und den Wunsch hat, die Datenbank online zu editieren und nicht am Desktop. Dann entfällt sogar der Upload der Datenbank. Auch das ermöglicht uns der Web-Developer. Mit ein bisschen Programmieraufwand kann man die Tabelle am Server editieren. Einzige Voraussetzung ist, dass sich die Datenbank in einem Verzeichnis befindet, in dem Schreibrechte bestehen.

Das Problem beim Online-Editieren ist aber, dass die Datei, die ein Editieren ermöglicht, von jedem benutzt werden kann, der diese Adresse kennt. Man muss daher dafür sorgen, dass diese Datei gegen Fremdzugriff geschützt ist. Das kann man auf zwei Arten erreichen:

Man speichert die Zugriffsdatei zum Editieren in einem Ordner auf dem die "Virtual Folders" aktiviert sind. Man versieht die Datenbank mit einer Identifikationsmöglichkeit und speichert in einer eigenen Tabelle Usernamen/Passwort jener Benutzer, die auf die Datenbank zugreifen dürfen. Diese Zugriffseinschränkung kann sich auf das Lesen aber auch auf das Schreiben beziehen.

Die CD-Datenbank ist passiv, d.h. der Besucher der Seite sieht die Liste, kann aber die Liste selbst nicht editieren. Etwas dynamischer sind Datenbanken, in die Benutzer auch schreiben dürfen, etwa in Gästebücher. Ein Gästebuch zeigt einerseits alle bisherigen Einträge anderseits gibt es auch eine Eingabemaske für neue Einträge. Es sind auch Mechanismen erforderlich, um sich gegen Spam zu schützen.

Wir haben bereits drei Tabellen in der Datenbank und genau genommen muss man dieselben Programmsequenzen für jede der drei Tabellen wiederholen, wenn man diese Tabellen online editieren will. Dabei sieht man, dass sich die meisten Elemente wiederholen und man wünscht sich ein einheitliches Programm zur Bearbeitung aller Tabellen. Ein Programm, das alle Tabellen der Datenbank automatisch findet, ein Programm das jede Tabellenstruktur untersucht und in Abhängigkeit von der Anzahl der Felder, dem Feldtyp und dessen Länge die erforderlichen Controls generiert. Die Spalten sind sortierbar und bei mehr als 20 Datensätzen gibt es ein automatisches Paging in Portionen zu 20 Datensätzen.

Damit dieses Programm nicht allzu aufwändig wird, wollen wir folgende Vereinfachungen treffen:
  • Jede Tabelle hat einen Primärschlüssel, der ein Autowert ist.
  • Dieser Schlüssel ist immer die erste Spalte
  • Der Name dieses Schlüssels ist immer ID.
Diese Vereinbarung hat den Vorteil, dass wir nach dem Schlüsselfeld nicht programmatisch suchen müssen. Es ist immer die erste Spalte und wir müssen uns auch keine Gedanken um den Namen machen.

Die Darstellung dieses Programms in den PCNEWS erforder zu viel Platz, es ist daher nur in der Webversion enthalten. Hier wird nur die Funktion dargestellt.

Das Programm erfordert als einzigen Parameter den Namen der Datenbank. Es findet alle Tabellen und generiert einen Index bestehend aus den Tabellennamen. Ein Klick auf den Tabellennamen öffnet die Datenbank in einem GridView-Control, das die Grundfunktionen Datensatz anfügen, Datensatz editieren und Datensatz löschen bietet. Das Programm weiß nichts über den Zusammenhang der Tabellen und behandelt die Tabellen unabhängig voneinander. Ebenso weiß das Programm nicht, wie groß ein Eingabefeld darzustellen ist. Dafür ist das Programm aber sehr universell. Ein Tabellen-Editor für Access-Datenbanken.
Comments