Entwicklung einer Datenbank zur Verwaltung der Bibliothek des

Werbung
Entwicklung einer Datenbank
zur Verwaltung der
Bibliothek
des Instituts für Mathematik
Studienarbeit
von
Marcus Möhle
Matrikelnummer: 1686164
und
Jan Opitz
Matrikelnummer: 1686054
im Rahmen des Studienganges
Mathematik mit Studienrichtung Informatik
an der Universität Hannover
Betreuer:
Prof. Dr. Udo Lipeck
Institut für Informatik
Hannover, den 8. Februar 1999
2
Inhaltsverzeichnis
1. Einleitung.......................................................................................................5
1.1 Beschreibung der Bibliothek.....................................................................5
1.2 Aufgabenstellung......................................................................................6
1.3 Benutzte Programme ................................................................................7
1.3.1 Der Server .........................................................................................7
1.3.2 Die Clients.........................................................................................7
1.3.3 Das Entwicklungssystem....................................................................7
1.3.4 Der Webserver......................................................................................... 13
2. Entwurf der Datenbank................................................................................. 15
2.1 Analyse der vorhandenen Daten.............................................................. 15
2.1.1 Der Gesamtkatalog .......................................................................... 15
2.1.2 Die Ausleihbibliothek ...................................................................... 17
2.1.3 Analyse der Adressdaten.................................................................. 18
2.2 Erstellung eines ER-Modells................................................................... 19
2.3 Umsetzung des ER-Schemas in ein Relationen-Schemas ........................ 22
3. Benutzerhandbuch der Programme ............................................................... 27
3.1 Systemanforderungen und Hinweise zur Installation............................... 27
3.1.1 Der Server ....................................................................................... 27
3.1.2 Die Clients....................................................................................... 30
3.2 Die Konvertierungsprogramme............................................................... 31
3.2.1 Der Bibliothekskonverter ................................................................. 32
3.2.2 Der Ausleihkonverter....................................................................... 33
3.3 Die Bestandsverwaltung ......................................................................... 34
3.4 Das Leihprogramm ................................................................................. 36
3.5 Das Programm zum löschen eines Entleihers .......................................... 39
3.6 Das Mahnprogramm ............................................................................... 40
4. Entwicklung und Realisierung der Programme ............................................. 41
4.1 Benötigte Programme ............................................................................. 41
4.2 Benutzerschnittstellen und Funktionsbeschreibung ................................. 41
4.3 Realisierung der Programme................................................................... 43
4.3.1 Die Bestandsverwaltung................................................................... 43
4.3.2 Das Leihprogramm .......................................................................... 45
3
4.3.3 Das „Entleiher löschen“ Programm .................................................. 46
4.3.4 Das Mahnprogramm ........................................................................ 47
5. Entwurf der WWW-Schnittstelle .................................................................. 49
5.1 Die Benutzerschnittstelle ........................................................................ 49
5.2 Realisierung............................................................................................ 51
5.2.1 Die Standardsuche ........................................................................... 51
5.2.2 Die Sachgebietssuche....................................................................... 58
6. Ausblicke und Anmerkungen ....................................................................... 62
6.1 Mögliche Erweiterungen der Datenbank und Schnittstellen..................... 62
6.2 Erfahrungen mit dem Microsoft SQL-Server 6.5..................................... 62
Anhang A: Beschreibung der einzelnen Prozeduren ......................................... 64
A.1 Die Konvertierungsprogramme ............................................................. 64
A.1.1 Der Bibliothekskonverter (main.pas) ............................................... 64
A.1.2 Der Ausleihkonverter (mainkonv.pas) ............................................. 64
A.3 Die Bibliotheksverwaltung..................................................................... 65
A.3.1 (datamodule1.pas)........................................................................... 65
A.3.2 (bibverw1.pas) ................................................................................ 66
A.4 Das Leihprogramm ................................................................................ 68
A.4.1 (main.pas) ....................................................................................... 68
A.4.2 (cref.pas)......................................................................................... 69
A.5 Das „Entleiher löschen“ Programm (main.pas) ...................................... 69
A.6 Das Mahnprogramm (Mahnen.pas) ........................................................ 70
Abbildungsverzeichnis ..................................................................................... 71
Literaturverzeichnis.......................................................................................... 72
4
1. Einleitung
In diesem Kapitel wird eine Übersicht über die Bibliothek des Instituts für
Mathematik gegeben. Weiterhin soll die Aufgabenstellung der Studienarbeit dargestellt werden sowie ein Überblick der zur Realisierung benutzten Programme
gegeben werden.
1.1 Beschreibung der Bibliothek
Die Bibliothek des Instituts für Mathematik besteht aus drei Teilen:
• Ausleihbibliothek
Dies ist der für jeden Studierenden zugängliche Bereich der Bibliothek.
Hier befinden sich Standardwerke und Lehrbücher die während des Studiums
für Seminare und zum Anfertigen von Arbeiten benötigt werden.
• Präsenzbibliothek
Dieser Bereich der Bibliothek ist nur für Mitarbeiter vorgesehen. Studenten
können sich hier nach Absprache während ihrer Diplomarbeit ebenfalls Bücher entleihen.
• Kongreßbibliothek
Hier werden Kongreßberichte nach Jahrgängen sortiert aufbewahrt.
Der Gesamtbestand beläuft sich auf ca. 26000 Bücher und wächst jährlich um
etwa 300 Stück an. Zur Zeit werden lediglich die Ausleihen der für Studenten
zugänglichen Ausleihbibliothek erfaßt. In den anderen Teilen der Bibliothek tragen sich die Entleiher selbständig auf der zum Buch gehörigen Stellvertreterkarte
ein.
Zur Zeit werden zwei Programme zur Eingabe der Verwaltungsdaten des Buchbestandes eingesetzt. Die Software wurde Anfang der siebziger Jahre von Studenten unter Leitung von Herrn Dr. Heinermann entwickelt. Als Programmiersprache kam damals FORTRAN zum Einsatz. In dem einen Programm werden
neue Bücher erfaßt. Dieses Programm erstellt eine Textdatei mit der einmal jährlich der Gesamtbestand aktualisiert wird. Das zweite Programm dient der Erfassung von Leihvorgängen in der Ausleihbibliothek. Dieses Programm erzeugt
ebenfalls eine Textdatei mit der jeweils zum Mahnen die Ausleihdaten aktuali-
5
siert werden. Das Aktualisieren der Dateien erfolgt mit der Hilfe von
Shellskripten die mehrere FORTRAN-Programme, die leider nicht dokumentiert
wurden, aufrufen. Auf dieselbe Art werden die Mahnungen und die gedruckten
Kataloge, die in den Bibliothek ausliegen, erstellt. Folgende Kataloge liegen in
den Bibliothek zur Recherche:
• Verfasserkatalog
Der Bestand der Bibliothek nach Verfassern sortiert.
• Inventarnummernkatalog
Der Bestand der Bibliothek nach Inventarnummern sortiert.
• Sachgebietskatalog
Der Bestand der Bibliothek nach Sachgebieten sortiert.
Auf Grund der damaligen Knappheit an Speicherplatz wurden Datumsinformationen nur zweistellig gespeichert. Dieses führt heute zum bekannten Jahr
2000 Problem. Da die Programme nicht mehr den Ansprüchen an eine moderne
Benutzerschnittstelle entsprechen, bietet es sich an, die Software neu zu entwickeln, anstatt die alten Programme aufwendig anzupassen.
1.2 Aufgabenstellung
Im Rahmen der Studienarbeit soll eine neue Software in Client/Serverarchitektur zur Verwaltung der Bibliothek entwickelt werden. Zum einen
soll hiermit der Buchbestand erfaßt und aktualisiert werden. Zum anderen sollen
nun auch die Ausleihvorgänge in den beiden anderen Bibliotheksteilen erfaßt
werden. Dazu ist es nötig, unter Berücksichtigung der vorhandenen Daten ein
neues Datenmodell zu entwerfen. Dieses soll mit Hilfe eines relationalen Datenbanksystems implementiert werden. Weiterhin müssen Programme zur Konvertierung der Daten entwickelt werden. Als Ersatz für die alten Kataloge soll eine
WWW-Recherche angeboten werden.
6
1.3 Benutzte Programme
1.3.1 Der Server
Auf dem Server soll das Betriebssystem Microsoft Windows NT 4.0 Server
(Service Release 4), das Datenbankmanagementsystem Microsoft SQL-Server
6.50.252 (Service Release 4) sowie der WWW-Server Microsoft Internet Information Server 4.0 (IIS) zum Einsatz kommen.
Für die Darstellung interaktiver Inhalte, also zur Recherche über die WWWSchnittstelle, kommen Active-Server-Pages (ASP) zum Einsatz. Dies ist eine von
Microsoft entwickelte Skriptingtechnologie, die mit CGI-Skripten vergleichbar
ist. Sie werden jedoch wesentlich schneller als CGI-Skripte ausgeführt, so daß
sie in einer Windows-Serverumgebung den Vorzug gegenüber CGI erhalten haben.
1.3.2 Die Clients
Auf den Clients wird eine Win32-Umgebung benötigt (Windows 3.11 mit der
32Bit-Erweiterung Win32s, Windows 9x oder Windows NT) sowie die ODBCSchnittstelle (Open Database Connection) für den Zugriff auf den Server. Zur
Recherche über das WWW wird darüber hinaus ein beliebiger WWW-Browser
benötigt.
1.3.3 Das Entwicklungssystem
Zur Entwicklung der Programme kommt das Entwicklungssystem Delphi 3.02
Client/Server von Borland zum Einsatz. Es nutzt eine aus Turbo Pascal weiterentwickelte Programmiersprache namens Object-Pascal. Das IDE (Integrated
Development Environment / Integrierte Entwickungsumgebung) von Delphi
setzt sich aus einem Fenster für den Programmquelltext der einzelnen Units, den
einzelnen Formularen sowie dem Objektinspektor zusammen. Die Eigenschaften
7
der Objekte können zur Entwicklungszeit im Objektinspektor eingestellt und
geändert werden (siehe Abb. 1).
Abb. 1: Die Delphi-Oberfläche
1: Der Objektinspektor
2: Der Quelltexteditor
3: Ein Formular
4: Die Komponentensammlung
Das Entwicklungssystem besteht aus einer Entwicklungsumgebung, in der die
Formulare durch Hinzufügen von Objekten aus der Komponentensammlung
erstellt werden können. Es gibt sichtbare Formulare, sie sind das, was der
Benutzter später als Fenster sieht. Außerdem gibt es unsichtbare Formulare, in
denen programminterne Objekte, wie zum Beispiel die Datenbankobjekte (s.u.),
abgelegt werden. Zu jedem Formular gehört eine eigene Unit. In dieser sind die
Ereignisbehandlungsroutinen zu allen im Formular enthaltenen Komponenten
(s.u.) abgelegt. Weiterhin gehört ein Datenbankexplorer zum Entwickungssystem, mit dessen Hilfe man sich den Inhalt beliebiger Datenbanken, die über
8
die Windows-ODBC-Schnittstelle ansprechbar sind, anzeigen lassen kann. In
ihm kann man SQL Anfragen testen, bevor man sie im Programm verwendet
(siehe Abb. 2).
Abb. 2: Der SQL-Explorer
Die in der Komponentensammlung mitgelieferten Objekte bieten alle Grundfunktionen. Die vom Programmierer gewünschte Funktionalität wird durch
Ereignisbehandlungsroutinen erreicht. Jedes Objekt reagiert dabei auf eine zu
ihm passende Menge von Ereignissen, ein Editorobjekt beispielsweise auf einen
Tastendruck. Wenn nun der Programmierer eine spezielle Reaktion auf diesen
Tastendruck erreichen möchte, so muß er diese in der zu diesem Ereignis
gehörenden Routine ausprogrammieren.
Die im Rahmen der Studienarbeit verwendeten Komponenten stammen aus den
drei folgenden Kategorien:
9
Die Steuerungs-Objekte von Delphi:
Delphi bringt alle benötigten Steuerelemente für die Programmsteuerung durch
den Benutzer mit. Ein Fenster mit funktionierendem Minimize, Maximize und
Close-Button ist bereits vorhanden. Die Buttons sind ebenfalls vorhanden, man
muß sie nur noch mit einer Beschriftung versehen und ihr OnClick-Ereignis ausprogrammieren, zumeist mit dem Aufruf einer weiteren Funktion.
Darüber hinaus bietet Delphi auch noch Objekte wie Menüleisten und Popupmenüs, die jedoch im Rahmen der Studienarbeit keine Verwendung gefunden
haben.
Die Eingabe-Objekte von Delphi:
Delphi bietet alle erdenklichen Eingabeobjekte, vom Label, also einfach angezeigten Text, bis hin zum mehrzeiligen Editor. Darüber hinaus sind natürlich
auch RadioButton, CheckBoxes und alle anderen von graphischen Oberflächen
bekannten Eingabeelemente vorhanden. In der Studienarbeit werden vor allem
einfache Objekte, wie zum Beispiel das TEdit-Objekt, ein einzeiliger Editor,
verwendet. Zusätzlich kommen noch Eingabe-Objekte zum Einsatz, die direkt
mit der Datenbank verbunden werden, und mit deren Hilfe sich der aktuelle
Datensatz anzeigen bzw. bearbeiten läßt.
Die Datenbank-Objekte von Delphi:
Borland liefert mit Delphi die „Borland Database Engine“ (BDE) aus, eine von
Borland entwickelte Lösung zur Anbindung der Anwendungen an die ODBCSchnittstelle von Windows. In ihr wird zum Beispiel das Ergebnis von SQLAnfragen zwischengespeichert. Zusätzlich kann die BDE bei Datenbanken, die
selbst nicht über eine Transaktionskontrolle verfügen, diese übernehmen. Der
Zugriffsweg von Delphi-Programmen auf auf den SQL-Server hat also folgendes
Aussehen:
10
Anwendungsprogramm
Borland Database Engine
ODBC - Schnittstelle
Microsoft SQL Server 6.5
Abb. 3: Zugriffsweg vom Anwendungsprogramm auf den SQL-Server
Zum Lieferumfang von Delphi gehören Objekte, die dem Zugriff auf Datenbanken dienen. Hier sind vor allem das Objekt TDataBase sowie die Objekte
TTable und TQuerySQL zu nennen.
Das TDataBase-Objekt bildet die Verbindung zur Datenbank. Über dieses
Objekt kann eine Transaktionskontrolle erfolgen (StartTransaction, Rollback,
Commit). Wird diese Möglichkeit nicht genutzt, so erfolgt jede Änderung an der
Datenbank von Delphi aus als einzelne Transaktion.
Die Objekte TTable und TQuerySQL bilden die Schnittstelle zur Abfrage der
Datenbank, wobei TTable jeweils genau eine Tabelle der Datenbank nachbildet,
TQuerySQL das Ergebnis einer SQL-Anfrage liefert. Bei relationalen Datenbanken erfolgt die Abfrage der Tabellen bei TTable natürlich auch mit Hilfe von
SQL-Befehlen, diese sind jedoch für den Entwickler nicht sichtbar.
Es können beliebig viele Instanzen der Objekte generiert werden. Bei TTable
wird üblicherweise für jede genutzt Tabelle eine Instanz generiert, die bereits zur
Entwicklungszeit des Programms fest mit einer Tabelle verbunden wird (siehe
11
Abb. 4). Für die wichtigsten SQL-Anfragen werden ebenfalls einzelne Instanzen
von TQuerySQL generiert, für einzelne Updates oder ähnliches verwendet man
eine zusätzliche Instanz, der man zur Laufzeit den jeweils benötigten SQL-String
zuweist.
Abb. 4: Ein TTable-Objekt, verbunden mit der Tabelle „Buch“ in der Datenbank „Institutsbibliothek“
Bei beiden Objekten steht das Resultat der SQL-Abfrage, bzw. die Tabelle, nach
einem Aufruf der Methode Open zur Verfügung. Mit Hilfe der Methoden Prior
und Next man kann darin vor- und zurückgehen. Änderungen an den Tabellen
schreibt Delphi sofort in die Datenbank zurück. Wenn die Transaktionkontrolle
vom Programm selbst übernommen wurde, ist danach allerdings noch ein
Commit nötig.
Zugriff auf die einzelnen Felder des Ergebnisses hat man über die Methoden
FieldByName(Name:String) oder FieldByNumber(Number:Integer). Wurde das
Objekt bereits während der Programmentwicklung fest mit einer Tabelle oder
einer SQL-Anfrage verbunden, so fragt Delphi auf Wunsch ein Testergebnis an
12
und generiert für die zurückgelieferten Felder eigene Instanzen des TFieldObjekts, so daß ein direkter Zugriff auf die Felder möglich wird. Dies erhöht in
erster Linie die Lesbarkeit des Quelltextes und sorgt dafür, daß man nicht versehentlich auf nicht vorhandene Felder zugreift.
1.3.4 Der Webserver
Der Microsoft Internet Information Server 4.0 (IIS 4.0) ist ein Bestandteil des
Option Pack 4 für Windows NT 4. Dieses Packet ist frei verfügbar und von der
Microsoft Homepage zu beziehen. Der Webservers wir durch die Microsoft
Management Konsole gesteuert (siehe Abb. 5 ).
Abb. 5: Die Microsoft Management Konsole
Standardmäßig wir die Datei „default.htm“ bzw. „default.asp“ beim Aufruf des
Webservers an die Clients geschickt. Die Active Server Pages (ASP) bestehen
aus HTML-Code mit eingebettetem VisualBasic-Script (VB-Script) oder JavaScript.
13
An den Dateiendung „.ASP“ erkennt der IIS, das die Datei auf mögliche SkriptKomponenten zu durchsuchen ist. Die jeweilig genutze Script-Sprache wird in
der ersten Zeile des ASP-Dokuments festgelegt.
<%@ Language=VBScript %>
Innerhalb einer ASP werden die VB-Script-Teile durch die Trennzeichen „<%“
und „%>“ vom eigentlichen HTML-Code getrennt. Der HTML-Code wird hierbei direkt an den Webbrowser weitergeleitet. Nur die Skripte werden vom IIS
ausgeführt. In diese Skript-Abschnitte kann weiterer HTML-Code eingefügt
werden, der bei bestimmten Laufzeitbedingungen (IF und CASE-Anweisungen)
auch an der Browser weitergereicht werden kann.
An den Webbrowser wird also nur reiner HTML-Code geschickt. Es ist hiermit
möglich, auch mit Browsern die nicht Java, Javascript oder VBScript beherrschen, diese Webseiten zu besuchen.
In VBScript gibt es nur einen Variablentyp (Variant), der automatisch den benötigten Datentyp erkennt. Man kann so Integer, Strings oder ganze Arrays in
Variablen speichern. Mit diesen Variablen läßt sich rechnen oder Stringverarbeitung durchführen. Informationen die mittels der Method POST an eine
ASP-Dokument weitergereicht wurde, kann mit einem REQUEST.FORM abgefragt und z.B. in Variablen gespeichert werden.
Außerdem können Datenbankabfragen über die ODBC-Schnittstelle durchgeführt werden (siehe 5.2.1). Das Anfrageergebnis wird in einer Liste zurückgegeben, die man über eine Variable ansprechen kann. In dieser Liste kann man
mit dem MOVENEXT bzw. MOVEPREVIOUS durchlaufen.
Nähere Erläuterungen zum Quelltext sind noch unter 5.2 zu finden.
14
2. Entwurf der Datenbank
In diesem Kapitel wird zunächst eine Analyse der schon im Computer erfaßten
Daten der Bibliothek erstellt. Unter Berücksichtigung dieser Daten wird ein
Entity-Relationship-Modell für eine neue Datenbank entwickelt sowie ein dazugehöriges Relationen-Modell erstellt.
2.1 Analyse der vorhandenen Daten
2.1.1 Der Gesamtkatalog
Der Gesamtkatalog (PCB_xx) enthält alle erfaßten Daten zum Bestand der
Bibliothek. Erfaßt wurden mindestens Verfasser/Titel, Standort und Inventarnummer. Er besteht aus 103 Zeichen langen Zeilen, die den folgenden Aufbau
besitzen:
Spalten:
01 – 56
57 – 58
59 – 61
62 – 65
66 – 85
86 – 95
96
97
98
99 – 103
Inhalt:
Verfasser, Titel
Auflagenzahl
Erscheinungsjahr (2-3stellig)
Seitenzahl
5x 4stellige Sachgebiete
ISBN
Institutskennzeichen: M
Standort
Leer
Inventarnummer
Der Eintrag „Verfasser, Titel“ ist nach den alten Unterlagen wie folgt zu interpretieren (Quelle: Originaldokumentation der Bibliotheksverwaltung, Stand
1988):
15
Verfasser mit nachgestellten Anfangsbuchstaben der Vornamen ohne
Punkte für Abkürzungen,
bei mehreren Verfassern nur deren Nachnamen,
bei mehr als 3 Verfassern nur höchstens 3 nennen mit „ua“ oder
„et al“ ,
keine Verwendung von Kommas im Namensteil, das erste Komma
schließt den Namensteil ab!
nach diesem Abschlußkomma ein Leerzeichen,
dann folgt bis Spalte 56 der Titel des Buches, ggf. unter Verwendung möglichst verständlicher Abkürzungen.
Leider wurde versäumt, dieses Eingabeformat zu erzwingen, so daß ein Teil der
Datensätze nicht dieser Vorgabe entspricht und Probleme bei der Konvertierung
bereitet.
Beispiel einer korrekten Autor-/Titeleintrags:
VARADARAJAN V S, GEOMETRY OF QUANTUM THEORY
Autor: Varadarajan V S
Titel: Geometry of quantum theory
Beispiel für einen falschen Eintrag:
CARRIER, KROOK,PEARSON,FUNCT OF A COMPLEX VARIABLE
Eine Umsetzung entsprechend der Dokumentation ergibt:
Autor: Carrier
Titel: Krook,Pearson,Funct of a complex variable
Da in der Datenbank durchaus Titel, die ein Komma enthalten, vorkommen, ist
es nicht möglich, solche Einträge automatisch zu erkennen.
Als Standort sind die folgenden Kennziffern möglich:
Kennziffer:
1 oder Leerzeichen
2
3
4
Standort:
Präsenzbibliothek
Ausleihbibliothek
unbenutzt
Großformate der Präsenzbibliothek
16
5
6
7
8
9
=
„
A
B bis Z
Dauerentleihungen
Lexika und Nachschlagewerke allgemein
Seminarberichte
Kongreßberichte
Verweiszeilen
Standexemplar, d.h. nicht entleihbar
Standexemplar Großformat
Angewandte Mathematik
Aufgliederung des Standortes „Lex“
Die Verweiszeilen enthalten alternative Titel oder zusätzliche Autoren zu einem
Buch. Diese Verweiszeilen sind bisher nötig gewesen, um das Buch an verschiedenen Stellen in den alphabethisch sortierten Katalogen erscheinen zu lassen.
Die Angabe des Erscheinungsjahres erfolgt normalerweise zweistellig, bei
älteren Büchern dreistellig, so wird z.B. aus 1985 der Eintrag 85, aus 1885 der
Eintrag 885.
2.1.2 Die Ausleihbibliothek
Die Datei (PCBEB_xxx) enthält die Ausleihdaten zum Bestand der Ausleihbibliothek. Da die Bearbeiter keinen Zugriff auf den obigen Gesamtkatalog
hatten, enthält die Datei (PCBEB_xxx) zusätzlich noch einmal den Eintrag Verfasser/Titel. Sie besteht aus 109 Zeichen langen Zeilen, die den folgenden
Aufbau besitzen:
Spalten:
01 – 56
57 – 63
64
65
66 – 73
74 – 81
82 – 89
90 – 109
Inhalt:
Verfasser, Titel
Inventarnummer
leer
Standort
Ausleihdatum
letztes Ansprechdatum
Mahndatum
Crossreferenz
17
Der Eintrag „Verfasser, Titel“ entspricht dem des Gesamtkatalogs. Die „Crossreferenz“ ist ein Namenskürzel, durch das der Ausleiher identifiziert wird. In
dem Eintrag „letztes Ansprechdatum“ wird vermerkt, wann die letzte Änderung
an dem Datensatz erfolgte. So läßt sich zum Beispiel erkennen, wann ein Buch
zurückgegeben wurde.
2.1.3 Analyse der Adressdaten
Die Adressen (PCBEADR) enthält die Entleiherdaten. Sie besteht aus 96
Zeichen langen Zeilen, die den folgenden Aufbau besitzen:
Spalten:
01 – 20
21 – 22
23 – 26
27 – 51
52 – 56
57 – 71
72 – 96
Inhalt:
Crossreferenz
Aufnahmemonat
Aufnahmejahr
(Titel), Vorname, Name
PLZ
Ort
Straße, Hausnummer
Alternativ enthalten die Stellen 52 ff. bei Mitarbeitern den Eintrag „Universität
Hannover“ mit dem Zusatz „Institut für ...“.
18
2.2 Erstellung eines ER-Modells
Verweisnummer
Verweis
Titel
geh. zu
Obergebiet
verweist
auf
Autornr.
Autor
hat geschrieben
geh. zu
Sachgebiet
Name
Sachgebietsschlüssel
Sachgebietsnummer
Buch
geh.zu Buch
Status
Ausleihdatum
Letztes Anspr.Dat.
Sachgebietsname
Ausleihart
Ausleihe
Mahndatum
Gültig?
Entleiher
Abb. 6: ER-Schema Übersicht
19
Inventur
Änderungsdatum
Es gibt zwei zentrale Objekttypen, dies sind das Buch (siehe Abb. 7) und der
Entleiher (siehe Abb. 8). Sie werden durch den Bezeihungstyp Ausleihe verbunden (siehe Abb. 6). Dieser Bezeihungstyp enthält alle die Ausleihe betreffenden
Daten als Attribute. Sie entsprechen den Informationen, die auch in der alten
Datenbank gespeichert wurden und sich als sinnvoll erwiesen haben. Das Ausleihdatum dient der Kontrolle, wann das Buch zuletzt entliehen wurde, das letzte
Ansprechdatum wird auch bei einer Verlängerung sowie einer Rückgabe
mitaktualisiert, so daß festgestellt werden kann, wann die Ausleihe des Buches
zuletzt geändert wurde. Das Mahndatum schließlich dient dazu, festzustellen,
wann das Buch zurückgegeben werden muß. In dem Attribut Ausleihart wird
festgehalten, ob es sich um eine normale Leihe (6 Wochen), eine Semesterleihe
(bis zum nächsten 15.2. / 15.8.) oder eine Dauerleihe handelt. Gültig? schließlich
dient der Anzeige, ob das Buch tatsächlich noch entliehen ist. Auf diese einfache
Art ist es möglich, bis zur nächsten Ausleihe den letzten Entleiher des Buches
festzustellen.
Der Beziehungstyp „hat geschrieben“ dient dazu, ein Buch mit mehreren Autoren zu verknüpfen. Damit die Reihenfolge eindeutig ist, hat der Objekttyp Autor
ein Attribut Autornummer. Dasselbe gilt für den Beziehungstyp „verweist auf“.
Sie wird benötigt, um alternative Titel zum Suchen des Buches zu ermöglichen.
„Gehört zu Sachgebiet“ verbindet das Buch mit einem Sachgebietsschlüssel, der
seinerseits über „gehört zu Obergebiet“ wiederum mit einem Sachgebiet
verbunden sein kann. Schließlich gehören zu einem Buch noch die für die
Inventur benötigten Informationen, die mit „gehört zu Buch“ an das Buch
angebunden sind.
Inventarnummer
Auflage
Erscheinungsjahr
Erscheinungsort
Buch
Seitenzahl
Weitere Autoren?
Standort
ISBN
Abb. 7: Der Entitytyp Buch
20
Die Attribute des Objekttyps Buch stimmen im wesentlich mit den vorhandenen
Informationen überein, neu hinzugekommen sind der Erscheinungsort, der beim
Konvertieren der alten Daten einfach offen gelassen wird, sowie das Attribut
„Weitere Autoren?“, in dem vermerkt werden kann, daß es weitere in der Datenbank nicht aufgenommene Autoren zu diesem Buch gibt.
Mitarbeiter?
Institut
Crossreferenz
Straße
Vorname
Postleitzahl
Entleiher
Name
Ort
Titel
E-Mailadresse
Mahnsumme
Abb. 8: Der Entitytyp Entleiher
Die Attribute des Objektyps Entleiher sind ebenfalls in erster Linie die aus dem
alten Datenbestand übernommenen Informationen, wobei hier beim Konvertieren
der bisherige Eintrag Name in Titel, Vorname, Name zerlegt wird. Neu hinzugekommen ist das Attribut E-Mailadresse sowie die Mahnsumme, die beim
Mahnen hier zukünftig automatisch aufgenommen werden soll. Das Feld „Crossreferenz“ dient der Identifikation des Entleihers. Es hat sich hierbei bewährt,
nicht mit abstrakten Nummern zu arbeiten, sondern ein aus dem Namen des
Entleihers abgeleitetes Kürzel zu verwenden, da bei der Eingabe der Ausleihen
die Crossreferenz direkt eingegeben wird, um ein schnelles Arbeiten zu
ermöglichen. Bei Mitarbeitern wird hierzu normalerweise der Nachname verwendet, bei Studenten der Nachname sowie den 1. Buchstaben des Vornamen.
„Mitarbeiter?“ schließlich dient der Unterscheidung zwischen Mitarbeitern und
Studenten, da nur letztere Mahngebühren zahlen müssen.
21
Da das Institut bei Mitarbeitern ein eigenes Attribut erhält, können zukünftig bei
Bedarf auch die Adressen der Mitarbeiter gespeichert werden.
Als Integritätsbedingen sind zu nennen:
• Ausleihart „D(auerleihe)“ nur für Mitarbeiter möglich.
• Ausleihdatum ≤Letztes Ansprechdatum.
• Entliehene Bücher können nur verlängert oder zurückgegeben werden.
• Mahnsumme ≥ 0.
• Bei Mitarbeitern muß das Institut, bei Studenten die Adresse eingegeben
werden.
• Übergeordnete Sachgebiete haben durch 100 teilbare Sachgebietsnummern,
diese dürfen anderen Sachgebieten nicht untergeordnet werden.
• Ist ein Sachgebiet einem anderen untergeordnet, so unterscheidet sich die
Sachgebietsnummer nur in den letzten beiden Ziffern.
2.3 Umsetzung des ER-Schemas in ein Relationen-Schemas
Die neue Datenbank wird aus 8 Relationen bestehen. Bei der Realisierung wurde
darauf geachtet, daß das Schema mit dem Microsoft SQL-Server realisiert werden kann.
Die Relation „Buch“:
Attribut
Datentyp
NN*
Inventarnummer
WeitereAutoren
ISBN
Auflage
Seitenzahl
Erscheinungsjahr
Erscheinungsort
Standort
INTEGER
BIT(1)
VARCHAR(10)
INTEGER
INTEGER
DATETIME
VARCHAR(50)
VARCHAR(20)
*NN= NOT NULL / Defaultwert.
22
ü
ü
ü
Fremdschlüssel
Die Relation „Verweise“:
Attribut
Datentyp
NN*
Inventarnummer
Verweisnummer
Titel
INTEGER
INTEGER
VARCHAR(255)
ü
ü
ü
Fremdschlüssel
Buch.Inventarnummer
*NN= NOT NULL / Defaultwert.
Der „Titel“ mit der „Verweisnummer“ 1 ist der tatsächliche Titel des Buches, die
weiteren Einträge stellen Verweise dar.
Zum Relationship „verweist auf“ wird keine Relation erstellt (Verknüpfung von
Buch und Verweise), da diese durch einen Fremdschlüssel realisiert wird.
(Verweise.Inventarnummer ó Buch.Inventarnummer)
Die Relation „Autoren“:
Attribut
Datentyp
NN*
Inventarnummer
Autornummer
Name
INTEGER
INTEGER
VARCHAR(50)
ü
ü
ü
Fremdschlüssel
Buch.Inventarnummer
*NN= NOT NULL / Defaultwert.
Die Autoren werden in der Reihenfolge ihrer Nennung auf dem Buch durchnumeriert.
Zum Relationship „hat geschrieben“ wird keine Relation erstellt (Verknüpfung
von Buch und Autoren), da diese durch einen Fremdschlüssel realisiert wird.
(Autoren.Inventarnummer ó Buch.Inventarnummer)
Die Relation „Sachgebieteschluessel“:
Attribut
Sachgebietsnummer
Sachgebietsname
Datentyp
NN*
INTEGER
VARCHAR(255)
*NN= NOT NULL / Defaultwert.
23
ü
ü
Fremdschlüssel
Buch.Inventarnummer
In der Sachgebietstabelle haben Sachgebiete 4-stellige Nummern. Das linke
Ziffernpaar entspricht dem Obergebiet, das rechte dem Untergebiet. So ist das
Sachgebiet 0000 das Obergebiet der Sachgebiete 0001-0099. Da die
Sachgebietsnummern als Zahl gespeichert werden, entspricht die 0 der 0000. Die
Relation „GehoertZuObergebiet“ wurde nicht implementiert, das diese
Beziehung aus den Sachgebietsnummer erkennbar ist.
Die Relation „GehoertZuSachgebiet“:
Attribut
Datentyp
Inventarnummer
Sachgebietsnummer
INTEGER
INTEGER
NN*
ü
ü
Fremdschlüssel
Buch.Inventarnummer
Sachgebietssschluessel.
Sachgebietsnummer
*NN= NOT NULL oder Defaultwert.
Die Relation „Inventur“:
Attribut
Datentyp
Inventarnummer
Status
Aenderungsdatum
INTEGER
CHAR(1)
DATETIME
NN*
Fremdschlüssel
ü
Buch.Inventarnummer
ü(N)
ü
*NN= NOT NULL oder Defaultwert.
Zur Relationship „gehoert zu Buch“ wird keine Relation erstellt (Verknüpfung
von Buch und Inventur), da diese durch einen Fremdschlüssel realisiert wird.
(Inventur.Inventarnummer ó Buch.Inventarnummer)
Die Bedeutungen des Feldes „Status“:
N
E
V
A
S
Unbekannt
entliehen
verloren
angeblich verloren
am Standort
24
Die Relation „Entleiher“:
Attribut
Datentyp
NN*
Cref
Name
Vorname
Titel
Strasse
PLZ
Ort
Mitarbeiter
Institut
Email
Mahnsumme
VARCHAR(20)
VARCHAR(40)
VARCHAR(40)
VARCHAR(25)
VARCHAR(40)
INTEGER
VARCHAR(50)
BIT(1)
VARCHAR(80)
VARCHAR(80)
MONEY
Fremdschlüssel
ü
ü
ü(0)
ü(0,0)
*NN= NOT NULL / Defaultwert.
Die Relation „Ausleihe“:
Attribut
Datentyp
NN*
Inventarnummer
Cref
Ausleihdatum
Mahndatum
LetztesAnsprechdatum
Ausleihart
Gueltig
INTEGER
VARCHAR(20)
DATETIME
DATETIME
DATETIME
CHAR(1)
BIT(1)
Fremdschlüssel
ü
Buch.Inventarnummer
ü
Entleiher.Crossreferenz
ü
ü
ü
ü(N)
ü(1)
*NN= NOT NULL / Defaultwert.
Die Bedeutungen des Feldes „Ausleihart“:
N
S
D
Normal (6 Wochen)
Semesterleihe (bis zum nächsten 15.2. bzw. 15.8)
Dauerleihe
25
Der folgende Trigger wird benutzt um das letzte Ansprechdatum bei Änderungen
der Ausleihe automatisch auf das Tagesdatum zu setzen:
CREATE TRIGGER T_LAD_Update
ON dbo.Ausleihe
FOR INSERT,UPDATE
AS
DECLARE @invnr INT
SELECT @invnr=Inventarnummer FROM INSERTED
UPDATE Ausleihe
SET LetztesAnsprechdatum=CONVERT(CHAR(12),GETDATE(),104)
WHERE @invnr=Inventarnummer
Bei der Aufnahme eines neuen Entleihers wird mit dem nächsten Trigger das
Aufnahmedatum gespeichert:
CREATE TRIGGER T_Entleiheraufnahme
ON dbo.Entleiher
FOR INSERT
AS
DECLARE @cref VARCHAR(20)
SELECT @cref=cref FROM INSERTED
UPDATE Entleiher
SET Aufnahmedatum=CONVERT(CHAR(12),GETDATE(),104)
WHERE @cref=cref
Außerdem wird mit einer Regel überwacht, daß die Mahnsummer nicht negativ
wird. Regeln dienen der Kontrolle einzelner Tabellenspalten. Mit ihrer Hilfe
kann die Einhaltung eines bestimmten Wertebereiches sichergestellt werden.
Eine Regel ist also ein eingeschränkter Trigger, der Eintrag wird zurückgewiesen, wenn der Wertebereich nicht eingehalten wird:
CREATE RULE Mahnsumme_GT_Zero
AS @MS >= 0
Anschließend muß die erzeugte Regel noch mit einer Tabellenspalte verbunden
werden. Dies geschieht mit Hilfe der stored procedure sp_bindrule.
sp_bindrule Mahnsumme_GT_Zero, Entleiher.Mahnsumme
Die weiteren Integritätsbedingungen werden durch die Anwendungsprogramme
sichergestellt.
26
3. Benutzerhandbuch der Programme
In diesem Kapitel wird die Benutzung der entstandenen Programme beschrieben.
Dazu gehören die Systemanforderungen sowie eine für den Benutzer verständliche Anleitung zur Bedienung der Programme. Ein Benutzerhandbuch zur
WWW-Schnittstelle wurde nicht erstellt, da eine Onlinehilfe verfügbar ist.
3.1 Systemanforderungen und Hinweise zur Installation
3.1.1 Der Server
Achtung: Die folgenden Arbeiten sollten nur von einem Systemadministrator
druchgeführt werden!
Nach der Installation des SQL-Servers und des Webservers müssen verschiedene
Einstellungen vorgenommen werden. Zunächst muß mit dem SQL Enterprise
Manager ein neues Datenbankmedium erstellt werden, in dem die Datenbank
gespeichert wird (siehe Abb. 9). Ist bereits ein Datenbankmedium vorhanden,
sollte dieses ausreichend Platz für die Bibliotheksdatenbank aufweisen. Die
Größe des Datenbankmedium sollte mindestens 100MB betragen, um die mitgelieferte leere Datenbank einzuspielen.
Abb. 9: Neues Datenbankmedium erstellen
27
Anschießend muß eine neue Datenbank erstellt werden (siehe Abb. 10) und die
mitgelieferte leere Datenbank eingespielt werden (siehe Abb. 11).
Abb. 10: Neue Datenbank erstellen
Abb. 11: Wiederherstellen der mitgelieferten leeren Datenbank
28
In dieser mitgelieferten Datenbank sind alle notwendigen leeren Tabellen,
Trigger und Regeln sowie ein Internetlogin (ohne Passwort) vorhanden. Das
Internetlogin wird für den Webserver benötigt. Für alle anderen Benutzer müssen
die jeweiligen Logins erstellt werden (siehe Abb. 12) sowie Benutzerrechte eingestellt werden.
Abb. 12: Benutzer erstellen
Die Benutzer des Programms für die Bestandsverwaltung (siehe 3.3) benötigt
Vollzugriff auf die folgenden Tabellen:
• Autoren
• Buch
• GehoertZuSachgebiet
• Inventur
• Sachgebietsschluessel
• Verweise
Eine Zugriffsberechtigung auf die Tabellen „Ausleihe“ und „Entleiher“ ist nicht
notwendig.
29
Für die Programme und den Webserver muß die ODBC-Systemverbindung
„Institutsbibliothek“ zum SQL-Server erstellt werden. Diese Einstellung wird
mit dem ODBC-Manager von Windows NT vorgenommen (siehe Abb. 13).
Abb. 13: Die ODBC-Schnittstelle
3.1.2 Die Clients
Zum Betrieb der Software auf den Clients wird eine Win32-Umgebung benötigt
(Windows 3.11 mit Win32s, Windows 9x oder Windows NT 4.0). Außerdem
muß die ODBC-Schnittstelle und der ODBC-Treiber für den SQL-Server installiert sein und eine Verbindung „Institutsbibliothek“ zum SQL-Server eingerichtet werden (siehe Abb. 13). Um diese einzustellen, wenden Sie sich bitte an Ihren
Systemadministrator.
Die Programme müssen im selben Verzeichnis des jeweiligen Rechners liegen
und können von dort gestartet werden. Die Wahl des Verzeichnis ist beliebig.
30
Nach dem Aufruf des Programms „Start“ können Sie die einzelnen Programmteile über die entsprechenden Buttons aufrufen (siehe Abb. 14)
Abb. 14: Das Startprogramm
Nach dem Start der jeweiligen Programme muß zunächst der Benutzername und
das Benutzerkennwort eingegeben werden (siehe Abb. 15).
Abb. 15: Die Passworteingabe
3.2 Die Konvertierungsprogramme
Bemerkung:
Für die jeweiligen Konverter müssen auch ODBC-Verknüpfungen erstellt werden die jedoch nur einmal benötigt werden. Da die Konvertierung von den Entwicklern durchgeführt wird, werden diese hier nicht weiter erläutert. Aus entsprechenden Gründen wurde in das Design der Benutzerschnittstellen nicht soviel Zeit investiert.
31
3.2.1 Der Bibliothekskonverter
Abb. 16: Der Bibliothekskonverter
Zum Blättern in der Datenbank stehen der „Vor“ sowie der „Zurück“ Button zur
Verfügung, diese blättern jeweils einen Datensatz weiter.
Mit „Start / Weiter“ beginnt das Programm mit der Konvertierung der Daten.
Sobald ein Eintrag aus der alten Datenbank nicht eindeutig zu konvertieren ist,
hält das Programm an dieser Stelle an und der Benutzer muß den Eintrag korrigieren und kann dann mit dem „Start / Weiter“ Button das Programm fortsetzen
(siehe Abb. 16).
Mit dem „Programm beenden“ Button wird der Bibliothekskonverter beendet.
32
3.2.2 Der Ausleihkonverter
Abb. 17: Der Ausleihkonverter
Mit dem „Start / Weiter“ Button startet man die Konvertierung der Ausleihinformationen. Sobald zu einem entliehenen Buch kein Entleiher bzw. fehlerhafte Entleiherinformationen vorhanden sind, kann man diese nachtragen bzw.
die Ausleihe überspringen (siehe Abb. 17).
Mit dem „Programm beenden“ Button wird der Ausleihkonverter beendet.
33
3.3 Die Bestandsverwaltung
Abb. 18: Die Bibliotheksverwaltung
Zum Blättern in der Datenbank stehen der „Vor“ sowie der „Zurück“ Button zur
Verfügung, diese blättern jeweils einen Datensatz weiter. Um zu einem
bestimmten Datensatz zu springen, steht der „zu InvNr springen“ Button zur
Verfügung. Dieser öffnet ein Dialogfenster (siehe Abb. 19) in dem die Inventarnummer eingegeben werden kann. Ist die Inventarnummer nicht vorhanden, oder
wird der „Abbrechen“ Button gewählt, so verbleibt das Programm beim aktuellen Datensatz.
Abb. 19: Zu Inventarnummer springen
34
Für Änderungen an der Datenbank befinden sich links im Fenster die Buttons
„Ändern“, „Änderung verwerfen“ und „Änderung speichern“ (siehe Abb. 18).
Nach dem Klicken des Button „Ändern“ wird das Programm in den Editiermodus versetzt. Nun können im aktuellen Datensatz die gewünschten
Änderungen vorgenommen werden. Diese müssen mit „Änderung speichern“ für
den aktuellen Datensatz bestätigt werden, „Änderung verwerfen“ behält den
alten Datensatz bei.
Für das Hinzufügen neuer Autoren, Titel und Sachgebiete befinden sich im
linken Fensterbereich die entsprechenden Buttons. Für Autoren und Titel wird
eine neue Zeile im entsprechenden Feld hinzugefügt und das Programm in den
oben beschriebenen Editiermodus versetzt. Für das Hinzufügen eines neuen
Sachgebiets wird ein neues Fenster geöffnet, in dem die neue Sachgebietsnummer eingegeben werden kann. In diesem Fenster wird gleichzeitig das zur
aktuell eingegebenen Nummer gehörende Sachgebiet angezeigt (siehe Abb. 20).
Der „OK“-Button fügt es dann dem Buchdatensatz hinzu.
Abb. 20: Sachgebiet hinzufügen
Das Hinzufügen eines neuen Buches erfolgt mit Hilfe des Buttons in der linken
oberen Fensterecke (siehe Abb. 18). Das Programm gibt dann die nächste zu
vergebende Inventarnummer vor. Diese kann jedoch geändert werden. Es wird
ein leerer Eintrag angezeigt, der ausgefüllt werden muß. Zu einem Datensatz
gehören mindestens eine Inventarnummer, ein Autor, ein Titel sowie der Standort. Weitere Autoren, Titel und Sachgebiete können dann wie oben beschrieben
hinzugefügt werden (siehe Abb. 21).
35
Abb. 21: Neues Buch hinzufügen
Mit Hilfe des „Programm beenden“ Buttons wird die Bibliotheksverwaltung
beendet.
3.4 Das Leihprogramm
Das Leihprogramm dient zur Eingabe der Entleihungen, Verlängerungen und
Rückgaben sowie zur Eingabe und zum Bearbeiten der Benutzerdaten durch die
Bibliotheksmitarbeiter. Deshalb wurde besoders auf eine schnelle, routinemäßige
Eingabe und nicht so sehr auf eine selbsterklärende Benutzerschnittstelle wertgelegt.
36
Abb. 22: Das Leihprogramm
Mit Hilfe des „Programm beenden“ Buttons wird das Leihprogramm beendet.
Nach dem Programmstart steht der Eingabefokus bereits auf der Inventarnummer. Nach Eingabe der Inventarnummer wird mit Hilfe der Eingabetaste in
das Feld Ausleihart gewechselt, sofern das Buch in der Datenbank vorhanden ist.
Ist das Buch nicht vorhanden, wird rechts neben der Inventarnummer ein „Buch
nicht vorhanden“ eingeblendet. Mit der Esc-Taste kann man immer zum vorherigen Eingabefeld zurückspringen.
Wenn das Buch vorhanden ist, so wird rechts neben der Inventarnummer der 1.
Buchautor sowie der Titel und bei entliehenen Büchern auch die momentane
Ausleihart sowie das Mahndatum angezeigt. Ist das Buch bereits entliehen, so
werden Informationen über den Entleiher unterhalb der Eingabefeldern angezeigt.
Ist das Buch nicht entliehen, so sind die folgenden Eingaben möglich:
• N: Normale Leihe (6 Wochen)
• S: Semesterleihe (15.2. / 15.8.)
• D: Dauerleihe
Nach dem Druck auf eine der Tasten springt die Eingabe dann zum Feld CRef.
37
Bei einem entliehenen Buch sind folgende Eingaben bei der Aktion möglich:
• R: Rückgabe des Buches
• V: Verlängern der Ausleihfrist um 6 Wochen vom Tagesdatum an gerechnet
• S: Verlängern des Buches bis zum Semesterende (15.2. / 15.8.)
Die entsprechende Aktion wird sofort ausgeführt und das neue Mahndatum
unterhalb des alten angezeigt.
Im Feld Cref muß das Namenskürzel des Entleihers eingegeben werden. Dies ist
bei Mitarbeitern normalerweise der Nachname, also zum Beispiel „testperson“,
bei anderen Entleihern Nachname + Leerstelle + 1. Buchstabe des Vornamens,
also zum Beispiel „testperson a“. Die Eingabe wird mit der Eingabetaste abgeschlossen. Ist der Entleiher bereits in der Datenbank vorhanden, so wird die
Ausleihe ausgeführt, die Entleiherinformationen angezeigt und zur Eingabe einer
der nächsten Inventarnummer gesprungen.
Ist der Entleiher nicht vorhanden, so wird das Fenster zur Eingabe der Entleiherdaten geöffnet. Hier können die entsprechenden Daten eingegeben werden. Abgeschlossen wird die Eingabe mit dem „OK“ Button, der „Abbrechen“ Button
oder die Esc-Taste brechen die Eingabe ab.(siehe Abb. 23)
Abb. 23: Entleiherdaten bearbeiten
Ist der „Entleiher Bearbeiten“ Button aktiv, so kann man mit seiner Hilfe den
Datensatz des aktuell angezeigten Entleihers bearbeiten. Hierzu öffnet sich das
bereits oben beschriebene Fenster, in dem die entsprechenden Eingaben vorgenommen werden können.
38
3.5 Das Programm zum löschen eines Entleihers
Das Programm dient zum Löschen von Entleihern, die keine Bücher mehr entliehen haben. Nach dem Start des Programms wird eine Liste aller Entleiher angezeigt, die keine Bücher mehr entleihen haben. Zum Löschen eines Entleihers
muß ein Doppelklick über seinem Namen ausgeführt werden.
Abb. 24: Entleiher löschen
Nach dem die folgende Sicherheitabfrage mit OK beantwortet wurde, wird der
Entleiher entgültig aus der Datenbank gelöscht.
Abb. 25: Die Sicherheitsabfrage
39
3.6 Das Mahnprogramm
Abb. 26: Das Mahnprogramm
Nach der Auswahl des Druckers wird mit dem „Start“-Button der Mahnvorgang
gestartet. Die Mahnungen für die Mitarbeiter werden auf der Festplatte gespeichert, die übrigen auf dem ausgewählten Drucker ausgegeben.
40
4. Entwicklung und Realisierung der Programme
In diesem Kapitel wird zunächst erläutert, welche Programme benötigt werden.
Anschließend wird auf die Benutzerschnittstellen und Funktionen der einzelnen
Programme eingegangen.
4.1 Benötigte Programme
Es werden Konvertierungstools zum Einlesen der alten, in großen Textdateien
erfaßten, Daten in die neue Datenbank benötigt. Wegen der besseren Übersichtlichkeit, und um Fehler beim Konvertieren zu vermeiden, werden hierzu zwei
Programme eingesetzt, für jede Ausgangsdatei eines.
Die Verwaltung selbst erfolgt mit zwei Programmen, eines dient zur Verwaltung
des Buchbestandes, das andere zur Verwaltung der Nutzer und Ausleihdaten
sowie zum Erstellen von Mahnungen. Diese Trennung ist sinnvoll, da die Verwaltung und die Erfassung der Benutzerdaten sowie der Ausleihen von verschiedenen Personen vorgenommen wird.
4.2 Benutzerschnittstellen und Funktionsbeschreibung
Die Benutzerschnittstellen der einzelnen Programme sollen ein möglichst einheitliches Aussehen erhalten. Dies versetzt den Benutzer in die Lage, nach der
Einarbeitung in eines der Programme auch die anderen Problemlos bedienen zu
können. Für die Programme wurde eine feste Fenstergröße von 800x600 Punkte
gewählt, da ein Skalieren der Anzeige auf verschiedene Fenstergrößen die Übersichtlichkeit verschlechtern würde und um die Nutzung des Programms auf alten
Computern mit geringerer Bildschirmauflösung zu ermöglichen.
Die Bibliothekskonvertierung liest einen Datensatz aus der alten Gesamtdatenbank ein und zerlegt diesen in die einzelnen Einträge. Das Programm versucht
hierbei, die Spalte Autor/Titel automatisch zu zerlegen. Ist dieses nicht möglich,
41
so muß der Benutzer eine Korrektur vornehmen. Anschließend wird der Datensatz in der neuen Datenbank gespeichert.
Der Ausleihkonverter spricht die alte Ausleihdatei und die Entleiherdatei mit
einem ODBC-Text-Treiber als Datenbank an. So werden mit einer SELECTAnweisung alle entliehenen Bücher ausgewählt. Dann wird zu jedem entliehenen
Buch zunächst ein Entleiher in der neuen Datenbank gesucht. Ist dort kein Eintrag vorhanden, wird ein Entleiher in der alten Entleiherdatenbank gesucht. Die
Ausleihe wird anschließend per INSERT-Anweisung in die Datenbank eingetragen, und sofern der Entleiher noch nicht vorhanden war, ebenfalls eingetragen.
Außerdem werden in der Crossreferenz alle deutschen Sonderzeichen ersetzt,
z.B. „ä“ durch „ae“. Bei den Entleiherinformationen wird noch vor dem Eintragen in die neue Datenbank eine Trennung von Name und Vorname durchgeführt.
Bei der Konvertierung werden alle alten Karteileichen aus der Datenbank entfernt, da nur die aktuellen Benutzer übernommen werden sollen.
Für die Bücherverwaltung werden Funktionen zum Editieren und Hinzufügen
neuer Bücher benötigt. Die datensatzweisen Editierfunktionen stellen die
Anzeigeelemente von Delphi hierbei zur Verfügung, das Programm muß dazu
das Editieren freigeben und abschließend für den bearbeiteten Datensatz ein
Commit oder Rollback auslösen. Beim Hinzufügen wird ein leerer Datensatz
vom Programm generiert und dann genau wie beim Editieren vom Benutzer bearbeitet. Falls das Hinzufügen abgebrochen werden soll, wird dann ebenfalls ein
Rollback, sonst ein Commit ausgeführt.
Die Ausleih- und Benutzerverwaltung hat im Prinzip zur Bücherverwaltung ähnliche Funktionen, nur daß hier auch ein Löschen der Benutzer möglich sein muß,
sofern der Benutzer keine Bücher mehr entliehen hat. Zusätzlich sind Funktionen
zum Eingeben von Ausleihen, Verlängerungen und Rückgaben nötig. Zu guter
Letzt wird eine Mahnfunktion benötigt, die für alle Benutzer der Ausleihbibliothek automatisch Mahnungen erstellt und ausdruckt bzw., sofern eine EMailadresse bekannt ist, zum späteren Versand als Textdatei speichert. Ein
automatischer Versand ist hier nicht sinnvoll, da einige Nutzer ihre Bücher direkt
in die Bibliothek zurückstellen, und daher vor dem Mahnen die Richtigkeit der
Mahnungen überprüft werden muß.
Darüber hinaus enthält das Programm eine Suchfunktion, deren Eingabefenster
der WWW-Schnittstelle, zur besseren Orientierung des Anwenders, nach-
42
empfunden ist. Die Anzeige erfolgt in einem Fenster, das dem der Bibliotheksverwaltung ähnlich gestaltet ist.
Auf die Realisierung einer Suchfunktion wurde hier verzichtet, da diese über da
WWW bereitgestellt wird.
4.3 Realisierung der Programme
Zur Realisierung der Programme bleibt nach der Vorstellung der Benutzerschnittstellen nicht mehr viel zu sagen. Deshalb werden im folgenden nur die
wesentlichsten, selbst erstellten, Prozeduren vorgestellt. Zusätzlich wird ein kurzer Überblick über die Module geben, die ja, wie bei der Vorstellung von Delphi
erwähnt, jeweils einem Formular entsprechen.
4.3.1 Die Bestandsverwaltung
Die Bestandsverwaltung setzt sich aus vier Modulen zusammen. Dazu gehören
das Modul bibverw1, in dem sich das zentrale Formular, also das Hauptfenster
der Anwendung befindet. Dem Modul DataModule2, das als nicht sichtbares
Formular für die Datenbankverbindung zuständig ist sowie den Modulen SachgebHinzu und InvNrAbfr. Sie entsprechen den Formularen zum Hinzufügen
eines Sachgebiets bzw. der Abfrage der Inventarnummer zum Springen in der
Datenbank.
Im DataModule2 befindet sich ein TDataBase-Objekt für die Transaktionskontrolle sowie mehrere TTable- und TQuerySQL-Objekte für die Datenbankanbindung. Im einzelnen sind das TTable-Objekte für die Tabellen Buch und
Inventur, sowie TQuerySQL-Objekt für die Abfrage der Autoren und Titel eine
Buches. Das TQuerySQL-Objekt für die Autorenabfrage enthält den folgendem
SQL-String:
select * from autoren where Inventarnummer = :InvNr;
Hierbei ist :InvNr ein Parameter, dem mit Hilfe des Objektinspektors als IntegerParameter definiert wurde.
43
Weiterhin sind TQuerySQL-Objekte vorhanden, die zur Abfrage der Sachgebiete
benötigt werden.
Um zu zeigen, was an Programmierleistung erforderlich war, wird nun die folgende Prozedur aus dem DataModule2 vorgestellt. Sie wird aufgerufen, wenn
den Verweisen ein neuer Eintrag hinzugefügt wurde und setzt dann die Verweisnummer entsprechend:
procedure TDataModule2.QueryVerweiseNewRecord(DataSet: TDataSet);
begin
DataModule2.QuerySQL.Close;
DataModule2.QuerySQL.SQL.Clear;
DataModule2.QuerySQL.SQL.Add
('select max(verweisnummer)+1 anzahl
from verweise
where inventarnummer='
+DataModule2.TableBuchInventarnummer.AsString);
DataModule2.QuerySQL.Open;
DataModule2.QueryVerweiseVerweisnummer.AsInteger:=
DataModule2.QuerySQL.FieldByName('anzahl').AsInteger;
DataModule2.Query7SQL.Close;
DataModule2.QueryVerweiseInventarnummer.AsInteger
:=DataModule2.TableBuchInventarnummer.AsInteger;
if DataModule2.QueryVerweiseVerweisnummer.AsInteger=0 then
DataModule2.QueryVerweiseVerweisnummer.AsInteger:=1;
end;
Der Parameter der Prozedur wird von Delphi intern verwendet und ist deshalb
nur scheinbar Überflüssig.
Mit dem Konstrukt DataModule2.TableBuchInventarnummer.AsString erfolgt
der Zugriff auf den aktuellen Wert des Feldes Inventarnummer im Objekt
TableBuch, als dem TTable-Objekt das mit der Relation Buch verbunden ist. Das
Objekt TableBuchInventarnummer ist ein von Delphi generiertes Objekt zum
Zugriff auf das Feld. Alternativ wäre auch ein Zugriff der Form TableBuch.FieldByName(‘Inventarnummer‘) möglich. Die Methode AsString liefert
den Feldinhalt als String im Delphi-Format zurück.
Es sind mehrere kurze Prozeduren dieser Art vorhanden. Eine detaillierte Erläuterung aller Prozeduren würde jedoch den Rahmen dieser Arbeit sprengen.
Die Prozeduren sind aber alle leicht lesbar und somit selbsterklärend. Eine kurze
44
Erläuterung der Prozeduren ist im Anhang A zu finden. Da das DataModule
selbst auch ein Formular, und somit ein Objekt ist, darf die Unit nicht so wie das
in ihr enthaltene Formular heißen. Daher heißt das Formular DataModule2, welches im Anhang in der Datei „Datamodule1.pas“ zu finden ist
In den anderen Modulen befinden sich vor allem kurze Prozeduren, die nach
einem Wechsel des Datensatzes die Anzeige aktualisieren und die jeweils zu
einem Button gehörende Funktion ausführen. Das einfachste Beispiel ist die folgende Prozedur, die, wie man ihrem Namen entnehmen kann, zum „Programm
beenden“-Button gehört:
procedure TForm1.ButtonEndeClick(Sender: TObject);
begin
Close;
end;
Mit Close wird das Formular geschlossen. Da es sich hierbei um das Hauptfomular der Anwendung handelt, wird diese somit beendet.
Die anderen Programme, die dem Benutzer zur Verfügung stehen, enthalten auch
jeweils ein DataModule2, das jeweils aus dem obigen abgeleitet wurde. Diese
wurden jedoch dem jeweiligen Programm angepaßt.
4.3.2 Das Leihprogramm
Das Programm Leihverwaltung besteht aus den Modulen Main, DataModule2
und Cref. Hierbei gehört das Modul Cref zum Formular Entleiherdaten bearbeiten und enthält lediglich diverse einzeilige Editor-Objekte. Im Modul Main
erfolgt die restliche Programmsteuerung als Reaktion auf Tastendrücke des
Benutzers, deshalb haben die Prozeduren auch jeweils den Namen onKeyPress,
wobei jedem Edit-Objekt des Formulars eine eigene onKeyPress-Prozedur zugeordnet ist.
45
4.3.3 Das „Entleiher löschen“ Programm
Des Programm zum löschen nicht mehr benötigter Entleiher ist das einfachst und
kleinste der vier Programme. Es besteht aus einem Modul DataModule2 und
dem Modul main. Mit Hilfe der SQL-Anfrage QueryKandidaten werden zunächst die Kandidaten, die für das löschen in Frage kommen, ermittelt:
select distinct (e.Name), e.Vorname, e.cref
from ausleihe a, entleiher e
where (a.gueltig=0)
and (a.cref=e.cref)
and (a.cref not in (select cref
from ausleihe
where gueltig=1));
Nach einem Doppelklick auf einen angezeigten Entleiher und einer Sicherheitsabfrage wird dieser gelöscht. Hierzu werden zunächst alle Einträge in der Relation „Ausleihe“ gelöscht, in denen der Entleiher noch verzeichnet ist. Anschließend wird dann der Entleiher selbst aus der Relation „Entleiher“ gelöscht:
procedure TForm2.DBGrid1DblClick(Sender: TObject);
var s : string;
p : PChar;
begin
DataModule2.QueryKandidaten.RecNo:=DBGrid1.SelectedIndex;
s:=DataModule2.QueryKandidatencref.AsString;
p:=StrAlloc(80);
StrPCopy(p,'Den Entleiher '
+DataModule2.QueryKandidatenVorname.AsString+' '
+DataModule2.QueryKandidatenName.AsString
+' wirklich löschen ?');
if Application.MessageBox(p,'Frage',mb_OKCancel) = IDOK then
begin
s:=''''+s+'''';
DataModule2.QuerySQL.SQL.Clear;
DataModule2.QuerySQL.SQL.Add('delete from ausleihe
where cref='+s+';');
DataModule2.QuerySQL.ExecSQL;
DataModule2.QuerySQL.SQL.Clear;
DataModule2.QuerySQL.SQL.Add('delete from entleiher
where cref='+s+';');
DataModule2.QuerySQL.ExecSQL;
DataModule2.QueryKandidaten.close;
DataModule2.QueryKandidaten.open;
DBGrid1.Update;
46
end;
StrDispose(p);
end;
Die hier vorgestellt Prozedur nutzt die zweite Möglichkeit, SQL-Anfragen zu
stellen, sie werden in dieser Prozedur zur Laufzeit generiert. Hierfür wurde im
DataModule2 die Instanz QuerySQL von TQuerySQL vorgesehen. Zunächst
wird hier ermittelt, wo der Doppelklick gemacht wurde und anschließend der
Text für die Sicherheitsabfrage zuammengesetzt. Nach dem diese mit OK beantwortet wurde, werden dann die beiden benötigten SQL-Anfragen generiert
und ausgeführt. Mit DBGrid1.Update wird am Ende die Bildschirmanzeige
aktualisiert.
4.3.4 Das Mahnprogramm
Das Programm Mahnen schließlich besteht nur aus zwei Modulen, nämlich
einem schon bekannten DataModule2 und dem Modul Mahnen, in dem sich
wiederum die Prozedur Mahnen befindet, die das eigentliche Mahnen erledigt.
Hierzu werden zunächst die zu mahnenden Personen mit Hilfe der folgenden
SQL-Anweisung ermittelt.
select distinct A.Cref Cref,
Name,
Vorname,
Titel,
Strasse,
Plz,
Ort,
Mitarbeiter,
Institut,
Email,
Mahnsumme,
Aufnahmedatum
from Ausleihe A, Entleiher E
where (A.Cref=E.Cref) and
(Mahndatum<GetDate()) and
(Gueltig=1)
order by Name ASC;
Anschließend wird für jede Person einzeln eine Mahnung erstellt. Die
Mahnungen für die Mitarbeiter werden als Datei auf der Festplatte abgelegt, die
übrigen auf dem eingestellten Drucker ausgegeben.
47
Zum Abschluß folgt hier nun noch eine Übersicht über die Programme und
Module. Ausdrücklich muß noch einmal daruf hingewiesen werden, das es sich
bei den jeweiligen DataModule2 nicht um identische Module handelt.
Bestandsverwaltung
Leihverwaltung
InvNrAbfr
SachgebHinzu
Cref
BibVerw1
Main
DataModule2
DataModule2
Borland Database Engine
DataModule2
SQL-Server
DataModule2
Main
Mahnen
Enleiher löschen
Mahnen
Abb. 27: Programmübersicht
48
5. Entwurf der WWW-Schnittstelle
In diesem Kapitel wird die Benutzerschnittstelle für die WWW-Seite der
Bibliothek vorgestellt. Außerdem wird auf die Realisierung der Webseiten
eingegangen.
5.1 Die Benutzerschnittstelle
Die Webschnittstelle bietet die Möglichkeit, nach den folgenden Einträgen zu
suchen:
• Inventarnummer
• Autor,
• Titel,
• Erscheinungsjahr (≤,=,≥)
• Erscheinungsort und
• ISBN.
Bei Angabe einer Inventarnummer werden alle anderen Angaben ignoriert, da
die Inventarnummer eindeutig ist. Wird die Anfrage gestartet, so wird nach der
Inventarnummer gesucht und alle zu diesem Buch gehörigen Informationen ausgegeben.
Wird ein Autor gesucht, ist es nur nötig, die ersten Buchstaben des Nachnamen
einzugeben, und es werden automatisch alle Autoren, die mit der Buchstabenkombination anfangen, gesucht. Bei der Suche nach einem Titel muß man einen
Teilstring des Titels angeben, und es werden alle entsprechenden Bücher ausgegeben, hierbei werden auch die Verweise durchsucht. Um Bücher aus bestimmten Erscheinungsjahren zu suchen, kann man die Jahreszahl angeben und sich
alle Bücher aus dem entsprechenden Jahr anzeigen lassen, oder die Suche auf die
vorherigen oder nachfolgenden Jahre zu beschränken.
Der Erscheinungsort wurde bei der Entwicklung dieser Datenbank als neues
Informationsfeld aufgenommen und wird daher erst für Bücher eingetragen, die
nach der Einführung dieser Datenbank und der zugehörigen Programme in der
Bibliothek aufgenommen werden. Um Bücher nach Erscheinungsorten zu
49
suchen, ist es wiederum nur erforderlich, die ersten Buchstaben des Erscheinungsortes anzugeben.
Die ISBN-Nummer muß bei der Suche exakt eingegeben werden. Teilstrings
oder der Anfangsteil einer ISBN-Nummer liefern kein Ergebnis zurück. Außerdem ist bei der Suche nach ISBN-Nummern zu berücksichtigen, daß nur etwa
jedes dritte Buch diesen Eintrag in der Datenbank besitzt.
Weiterhin kann man die Suche auf Bibliotheksteile einschränken (z.B. die Ausleihbibliothek oder die Kongreßbibliothek). Werden mehrere Felder des
Anfrageformulars ausgefüllt, so wird nach allen Büchern gesucht, auf die diese
Angaben zutreffen.
Das Anfrageergebnis wird sortiert ausgegeben. Als Sortierung voreingestellt ist
das Erscheinungsjahr in absteigender Reihenfolge. Der Benutzer kann die
Sortierung nach einem der folgenden Merkmalen sowohl aufsteigend als auch
absteigend wählen:
• Inventarnummer
• Autor
• Titel
• Erscheinungsjahr
• Erscheinungsort
• ISBN
• Standort
Außerdem kann man zwischen einer einfachen und erweiterten Ausgabe wählen.
Bei der einfachen Ausgabe wird nur der erste Autor, sowie der Titel des Buch
ausgegeben. Wird nach einem Autor gesucht, und wird dieser z.B. als zweiter
Autor gefunden, so wird dieser zusätzlich ausgegeben. Entsprechend werden
auch die Verweise durchsucht, und auch die erweiterten Verweise mit im Ergebnis ausgegeben. Bei der erweiterten Anzeige werden alle Informationen zu den
jeweiligen Büchern angezeigt.
Als alternative wird eine Sachgebietssuche angeboten. Hierbei muß zunächst ein
Obersachgebiet ausgewählt werden. Anschließend werden die zugehörigen
Untersachgebiete angezeigt. Auch hier kann das Suchergebnis nach den Angaben
des Benutzers sortiert werden, sowie zwischen einer einfachen und erweiterten
50
Anzeige der Ergebnises gewählt werden. Die Bildschirmausgabe entspricht der
Anzeige der anderen Suchfunktion.
5.2 Realisierung
Im folgenden wird die Realisierung der Webschnittstelle erläutert. Hierbei wird
unterschieden zwischen der Standardsuche und Sachgebietssuche. Die hier folgenden Codeauschnitte (HTML und VB-Script) wurden zur besseren Lesbarkeit
anders formatiert.
5.2.1 Die Standardsuche
Um die größtmögliche Kompatibilität in Webbrowsern zu bieten, werden nur
einfache standardisierte HTML-Befehle genutzt. Somit ist die Recherche sowohl
mit Grafik- als auch mit Textbrowsern möglich.
Das Suchformular schickt die Formularinformationen bei Betätigen des
„Suchen“-Buttons an den Webserver, und die zugehörige ASP-Seite wird auf
dem Server ausgeführt (siehe Abb. 28).
Das Suchformular besteht aus reinem HTML-Code, das mit der Methode POST
die Eingaben an die nächste Webseite weiterreicht:
<FORM ACTION="/searchresult.asp" METHOD="post">
<PRE>
Inventarnummer
: <INPUT NAME="Invnr" SIZE=5 MAXLENGTH=5>
Autor
: <INPUT NAME="Autor" SIZE=50 MAXLENGTH=50>
Buchtitel
: <INPUT NAME="Titel" SIZE=50 MAXLENGTH=50>
Erscheinungsjahr : <SELECT NAME="VerJahr">
<OPTION><=
<OPTION SELECTED> =
<OPTION>>= </SELECT>
<INPUT NAME="Jahr" SIZE=4 MAXLENGTH=4>
Erscheinungsort
: <INPUT NAME="Ort" SIZE=50 MAXLENGTH=50>
51
ISBN
Standort
: <INPUT NAME="ISBN" SIZE=10 MAXLENGTH=10>
: <SELECT NAME="Standort">
<OPTION SELECTED> Alle
<OPTION> Präsenzbibliothek
<OPTION> Präsenzbibliothek Großformate
<OPTION> Ausleihbibliothek
<OPTION> Lexika
<OPTION> Seminarberichte
<OPTION> Kongreßberichte
<OPTION> Standexemplar
<OPTION> Standexemplar Großformate
</SELECT>
<HR>Sortieren nach
:
<INPUT TYPE=radio NAME="sortieren" VALUE="Inventarnummer">
Inventarnummer
<INPUT TYPE=radio NAME="sortieren" VALUE="Autor"> Autor
<INPUT TYPE=radio NAME="sortieren" VALUE="Titel"> Titel
<INPUT CHECKED TYPE=radio NAME="sortieren"
VALUE="Erscheinungsjahr"> Erscheinungsjahr
<INPUT TYPE=radio NAME="sortieren" VALUE="Erscheinungsort">
Erscheinungsort
<INPUT TYPE=radio NAME="sortieren" VALUE="ISBN"> ISBN
<INPUT TYPE=radio NAME="sortieren" VALUE="Standort"> Standort
<INPUT TYPE=radio NAME="richtung" VALUE="ASC"> aufsteigend
<INPUT CHECKED TYPE=radio NAME="richtung" VALUE="DESC">
absteigend
<HR>Ergebnisanzeige :
<INPUT CHECKED TYPE=radio NAME="Ergebnis" VALUE="normal">
normal
<INPUT TYPE=radio NAME="Ergebnis" VALUE="erweitert"> erweitert
<HR><INPUT TYPE="submit" VALUE="Suche abschicken">
<INPUT TYPE="reset" VALUE="Suchformular zurücksetzen">
</FORM></PRE>
52
Abb. 28: Beispiel einer Webanfrage
In diesem Suchformular werden die in 5.1 genannten Eingaben abgefragt und an
den Webserver geschickt, der die ASP-Datei „searchresult.asp“ startet. Die ASPDatei wertet diese Variablen aus.
Im folgenden wird nur Programmteile erklärt, welche die einfache Ergebnisanzeige erläutert. Auf Besonderheiten der erweiterten Ergebnisanzeige wird im
einzelnen hingewiesen.
Im einfachsten Fall wird nach einer Inventarnummer gesucht. Es wird dann das
folgende VB-Script ausgeführt:
53
<%
IF (Request.Form("Invnr")<>"") THEN
DIM Invnr
DIM BuchSQL
DIM objConnection
'Variable für ODBC-Verbindung .
...
invnr=Request.Form("Invnr") 'Speichern der Inventarnummer aus dem
'Formular in einer lokalen Variable.
...
SET objConnection = Server.CreateObject("ADODB.Connection")
objConnection.Open "DSN=Institutsbibliothek;UID=Internet"
'Öffnet die ODBC-Verbindung zur Datenbank .
BuchSQL = "SELECT b.inventarnummer, b.erscheinungsjahr,
b.erscheinungsort,"
BuchSQL = BuchSQL & "b.ISBN, b.standort, b.auflage, b.seitenzahl,
i.status"
BuchSQL = BuchSQL & "FROM buch b,inventur i WHERE
(b.inventarnummer=" & Invnr & ") AND
(b.inventarnummer=i.inventarnummer);"
AutorSQL = "SELECT * FROM autoren WHERE inventarnummer="
& Invnr & ";"
TitelSQL = "SELECT * FROM verweise WHERE inventarnummer="
& Invnr & ";"
'Formulieren der SQL-Anfragen .
SET objBuch = Server.CreateObject("ADODB.Recordset")
objBuch.Open BuchSQL, objConnection
'Datenbankabfrage durchführen .
IF objBuch.BOF AND objBuch.EOF THEN
'Ist das Anfrageergebnis leer? ->Ja!
%>
<BR>
<BIG>Es wurde kein Eintrag zur Inventarnummer <%=invnr%>
gefunden!</BIG>
<BR><BR>
Zurück zur <A HREF="/search.htm">Suchseite</A>
<%
ELSE
'-> Nein.
SET objAutor = Server.CreateObject("ADODB.Recordset")
objAutor.Open AutorSQL, objConnection
SET objTitel = Server.CreateObject("ADODB.Recordset")
objTitel.Open TitelSQL, objConnection
'Alle Autoren, sowie Titel und Verweise
'abfragen .
<BIG> Anzeigen von Inventarnummer:</BIG> <%=Invnr%>
<PRE>
54
<HR>
Inventarnummer
...
...
Status
: <%=invnr%>
: <%SELECT CASE objBuch("status")
CASE "S" %>Am Standort<%
CASE "E" %>Entliehen<%
CASE ELSE %>Keine Information<%
END SELECT%>
<HR><BR><BR>
Zurück zur <A HREF="/search.htm">Suchseite</A>
</PRE>
'Ausgabe der Buchinformationen.
<%
END IF
objBuch.Close
objAutor.Close
objTitel.Close
SET objBuch = NOTHING
SET objAutor = NOTHING
SET objTitel = NOTHING
'Datenbankverbindung schließen und
Datensätze
ELSE
...
'löschen.
'Inventarnummer suchen Ende
Wird nach anderen Einträgen als der Inventarnummer gesucht, so wird jeweils
eine dazu passende SQL-Anfrage generiert und an den SQL-Server geschickt.
Als Beispiel wird hier nach Büchern des Autor „Hardy“ mit dem Teiltitel
„inequ“ gesucht, die ab 1970 erschienen sind.
Tabellen2 = "buch b, inventur i, autoren a, verweise v"
Ausgabe2 = "DISTINCT b.inventarnummer, b.erscheinungsjahr,
b.isbn, b.erscheinungsort, b.standort, i.status,
a.name, v.titel"
Vergleich2 = "(b.inventarnummer=i.inventarnummer) AND "
Vergleich2 = Vergleich2 & "(b.inventarnummer=a.inventarnummer)
AND (a.autornummer=1) AND "
Vergleich2 = Vergleich2 & "(b.inventarnummer=v.inventarnummer)
AND (v.verweisnummer=1)"
' Autor suchen
IF Autor<>"" THEN
Ausgabe2 = Ausgabe2 & ", a2.name zweitautor"
Tabellen2 = Tabellen2 & ", autoren a2"
Vergleich2 = Vergleich2 & " AND
(a2.inventarnummer=b.inventarnummer) AND
55
(a2.name like '" & Autor & "%')"
END IF
' Titel suchen
IF Titel<>"" THEN
Ausgabe2 = Ausgabe2 & ", v2.titel Verweis"
Tabellen2 = Tabellen2 & ", verweise v2"
Vergleich2 = Vergleich2 & " AND
(b.inventarnummer=v2.inventarnummer) AND
(v2.titel LIKE '%" & Titel & "%')"
END IF
' Jahr suchen
IF Jahr<>"" THEN
Suche2 = Suche2 & "Erscheinungsjahr" & VerJahr & Jahr
Vergleich2 = Vergleich2 & " AND (b.erscheinungsjahr" & Verjahr
& Jahr & ")"
END IF
...
SELECT CASE Standort
....
CASE "Ausleihbibliothek"
Vergleich2 = Vergleich2
& " AND (Standort='Ausleihbibliothek')"
....
END SELECT
'Sortierung einstellen
SELECT CASE sortieren
....
CASE "Erscheinungsjahr"
Sort2 = " ORDER BY b.erscheinungsjahr " & richtung & ";"
....
END SELECT
strSQLBuch2 = "SELECT " & ausgabe2 & " FROM " & tabellen2
& " WHERE " & vergleich2 & sort2
Das Öffnen der Datenbank sowie das Abschicken der Anfrage entspricht dem
der Inventarnummeranfrage. Aus dieser Beispielanfrage wird somit die folgende
SELECT-Anweisung für eine einfache Ergebnisanzeige generiert:
SELECT DISTINCT b.inventarnummer, b.erscheinungsjahr,
b.erscheinungsort, b.isbn, b.standort,
i.status,a.name, v.titel, a2.name zweitautor,
v2.titel Verweis
FROM buch b, inventur i, autoren a, verweise v, autoren a2,
verweise v2
WHERE (b.inventarnummer=i.inventarnummer)
56
AND (b.inventarnummer=a.inventarnummer)
AND (a.autornummer=1)
AND (b.inventarnummer=v.inventarnummer)
AND (v.verweisnummer=1)
AND (a2.inventarnummer=b.inventarnummer)
AND (a2.name like 'hardy%')
AND (b.inventarnummer=v2.inventarnummer)
AND (v2.titel LIKE '%inequ%')
AND (b.erscheinungsjahr>=1970)
AND (Standort='Ausleihbibliothek')
ORDER BY b.erscheinungsjahr DESC;
Um auch Bücher zu finden, bei dem der gesuchte Autor nur als zweiter oder
dritter Autor vorhanden ist, mußte hier zweimal die Relation Autoren aufgenommen werden. Die erste Relation Autoren wird für die Ausgabe des Erstautors
sowie für die Sortierung bei der Ausgabe benötigt. Die zweite wird für die
eigentliche Suche genutzt. Aus dem gleichen Grund wird auch die Relation
Verweise zweimal benötigt. Der gefundene Eintrag wird in der Ergebnisanzeige
auf jeden Fall mit ausgegeben. Bei den Autoren wird dieser durch ein Komma
getrennt an den Erstautor angehängt. Bei den Verweisen wird eine zusätzliche
Zeile hinzugefügt.
Abb. 29: Einfache Anzeige des Suchergebnises
Bei der erweiterten Suche wird die folgende SELECT-Anweisung ausgeführt:
SELECT distinct b.inventarnummer, b.erscheinungsjahr,
b.erscheinungsort, b.isbn, b.standort, i.status
FROM buch b, inventur i,autoren a, verweise v
57
WHERE
AND
AND
AND
AND
AND
AND
ORDER
(b.inventarnummer=i.inventarnummer)
(a.name like 'hardy%')
(a.inventarnummer=b.inventarnummer)
(b.inventarnummer=v.inventarnummer)
(v.titel LIKE '%inequ%')
(b.erscheinungsjahr>=1970)
(Standort='Ausleihbibliothek')
BY b.erscheinungsjahr DESC;
Hier werden die Realtionen Autoren und Verweise nur für die Sortierung
benötigt. Bei der Ausgabe wird zu jeder gefundenen Inventarnummer eine einzelne SQL-Anfrage durchgeführt, um alle Autoren und Verweise anzuzeigen.
SELECT autornummer, name
FROM autoren WHERE (inventarnummer=21181)
ORDER BY autornummer;
SELECT verweisnummer, titel
FROM verweise WHERE (inventarnummer=21181)
ORDER BY verweisnummer;
Die Autoren werden hierbei durch Kommas getrennt hintereinander ausgegeben.
Da nicht zu allen Büchern ein Autor in der Datenbank existiert, kann diese Zeile
bei einem Suchergebnis fehlen.
5.2.2 Die Sachgebietssuche
Die ASP-Datei „sachsearch1.asp“ generiert das Formular für die Obersachgebietsauswahl (siehe Abb. 30).
Abb. 30: Sachgebietssuche (Teil 1)
58
<FORM ACTION="/sachsearch2.asp" METHOD="post">
<PRE>Obersachgebiet : <SELECT NAME="Obersachgebiet">
<%
DIM strSQLSach
DIM objConnection
DIM objSach
strSQLSach = "SELECT sachgebietsname
FROM sachgebietsschluessel WHERE "
strSQLSach = strSQLSach & "(sachgebietsnummer=(Sachgebietsnummer(Sachgebietsnummer % 100))) ORDER BY Sachgebietsname;"
SET objConnection = Server.CreateObject("ADODB.Connection")
objConnection.Open "DSN=Institutsbibliothek;UID=Internet"
SET objSach = Server.CreateObject("ADODB.Recordset")
objSach.Open strSQLSach, objConnection
DO WHILE NOT objSach.EOF%>
<OPTION><%=objSach("Sachgebietsname")%>
<% objSach.MoveNext
LOOP
objSach.Close
SET objSach = NOTHING
%>
</SELECT><BR>
Nach Ihrer Auswahl geht es hier <INPUT TYPE="submit"
VALUE="weiter">
</FORM>
Durch die SELECT-Anweisung werden zunächst alle Obersachgebiet aus der
Datenbank ausgewählt und in das HTML-Formular eingefügt.
Nach der Auswahl des Obersachgebiets werden von der nächsten ASP-Seite alle
zugehörigen Untersachgebiete dazu angezeigt, und der Benutzer kann wie bei
der Standardsuchseite eine Sortierung vornehmen (siehe Abb. 31).
59
Abb. 31: Sachgebietssuche (Teil 2)
Für die Anzeige kann auch hier zwischen einer einfachen und erweiterten Ausgabe gewählt sowie die Sortierung eingestellt werden. Mit eine SELECT-Anweisung werden jetzt alle Bücher aus der Datenbank angezeigt, die zu dieser Sachgebietsnummer gehören.
SELECT distinct b.inventarnummer, b.erscheinungsjahr,
b.erscheinungsort, b.ISBN, b.standort, i.status
FROM buch b, inventur i, sachgebietsschluessel s,
gehoertzusachgebiet g
WHERE (s.sachgebietsnummer>=9500)
AND (s.sachgebietsnummer<9600)
AND (s.sachgebietsname='PROGRAMMIERSPRACHEN')
AND (s.sachgebietsnummer=g.sachgebietsnummer)
AND (g.inventarnummer=b.inventarnummer)
60
AND (b.inventarnummer=i.inventarnummer)
ORDER BY b.Erscheinungsjahr DESC;
Abb. 32: Ergebnis der Sachgebietssuche
61
6. Ausblicke und Anmerkungen
Zum Abschluß möchten wir hier mögliche Erweiterungen darstellen sowie
Anmerkungen zur benutzten Software geben.
6.1 Mögliche Erweiterungen der Datenbank und Schnittstellen
Als Erweiterung sind noch Katalogdrucke möglich, z.B. Inventarnummernkatalog, Autorenkatalog und Titel-/Verweiskatalog für die jeweiligen Bibliotheksräume. Außerdem könnte man ein separates Programm zur Inventur sowie
der Auswertung erstellen. Die hierfür nötigen Felder sind in der Datenbank
bereits vorhanden.
Denkbar, jedoch nur mit viel Zeitaufwand realisierbar, wäre auch eine Aufnahme
von Preprints in den Datenbestand. Der Aufwand entsteht hier allerdings weniger
beim Anpassen der Datenbank, sondern vielmehr bei der Erfassung der vorhandenen Preprints, da bisher noch kein Verzeichnis in elektronischer Form
existiert.
Fernziel könnte sein, daß die Benutzer ihre Ausleihen selbständig an einem
Terminal in der Datenbank eintragen können, hierzu müßten allerdings erst entsprechende Kontrollmechanismen eingeführt werden, da sonst ein Bücherschwund in der Bibliothek zu befürchten ist.
6.2 Erfahrungen mit dem Microsoft SQL-Server 6.5
Bei der Konvertierung der alten Daten wurde die Datenbank unverhältnismäßig
groß. Dieses liegt an der nicht optimalen Speicherung der Datensätze in der
Datenbank. Bis zu diesem Zeitpunkt haben wir nur die Möglichkeit gefunden,
den Speicherplatz zu optimieren, indem man die Daten in eine andere Datenbank
umkopiert.
62
Während der Entwicklung der WWW-Schnittstelle ist es bei verschachtelten
SELECT-Anweisung an den SQL-Server zu langen Wartezeiten gekommen. Wie
sich herausstellte, optimierte der SQL-Server diese Anfragen nicht, obwohl keine
Abhängigkeiten zwischen den inneren und äußeren SELECT-Anweisung bestanden. Daher wurde die WWW-Schnittstelle zugunsten einer unverschachtelten
SELECT-Anweisung umgestellt.
63
Anhang A: Beschreibung der einzelnen Prozeduren
Im folgenden werden die einzelnen Prozeduren nach Modulen (Units) sortiert
kurz erläutert. Sie dienen, wie bereits oben erwähnt, der Reaktion auf bestimmte
Ereignisse, die Prozedurnamen sind so gewählt, daß man sie leicht einem
Ereignis zuordnen kann.
A.1 Die Konvertierungsprogramme
A.1.1 Der Bibliothekskonverter (main.pas)
procedure FormCreate
Öffnet die Datenbankverbindungen.
procedure UpdateFields
Aktualisiert die Einträge auf dem Bildschirm.
procedure ButtonEndeClick
Schließt die Datenbankverbindungen und beendet das Programm.
Procedure ButtonStartConvertClick
Startet den Konvertierungsdurchgang.
A.1.2 Der Ausleihkonverter (mainkonv.pas)
procedure FormCreate
Öffnet die Datenbankverbindungen.
64
procedure ButtonEndeClick
Schließt die Datenbankverbindungen und beendet das Programm.
procedure UpdateFields
Aktualisiert die Einträge auf dem Bildschirm.
procedure ButtonStartClick
Startet die Konvertierung.
procedure Sichern
Speichert die Datensätze in der neuen Datenbank
procedure ButtonSpringenClick
Überspringt einen Datensatz, um diesen nicht in der Datenbank zu speichern.
function Crefconvert
Ersetzt alle deutschen Sonderzeichen in der Crossreferenz, wie z.B. „ä“ durch
„ae“ oder „ß“ durch „ss“.
A.3 Die Bibliotheksverwaltung
A.3.1 (datamodule1.pas)
In der Bibliothek datamodule1.pas werden die für die Datenbankanwendung
benötigten Funktionen bereitgestellt.
procedure TableBuchAfterScroll
Wird nach dem Wechsel zu einer anderen Zeile in der Buchtabelle automatisch
aufgerufen. Ruft ihrerseits die Prozedur UpdateFields auf.
65
procedure QueryAutorNewRecord
Sorgt beim Einfügen eines neuen Autors dafür, daß dieser eine fortlaufende
Verweisnummer erhält.
procedure QueryVerweiseNewRecord
Wie QueryAutorNewRecord.
procedure UpdateFields
Sorgt dafür, daß die zum aktuellen Buch gehörenden Autoren, Verweise und
Sachgebiete angezeigt werden.
A.3.2 (bibverw1.pas)
Dies ist das Hauptmodul der Bücherverwaltung. Es erzeugt das Hauptfenster der
Anwendung und ist gleichzeitig die zentrale Steuerung des Programms.
procedure ButtonVorClick
Springt um ein Buch vor
procedure ButtonZurückClick
Springt um ein Buch zurück
procedure ButtonAendernClick
Versetzt die aktuellen Datensätze in den Editiermodus und erlaubt damit das
Ändern der angezeigten Daten. Gleichzeitig werden alle Button außer „Änderung
verwerfen“ und „Änderung speichern“ deaktiviert und ihr Status gespeichert.
Desweiteren wird an die Datenbank ein „Start Transaction“ gesendet.
66
procedure ButtonAnderungVerwerfenCick
Führt ein Rollback auf der Datenbank aus, beendet den Editiermodus und aktualisiert die Anzeige, zusätzlich werden alle Buttons in den Zustand vor dem
Editieren versetzt.
procedure ButtonAenderungSpeichernClick
Führt ein Commit auf der Datenbank aus, sonst wie ButtonAenderungVerwerfenClick.
procedure ButtonNeuesBuchClick
Legt ein neues „Buch“ an und dazu einen neuen „Autor“ und einen neuen
„Titel“, danach wird ButtonAendernClick aufgerufen.
procedure ButtonAutorHinzufuegenClick
Legt einen neuen Autor an und ruft ButtonAendernClick auf. Zu beachten ist
hierbei, daß durch das Anlegen eins neuen Autors automatisch die Prozedur
datamodule1.QueryAutorNewRecord aufgerufen wird.
procedure ButtonTitelHinzufuegenClick
Wie ButtonAutorHinzufügenClick.
procedure ButtonZuInvNrSpringenClick
Öffnet ein Fenster, indem der Benutzer zur Eingabe einer Inventarnummer aufgefordert wird. Ist diese vorhanden, so springt die Anzeige zum neuen Buch,
sonst wird der alte Datensatz beibehalten.
procedure ButtonSachgebiethinzufuegenClick
Öffnet ein Fenster, indem eine Sachgebietsnummer eingegeben werden kann, zur
Kontrolle wird gleichzeitig das neue Sachgebiet angezeigt. Bricht der Anwender
die Eingabe ab, so wird kein Sachgebiet hinzugefügt.
67
A.4 Das Leihprogramm
A.4.1 (main.pas)
procedure FormCreate
Öffnet die Datenbank und initialisiert die Datumsvariablen mit den für heute
geltenden Leihfristen für normale bzw. Semsterleihe.
procedure MaskEditInvNrKeyPress
Reagiert auf die Eingabetaste und überprüft, ob das Buch in der Datenbank vorhanden und ob es entliehen ist, aktualisiert die Anzeige und springt weiter zum
Feld Ausleihart.
procedure EditArtKeyPress
Reagiert auf die Tasten R,V,S,N,D mit dem Eintrag der entsprechenden Art in
das Feld und führt die Aktionen Rückgabe, Verlängerung oder Verlängerung bis
Semsterende direkt aus und springt danach zur Inventarnummerneingabe, sonst
zur Cref-Eingabe.
procedure EditCrefKeyPress
Überprüft nach Druck auf die Eingabetaste ob die Cref in der Datenbank vorhanden ist, fragt sie sonst mit Hilfe von (cref.pas) ab und führt danach die Aktionen
‚normale Ausleihe‘, Semsterleihe oder Dauerleihe aus und springt zur Inventarnummerneingabe.
68
procedure ButtonEntleiherBearbeitenClick
Fragt mit Hilfe von (cref.pas) die zu aktualisierenden Daten ab.
procedure ButtonCloseClick
Beendet das Programm.
A.4.2 (cref.pas)
procedure ButtonOKClick
Überprüft, ob die Eingaben korrekt sind und schließt dann das Fenster.
procedure ButtonAbbrechenClick
Bricht die Eingabe ab.
procedure EditCrefKeyPress
Sorgt nach einem Druck auf die Eingabetaste für das Weiterspringen zur nächsten Eingabe. Die entsprechenden, hier nicht aufgeführten, KeyPress-Funktionen
der anderen Eingabefelder erfüllen dieselbe Funktion.
procedure FormKeyPress
Bricht die Eingabe nach Druck auf die Esc-Taste ab.
A.5 Das „Entleiher löschen“ Programm (main.pas)
procedure DBGrid1DblClick;
Ist in 4.3.3 ausführlich beschrieben.
69
A.6 Das Mahnprogramm (Mahnen.pas)
procedure Mahnen;
Erstellt die Mahnungen. Hierzu wird zunächst eine Liste aller zu mahnenden
Personen abgefragt (QueryMahnungAn), anschließend werden die einzelnen
Mahnungen erstellt (QueryWelcheBuecher).
procedure ButtonStartClick;
Übernimmt den Drucker aus der Druckerauswahl und ruft die Prozedur Mahnen
auf.
70
Abbildungsverzeichnis
Abb. 1: Die Delphi-Oberfläche...........................................................................8
Abb. 2: Der SQL-Explorer .................................................................................9
Abb. 3: Zugriffsweg vom Anwendungsprogramm auf den SQL-Server ............ 11
Abb. 4: Ein TTable-Objekt, verbunden mit der Tabelle „Buch“ in der
Datenbank „Institutsbibliothek“........................................................... 12
Abb. 5: Die Microsoft Management Konsole.................................................... 13
Abb. 6: ER-Schema Übersicht.......................................................................... 19
Abb. 7: Der Entitytyp Buch .............................................................................. 20
Abb. 8: Der Entitytyp Entleiher ........................................................................ 21
Abb. 9: Neues Datenbankmedium erstellen ...................................................... 27
Abb. 10: Neue Datenbank erstellen .................................................................. 28
Abb. 11: Wiederherstellen der mitgelieferten leeren Datenbank........................ 28
Abb. 12: Benutzer erstellen .............................................................................. 29
Abb. 13: Die ODBC-Schnittstelle..................................................................... 30
Abb. 14: Das Startprogramm ............................................................................ 31
Abb. 15: Die Passworteingabe.......................................................................... 31
Abb. 16: Der Bibliothekskonverter................................................................... 32
Abb. 17: Der Ausleihkonverter......................................................................... 33
Abb. 18: Die Bibliotheksverwaltung................................................................. 34
Abb. 19: Zu Inventarnummer springen ............................................................. 34
Abb. 20: Sachgebiet hinzufügen ....................................................................... 35
Abb. 21: Neues Buch hinzufügen ..................................................................... 36
Abb. 22: Das Leihprogramm ............................................................................ 37
Abb. 23: Entleiherdaten bearbeiten................................................................... 38
Abb. 24: Entleiher löschen ............................................................................... 39
Abb. 25: Die Sicherheitsabfrage ....................................................................... 39
Abb. 26: Das Mahnprogramm .......................................................................... 40
Abb. 27: Programmübersicht............................................................................ 48
Abb. 28: Beispiel einer Webanfrage ................................................................. 53
Abb. 29: Einfache Anzeige des Suchergebnises................................................ 57
Abb. 30: Sachgebietssuche (Teil 1) .................................................................. 58
Abb. 31: Sachgebietssuche (Teil 2) .................................................................. 60
Abb. 32: Ergebnis der Sachgebietssuche........................................................... 61
71
Literaturverzeichnis
Borland
Handbücher und Dokumentation zu Delphi 3 Client/Server
Borland
Gerald Deutsch, Michael Groß, Karsten Richter, Markus Richter
Das große Buch – Delphi 3
Data Becker
ISBN 3-8158-1205-4
Michael Ebner
Delphi 3.0 Datenbankprogrammierung: Entwicklung leistungsfähiger
Datenbankanwendungen
Addison-Wesley
ISBN 3-8273-1315-5
Scott Hillier, Dan Mezick, New Technology Solution, Inc.
Active Server Pages – Programmierung
Microsoft Press
ISBN 3-86063-449-6
Andreas Kosch
Delphi-3-Datenbankentwicklung: Grundlagen relationaler Datenbanken
Franzis
ISBN 3-7723-4033-4
Udo Lipeck
Skript zur Vorlesung Datenbanksysteme 1+2 (WS97/98 SS98)
Begleitmaterial zum Oracle/SQL-Kurs
Universität Hannover
72
Stefan Münz
SelfHTML
http://www.netzwelt.com/selfhtml/
Edwin Schicker
Datenbanken und SQL
B.G. Teubner Stuttgart
ISBN 3-519-02991-X
73
Herunterladen