Meine Datenbank für die Sammlung von Belegen

Inhalt:


1. Zielsetzung
Die Sammlung soll mit Hilfe der Datenbank nach Merkmalen durchsucht werden und die Ergebnisse als Bilder der gefundenen Belege mit Erläuterungen auf dem Bildschirm angezeigt werden. Die Anfragen an die Datenbank sollen über ein Menü auf der  eigenen Homepage im Internet gestellt werden, damit die Ergebnisse unabhängig vom eigenen PC (auch anderen Sammlern) gezeigt werden können.
Neben den für alle zugänglichen Informationen sollen weitere Merkmale gespeichert werden, die nur mit den Hilfsmitteln der lokalen Datenbank auf dem eigenen Rechner zugänglich sind.
Neben der Aufstellung von allerlei Statistiken über die Sammlung, soll insbesondere der Neuerwerb von Belegen unterstützt werden. Die Frage: Hab ich schon ähnliche Belege? kann dann sofort beantwortet werden.

Das Projekt umfasst folgende Punkte:
  • Definition des Umfangs der Sammlung
  • Festlegung der Informationen, geordnet nach Kriterien, die über diese Sammlung zur Verfügung stehen sollen
  • Definition der Datenbank auf dem lokalen Rechner und Eingabe der Daten für alle vorhandenen Belege
  • Abbildung dieser Datenbank auf dem Server des Providers, auf dem die eigene Homepage besteht.
  • Erstellung einer Seite auf der Homepage, die es formularmäßig gestattet, Anfragen an die Datenbank auf dem Server zu stellen und als Ergebnis die Bilder und erläuternden Texte zu den Belegen zu betrachten.

Dieses Projekt hat zur Folge, dass man sich bei der Sammlung der Belege für die Zukunft exakt festlegt. Eine wesentliche Erweiterung des Umfangs der Sammlung führt zu Änderungen der Datenbank, die nachträglich nur mit einem erheblichen Aufwand durchzuführen sind.


2. Umfang der Sammlung
I. Sammlung Norddeutsche Post
Es werden Belege gesammelt aus dem Gebiet der Norddeutschen Post 1868 - 1871
ohne die überklebten Ganzsachen-Umschläge der Altdeutschen Staaten sowie aus dem Okkupationsgebiet Elsass-Lothringen ab Oktober 1870 bis 31.12. 1871 ohne Feldpost.
II. Sammlung Reichspost
Es werden Belege gesammelt aus dem Gebiet der Deutschen Reichspost in der Zeit von 1872 bis 1902.
Im einzelnen:
a) Belege mit Marken folgender Serien:
Brustschilde, Pfennige,  Zwei Mark, Pfennig, Krone-Adler, dabei wird besonderer Wert auf Farbnuancen gelegt:
bei den Brustschild-Marken eingeschränkt auf die im Michel Katalog Deutschland-Spezial genannten Farbnuancen,
bei den Serien Pfennige und Pfennig gemäß den Angaben in den Handbüchern,
bei der Zwei-Mark-Marke auf der Grundlage der Klassifizierung  von Stoebe und
bei den Krone-Adler Marken aufgrund eigener Klassifizierung unter Verwendung der Klassifizierung der ArGe von 1966/67
b) Belege mit Klaucke-Stempeln, je ein Exemplar gemäß MICHEL Handbuch
c) amtliche Ganzsachen der Deutschen Reichspost aus der Zeit von 1872 bis 1899 entsprechend MICHEL Ganzsachen Katalog
     und Privatganzsachen PP8, andere nur bei besonderem Interesse.
d) Belege ohne Marken von postgeschichtlichem Interesse aus der Zeit von 1872 bis 1902
e) Belege mit Mischfrankaturen aus den oben genanten Serien und mit Germania-Marken bis 1902
f) Belege mit Marken des Norddeutschen Postbezirks, die 1872-1874 weiterhin gültig waren (NDP24-26)
Die Belege müssen aus dem Gebiet der Reichspost abgesandt sein innerhalb des Zeitraums 1.1.1872-31.12.1902.
Ausnahmen bilden Antwortganzsachenkarten, Rückscheine und Belege mit Klaucke-Ankunfsstempeln, die aus dem Ausland zurückgeschickt wurden, soweit sie einen lesbaren Ortsankunftstempel aus dem gleichen Zeitraum enthalten.
In der Sammlung sollen alle möglichen  Sendungsarten  und Versendungsformen vertreten sein.

Die gesammelten Belege werden in Ordnern mit Klarsichthüllen untergebracht. Die ständig wachsende Zahl von Belegen wird dabei nach  Kriterien geordnet, die eine einfache Ergänzung erlauben (s. Datenbank-Spezifikation).

3.  Was ist eine Datenbank
In einer Datenbank werden große Mengen gleichartiger Informationen nach bestimmten Kriterien geordnet gespeichert. Die Art der Speicherung erfolgt so, dass anhand von Anfragen an die Datenbank mit bestimmten Kriterien oder bestimmten Werten gewünschte Teilinformationen ausgewählt, sortiert und dokumentiert werden können.
Wie das im einzelnen geschieht, soll an einem einfachen Beispiel gezeigt werden:
Wir wollen Belege mit Briefmarken der Serie Krone-Adler sammeln und dafür eine einfache Datenbank erstellen. Wir wollen diese Datenbank 'Krone-Adler-Belege' nennen.

Die Informationen, die uns interessieren, seien folgende:
die Art der Postsendung: Postkarte, Brief, Drucksache, Postpacketadresse, usw.
der Aufgabeort der Sendung
der Zielort der Sendung
die Michelnummer der Briefmarken
die Farbe der Briefmarken
die Form der Stempel: Einkreis, Doppelkreis, Gitter, Obersegment, usw.
das Stempeldatum auf den Stempeln

Wir stellen sofort fest, dass auf einem Beleg mehrere Briefmarken vorhanden sein können und verschiedene Stempel.

Bei den Stempeln soll es uns nicht interessieren, ob ein und derselbe Stempelabdruck  mehrmals auf dem Beleg vorhanden ist. Aber es können durchaus verschiedenen Stempel  z. B. Aufgabe und Ankunftstempel vorhanden sein. Wir interessieren uns für Stempelabschläge, die alle als verschieden angenommen werden.

Bei den Briefmarken ist das anders, da treten die gleichen Marken auf verschiedenen Belegen auf und mehrere Marken auf einem Beleg.

Diese Informationen wollen wir jetzt in Tabellen der Datenbank unterbringen. Wir brauchen zunächst drei Tabellen, die wir mit den Namen Sendungen, Marken und Stempel  bezeichnen wollen. 
Wir bringen also die Informationen Sendungsart, Aufgabeort und Zielort in der Tabelle Sendungen, Michelnummer und Farbe in der Tabelle Marken und Form und Datum in der Tabelle Stempel unter.
Zusätzlich benötigt jede Eintragung in eine Tabelle noch eine eindeutige Kennzeichnung. Diese nennt man den Schlüssel der Tabelle. Dafür kann man jede eindeutige Kennzeichnung in Form einer Zahl oder eines Textes benutzen, aber es ist häufig sinnvoll, wenn man den Schlüssel so wählt, dass man etwas damit ausdrückt. Wir wollen den Schlüssel der Tabelle Sendungen so wählen, wie wir die Belege in unserer Sammlung ordnen: Die Belege sollen nach Michel-Nummern der höchstwertigen Marke und der Reihenfolge des Erwerbs geordnet sein.


Wir stellen uns vor, wir haben 5 Belege in dieser Reihenfolge erworben:
  1. eine Postkarte von Frankfurt nach Hamburg mit einer 46a grün  mit einem Einkreisstempel  mit Datum vom 3.4.1890
  2. einen Brief von Wiesbaden nach Berlin mit einer 47d lebhaftlilarot  mit einem Gitterstempel vom 4.8.1896 und einem Einkreisstempel vom 5.8.1896
  3. einen Brief mit Nachnahme von Kiel nach Hamburg mit zweimal 47c mittelrot mit Gitterstempel vom 15.10.1884 und 16.10.1884
  4. eine Drucksache von Leipzig nach Dresden mit einer 45c hellockerbraun mit einem Einkreisstempel vom 18.9.1899
  5. eine Postpacketadresse von Chemnitz nach Zürich mit einer 50d lebhaftrötlichbraun, einer 48d violettultramarin und einer 47d lebhaftlilarot  mit einem Einkreisstempel vom 7.12.1896

Die Tabelle Sendungen sieht dann so aus:

Sendungen

Sendungsschlüssel
Sendungsart
Aufgabeort Zielort
46-1 Postkarte
Frankfurt Hamburg
47-1 Brief
Wiesbaden Berlin
47-2 Nachnahme Kiel
Hamburg
45-1 Drucksache Leipzig Dresden
50-1 Paket
Chemnitz
Zürich


Für die Tabelle Stempel finden wir keine informative Schlüsselwahl und nehmen die Reihenfolge des Auftretens. Dagegen müssen wir noch angeben, zu welchem Beleg die Stempel gehören.

Stempel

Stempelschlüssel Form Datum
Sendung
1 Einkreis 3.4.1890 46-1
2 Gitter 4.8.1896 47-1
3
Einkreis
5.8.1896
47-1
4
Gitter
15.10.1884 47-2

Gitter 16.10.1884 47-2
6 Einkreis
18.9.1899
45-1
7
Einkreis 7.12.1896 
50-1

Als Schlüssel für die Tabelle Marken wollen wir die  Michelnummer mit Farbbuchstaben  wählen. Dieser ist eindeutig. Hier kann die Information, die wir speichern wollen gleichzeitig als Schlüssel dienen.

Marken

Michelnummer Farbe
46a 
grün
47d
lebhaftlilarot
47c mittelrot
45c hellockerbraun
50d
lebhaftrötlichbraun
48d violettultramarin


Diese Tabelle ist noch nicht mit den anderen Tabellen verknüpft. Wir können den Verweis weder in der Sendungen-Tabelle noch bei der Marken-Tabelle anbringen, weil das Beispiel zeigt, dass die 47d auf 2 Belege zeigen müsste und der Beleg 50-1 auf drei verschiedene Marken. Hier hilft nur noch eine weitere Tabelle, deren Information aus den Schlüsselpaaren besteht, die die wechselseitige Beziehung beschreibt.

Tabelle Sendungen-Marken


Sendungsschl
Michelnr
Anzahl
46-1   46a
1
47-1
47d 1
47-2
47c 2
45-1 45c 1
50-1
50d
1
50-1
48d
1
50-1
47d 1

Es fällt auf, dass das Paar (47-2, 47c) nur einmal genannt ist, weil alle Paare verschieden sein müssen. Beide zusammen bilden den eindeutigen Schlüssel dieser Tabelle. Die Information , dass auf dem Beleg 47-2 zwei gleiche Marken aufgeklebt sind, fällt hier weg. Will man dies vermeiden, so muss als zusätzliche Information  in dieser Tabelle die Anzahl der gleichen Marken  verzeichnet sein: Dies wurde in der Tabelle schon berücksichtigt.

Zu jeder Tabelle gehören mehrere Tabellenfelder  (Bei der Tabelle Stempel die Felder mit den Bezeichnungen Stempelschlüssel, Form, Datum und Sendung). Diese Felder können Werte einer bestimmten Art aufnehmen, z. B. ganze Zahlen, Texte oder Datumsangaben. Man sagt daher, jedem Feld ist ein Datentyp zugeordnet. In unserem Beispiel kommen ganze Zahlen, Datumsangaben und Texte als Datentypen vor.
Es ist sinnvoll, dass alle Felder einer Datenbank verschiedene Bezeichnungen besitzen, damit man die Namen ohne Zusatz der Tabellenbezeichnung benutzen kann. Z. B. werden die Sendungsschlüssel an drei verschiedenen Stellen in der Datenbank verwendet. Sie werden in der Tabelle Sendungen definiert (Sendungsschlüssel), und in den Tabellen Stempel (Sendung) und Sendungen-Marken (Sendungsschl) angewandt.

Wir können zusammenfassend also sagen: In der Datenbank werden die Informationen in Tabellen feldweise gespeichert. Die Tabellen sind über Schlüssel verknüpft. Dies wird deutlich, wenn man die Tabellen und ihre Felder graphisch  darstellt:



 In dem Bild sind die Tabellenbezeichnungen blau und die Felder, die die Tabellenschlüssel definieren, gelb hinterlegt.



Jedes Datenbanksystem hat seine eigenen Möglichkeiten Tabellen mit ihren Feldern und deren Datentypen zu definieren und gibt Unterstützung bei der Eingabe der Werte in diese Tabellen. Bei Access definiert man sich Eingabeformulare, die eine bequeme Eingabe der Daten ermöglichen.

Was kann ich jetzt mit diesen gespeicherten Informationen anfangen?
Zu jedem Datenbanksystem gehört eine Unterstützung zur Auswertung von Anfragen an die Datenbank, die sehr unterschiedlich ausgeprägt sein kann. Im Prinzip läuft es darauf hinaus, dass man Anfragen stellt.
Einige Beispiele aus der oben angeführten Datenbank:
1. Liste alle Belege zeitlich geordnet auf und gebe dabei  den Belegschlüssel, das Datum und  die Sendungsart  an.
2. Suche alle Briefe mit einer 47d  (genauer:  gib alle Sendungsschlüssel aus,  bei denen  die Sendungsart = Brief und  die Michelnummer = 47d ist)
3. Suche alle Belege mit einem Datum zwischen dem 1.10.1889 und dem 31.12.1889.
Diese Suchen sind natürlich überflüssig, wenn man nur 5 Belege in der Datenbank gespeichert hat, aber bei etwa 300 Belegen können sie eine große Hilfe sein.

Noch ein Hinweis: Es ist sehr ratsam, sich vorher gründlich zu überlegen, welche Anfragen gestellt werden sollen.  Bei unserem Datenbankbeispiel ist es sehr kompliziert zu fragen, welche Belege sind mit einer Marke 47 versehen? Wir müssten fragen: gibt es Belege mit 47a oder 47aa oder 47b ..... oder 47e oder 47ea?
Wenn solche Anfragen gewünscht sind, wäre es besser zusätzlich die Michelhauptnummer als Tabellenfeld vorzusehen.

Bei dem Datenbanksystem Access von Microsoft können solche Anfragen mit Hilfe eines entsprechenden Assistenten gestellt werden oder in Berichten zusammengefasst werden.  Bei dem System XAMPP benutzt man eine eigene Formelsprache in der das Beispiel 3 etwa wie folgt aussehen könnte:
SELECT Sendungsschluessel, Datum FROM Sendungen, Stempel  WHERE Sendungsschluessel = Sendung AND Datum  >= "1889-10-01" AND Datum <= "1889-12-31" ORDER BY Datum
(Hinweis: Feldbezeichnungen dürfen keine Umlaute enthalten und die Datumsangaben haben die übliche US-Form)

4. Abbildungen und Erläuterungen zu den Belegen
Für unsere Beispiel-Datenbank  Krone-Adler-Belege scannen wir alle Adress-Seiten der Belege ein und verkleinern sie wenn nötig auf eine  maximale Größe von 750 x 400 Pixel. Das Bild und darunter einen erläuternden Text - etwa so wie oben für die Belege 1-5 beschrieben wird für das Internet vorbereitet. Der Text sollte mit dem Namen des Sendungsschlüssels als Überschrift beginnen z. B. "Beleg 46-1" für den 1. Beleg.
Da die Texte und Bilder von einem Browser im Internet aufgerufen werden sollen, muss das Bild als JPG-Datei und der Text mit Bild als HTML-Datei gespeichert werden. Zur Erzeugung des Bildes kann jede Grafik-Software benutzt werden, zur Erstellung der HTML-Datei ist die frei erhältliche Software Nvu geeigneter als z. B. Word.
Die Dateien müssen alle in einem Ordner gespeichert werden und jeweils den Namen des Sendungsschlüssels enthalten (z.B. text-46-1 und bild-46-1). Dies ist notwendig, weil später aus den Anfragen an die Datenbank, die den Sendungsschlüssel ergeben, per Programm die aufzurufenden HTML-Dateien erzeugbar sein müssen. Man generiert zum Beispiel aus dem Schlüssel "46-1" den Dateinamen "text-"+"46-1"+".html" = "text-46-1.html".


5. Die Datenbank Belege
Mit diesen Informationen sollte die Datenbank-Spezifikation für die Datenbank Belege verständlich sein.  An den unten abgebildeten Beziehungen sieht man, dass noch drei Tabellen hinzugekommen sind: Die Tabelle ganzsachen, die die Beschreibung der Ganzsachen aus der Tabelle Postsendungen herausnimmt und die Tabellen postorte und ndporte für die Suche nach Postorten des Reichspostgebiets bzw. des Norddeutschen Postgebiets. Die Tabelle der Postorte von Elsaß-Lothringen (ElsLoth) ist formal in die Datenbank eingebunden, wird jedoch bei der Auswertung der Belege nicht benötigt.




Beziehungen der Datenbank Belege wie von der Access-Software geliefert


Bei dieser Darstellung ist das definierende Auftreten der Schlüssel mit einer 1 und das angewandte Auftreten mit oo bezeichnet.


6. Was man bei einem Entwurf einer Datenbank beachten sollte
Zunächst ist es selbstverständlich, dass man sich genau überlegen muss,  welche Merkmale man aufnehmen will, weil eine nachträgliche Ergänzung von Merkmalen (Tabellenfeldern) mühsam ist. Bei vielen Merkmalen kommt nur eine sehr begrenzte Zahl von Werten in Frage. Hier kann man durch Vorgabe einer Werteliste eine ganze Menge von Eingabetexten einsparen und zudem Tippfehler vermeiden.  Man muss nur darauf achten, dass die Werteliste vollständig ist. Bei Auswahltexten ist es deshalb oft sinnvoll, wenn als letztes der Wert 'sonstiges' mit aufgenommen wird,  falls hinterher doch noch  andere Werte auftreten.  Es ist aber auch nicht  sehr aufwendig, in einer Werteliste einen Wert nachzutragen,  den man zunächst vergessen hat. Wichtig ist, dass die Werteliste alternative, sich gegenseitig ausschließende Werte enthält.
Ein Beispiel aus der Tabelle Stempel: Ein Merkmal (Feld) hat die Bezeichnung Sonderform mit der Werteliste
Klaucke, Bahnpost,  Rohrpost, Franco, sonst
Für einen Stempel ist jeweils nur ein Wert des Feldes Sonderform auszuwählen.  Hier auch die nachverwendeten Altdeutschland-Stempel (Feuser) mit aufzunehmen wäre ein Fehler, da sich dort z. B. auch Bahnpost- oder Franco-Stempel finden lassen. Dieses Merkmal muss also extra vermerkt werden.
Will man aus einer Anzahl von Begriffen mehrere auswählen können, so ist jeder Begriff als eigenes Feld anzugeben, wie das in der Tabelle Postsendungen mit den Feldern Einschreiben, Rueckschein, Eilboten, Nachnahme, Wertsendung, Zustellungsurkunde und Rohrpost gemacht worden ist. Alle diese Merkmale einer Sendung können in Kombination auftreten - nicht aber in jeder.

7. Datenbankpflege
Bei der Eingabe der Werte in eine Datenbank können viele Fehler auftreten. Wie kann man sie einschränken?
1. Wie schon erwähnt, kann man Texte als Werte bei der Definition vorgeben, und bei der Eingabe eine Auswahl treffen statt sie jedes mal einzugeben (Beispiel s. oben)
2. Man kann logische Regeln  aufstellen, die eine Einschränkung der Wertemenge bilden, (Beispiel: Eine Regel, die nur Michelhauptnummern zwischen 1 und 82 zulässt.) oder unsinnige Kombinationen von Eingaben verbieten. (Beispiel: Wählt man bei PortoPrivilegien den Wert frei lt. Avers aus, so sollte die AversNr nicht 0 sein.)
3. Man kann in dem Datenbanksystem vorgeben, welche Eingaben verpflichtend sind, damit diese nicht vergessen werden.
4. Nach der Eingabe kann man eine Tabelle nach jedem Merkmal sortieren. Hier fallen falsche Angaben oft bei einer Durchsicht des sortierten Merkmals auf (Beispiel: falsch geschriebene Städtenamen, wenn der Name mehrmals auftaucht.)
5. Einfache Berichte können unsinnige Kombinationen aufdecken: (Beispiel: fehleranfällig ist die Eingabe von Datumsangaben. Ein Bericht, in dem man  Datum  und Michelnummern der Marken  ausgibt, kann grobe Datumsfehler offenlegen. )
6. Lässt man sich alle Belege zeitlich geordnet anzeigen, so kann man   an den Stempeln auf den Belegen sehen, ob die Belege in richtiger zeitlicher Anordnung angezeigt werden. So können auch feinere Datumsfehler entdeckt werden.
7. Schließlich kann man gezielt nach einzelnen Belegen suchen, die neu in die Sammlung aufgenommen wurden.
Es ist ratsam jede kleine Menge von Belegen, die man neu aufgenommen hat, sorgfältig zu testen.

Es bedarf keiner weiteren Erläuterung, dass eine Datenbank nur so lange brauchbar ist, wie sie der zugehörigen Sammlung entspricht.

8. Abbildung der lokalen Datenbank auf die Gegebenheiten des Servers
Für mich hat sich als lokales Datenbank-System Access von Microsoft als sehr brauchbares Instrument erwiesen. Die Definition der Tabellen der Datenbank, ihrer Beziehungen, die Eingabe der Werte und die Überwachung der Korrektheit werden auf angenehme Weise unterstützt. Leider ist diese Software auf die Gegebenheiten eines PC's beschränkt. Auf den Servern der großen Provider laufen andere Softwaresysteme. Verbreitet ist das als freie Software erhältliche Datenbanksystem XAMPP, das sowohl auf dem eigenen PC mit eigenständiger Prozess-Steuerung als auch auf den üblichen Servern läuft, und Schnittstellen besitzt, die einen Zugriff von Seiten der Internet-Programmierung erlaubt.
Zunächst soll die Abbildung der lokalen Datenbank auf das System XAMPP beschrieben werden. Da dieses System ebenso auf dem eigenen PC abläuft, kann dieser Vorgang getestet werden, ohne den Server überhaupt zu beachten.
Zunächst kann ebenfalls Menü-gesteuert die Definition der Datenbank mit identischen Tabellen und Feldbezeichnungen in XAMPP wiederholt werden. Die festzulegenden Datentypen müssen so gewählt werden, dass sie die Werte der Access-Datenbank aufnehmen können. Eine Typgleichheit wird nicht erreichbar sein.
Da wir annehmen wollen, dass die Werte in der Access-Datenbank korrekt sind, erübrigen sich aufwendige Tests der Werte.
Nach der Definition der lokalen XAMPP-Datenbank kann der Transport der Inhalte sehr einfach erfolgen.
Access besitzt die Möglichkeit die Inhalte als Texte tabellenweise mit festgelegten Trennzeichen zu exportieren. XAMPP kann diese Textdateien  tabellenweise importieren und so die Inhalte der Tabellen übernehmen. Dabei muss der richtige Zeichencode angegeben werden, damit die Umlaute richtig übertragen werden, und die richtige Umwandlung der Datumsangaben.  Während Access mit der deutschen Datumsform TT.MM.JJJJ arbeitet, benötigt XAMPP die amerikanische Form JJJJ-MM-TT. Diese Umwandlung liefert Access bei dem Export.
Der Transport dieser XAMPP Datenbank auf die Datenbank auf dem Server ist einfach. Zunächst muss natürlich mit dem Provider  die Anlage einer Datenbank, Name und Zugriffs-Daten und -Rechte vereinbart werden. Dies erfolgt in der Regel nicht kostenfrei.
Dann kann man die lokale Datenbank (Struktur + Inhalte der Tabellen) in eine Datei exportieren und diese dann auf dem Server mit der dort vorgegebenen Bezeichnung importieren.
Damit hat man jetzt die Datenbank in drei Versionen, zwei auf dem eigenen PC und eine auf dem Server des Providers. Während die Access-Datenbank jeweils bei Neueingängen von Belegen ergänzt wird, werden die beiden XAMPP-Datenbanken jeweils durch Import vollständig neu mit Werten überschrieben. Ändert man die Struktur der Access-Datenbank muss die lokale XAMPP Datenbank ebenfalls von Hand in ihrer Struktur angepasst werden. Bei dem Export auf die externe XAMPP-Datenbank wird die Definition der Tabellen mit exportiert und muss daher nicht wieder von Hand geändert werden.

9. Anfragen an die XAMPP-Datenbank
Wenn wir  auf eine Seite im Internet mit Hilfe eines Browsers (z. B. Internet Explorer oder Mozilla Firefox) zugreifen, so holt sich der Browser im einfachsten Fall den Text einer Seite, die als HTML-Text vorliegt, vom Server, interpretiert sie und gibt das Ergebnis auf dem Bildschirm des PC's aus. HTML ist eine Sprache, bei der der auszugebende Text mit Kommandos durchsetzt ist, die angeben, was damit zu machen ist. Es können Bilder angezeigt, Tabellen definiert und es kann auf weitere Seiten verwiesen werden. Zusätzlich können Eingabefelder definiert und von der Eingabe abhängig weitere Handlungen ausgeführt werden. Die Verarbeitung erfolgt auf dem eigenen PC. Wenn man die Eingaben genauer testen und verändern will, kann dies nicht direkt in HTML programmiert werden. Dafür benutzt man die Programmiersprache JavaScript.  Auch deren Programmteile, die in den HTML-Text eingebettet werden, laufen auf dem PC ab.  Damit ist der normale Ablauf bei der Benutzung des Internets grob beschrieben.
Wir wollen jedoch den Server des Providers bewegen, eine Anfrage an die dort gespeicherte Datenbank zu stellen. Dies geschieht mit einem  in der Programmiersprache PHP geschriebenen Programm. Der Server, der den HTML-Text für den Browser bereitstellt, interpretiert vor dieser Bereitstellung den enthaltenen PHP-Text und macht daraus einen HTML-Text, der dann von dem lokalen Browser auf dem PC bearbeitet wird.
Dieser PHP-Text kann jetzt so gestaltet sein, dass er einen Datenbankaufruf mit einer Datenbankanfrage als Text durchführt und das Ergebnis als HTML-Text darstellt. Die Datenbankanfrage muss in einer Formelsprache MySQL formuliert sein, die das Datenbanksystem XAMPP auf dem Server  interpretiert .
Der Ablauf ist jetzt folgender:




Zunächst wird der HTML-Text, der das Anfrageformular beinhaltet vom Server zum Browser geleitet, der es auf dem Bildschirm ausgibt. Der Benutzer füllt das Formular aus und schickt es ab. Der Browser kontrolliert über die JavaScript-Programmteile die Eingabe und schickt die Anfragedaten  an den Server mit der Aufforderung das Programm erneut zu durchlaufen. Da jetzt eine Eingabe für den Server vom Browser angeboten wird, durchläuft auf dem Server jetzt das PHP-Programm und macht aus den Eingabedaten eine entsprechende MySQL Anfrage für die Datenbank, ruft diese auf und nimmt das Ergebnis der Datenbank entgegen, bereitet es auf und  liefert das Ergebnis an den Browser ab.
Dieses Ergebnis besteht in einem vom Browser auszuführenden menugesteuerten Ausgabe von all den Belegen, die das Datenbanksystem als Antwort auf die Anfrage ausgewählt hat.
Bei jeder vom Benutzer neu gestellten Anfrage wiederholt sich dieser Vorgang.

Dieses gesamte Programm mit seinen HTML-, JavaScript- und PHP-Teilen, das aus den Eingaben des Benutzers einen MySQL-Text erzeugt, muss selbst programmiert werden. Die Programmtext-Erstellung wird durch den frei erhältlichen Texteditor Weaverslave unterstützt. Bei der Programmierung treten natürlich Fehler auf. Jetzt ist es sehr hilfreich, dass auf dem lokalen Rechner mit Hilfe des XAMPP-Systems ein Prozess gestartet werden kann, der sich für den Browser wie ein fremder Server verhält. Das Programm kann also vollständig getestet werden, ohne den Server zu belästigen. Nur die Namen der Aufrufe der Internet-Seite und die Bezeichnungen der aufzurufenden Datenbank und der entsprechenden Passwörter sind natürlich unterschiedlich.

10. Speicherung der Bilder und der Texte auf dem Server
Als Ergebnis sollen die Bilder der Belege mit ihren erläuternden Texten gezeigt werden. Daher müssen diese Dateien auf dem Server gespeichert sein - ebenso wie die Internet-Seiten der Homepage. Für den Transport dieser Dateien auf den Server benutzt man das File-Transport-Protokoll kurz FTP. Ich benutze die zum Firefox zusätzlich gelieferte Software FireFTP, die einen bequemen menuegesteuerten Dateitransfer gewährleistet. Anders als die Datenbank, die jedesmal bei einer Ergänzung komplett transferiert wird, werden die neuen und geänderten Bild- und Textdateien nur ergänzt. Die Übertragungsrate der Daten ist zu gering. Eine komplette Überspielung von  z. B. 500 Bilddateien würde zu lange dauern. Man muss daher die neuen und geänderten Dateien
auf dem eigenen Rechner getrennt vom Bestand speichern.

11. Hardware, Software, Literatur und Provider-Vertrag
Hardware:
handelsüblicher PC mit Scanner
Software:
Betriebssystem Microsoft Windows 7 Professional 64 Bit (enthält Simulator für XP-Software)
Datenbanksystem Microsoft Access 2010
Browser Firefox mit FireFTP
Datenbanksystem XAMPP
Editor NVU zur Erstellung der Beschreibungen der Belege (HTML-Seiten)
Editor Weaverslave zur Erstellung der Programme in HTML, Javascript und PHP
Grafik-Software zur Bearbeitung der eingescannten Belege: MIcrografix Picture Publisher 10
Literatur:
Jeweils aktuelle Bücher zu Access, HTML, Javascript, PHP und MySQL. In den Büchern zu Access und MySQL erhält man gleichzeitig das notwendige Grundwissen über Datenbanken. Oft wird HTML+Javascript bzw. PHP+MySQL in einem Buch abgehandelt.
Provider-Vertrag:
Mit einem Provider ist ein Vertrag für die Nutzung einer Homepage und einer Datenbank abzuschließen.

Ergänzung 2020:
Ein neuer PC mit Windows 10 brachte folgende Änderungen:
Firefox enthält nicht mehr FireFTP: Filezilla wurde ergänzt.
XAMPP und Windows 10 wollen nicht ohne weiteres zusammenarbeiten. Meine Lösung: Installation von XAMPP auf einer anderen logischen Festplatte.
Die Grafiksoftware wurde durch paint.net ersetzt.
Ein neuer Scanner benötigt andere Farbkorrekturen mit anderen Schwächen.