entwicklung einer datenbank zur verwaltung der bibliothek des · entwickelte programmiersprache...

73
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

Upload: lemien

Post on 23-Aug-2019

214 views

Category:

Documents


0 download

TRANSCRIPT

Entwicklung einer Datenbank

zur Verwaltung der

Bibliothek

des Instituts für Mathematik

Studienarbeit

vonMarcus Möhle

Matrikelnummer: 1686164und

Jan OpitzMatrikelnummer: 1686054

im Rahmen des StudiengangesMathematik mit Studienrichtung Informatik

an der Universität Hannover

Betreuer:

Prof. Dr. Udo LipeckInstitut für Informatik

Hannover, den 8. Februar 1999

2

3

Inhaltsverzeichnis

1. Einleitung.......................................................................................................51.1 Beschreibung der Bibliothek.....................................................................51.2 Aufgabenstellung......................................................................................61.3 Benutzte Programme ................................................................................7

1.3.1 Der Server .........................................................................................71.3.2 Die Clients.........................................................................................71.3.3 Das Entwicklungssystem....................................................................7

1.3.4 Der Webserver.........................................................................................13

2. Entwurf der Datenbank.................................................................................152.1 Analyse der vorhandenen Daten..............................................................15

2.1.1 Der Gesamtkatalog ..........................................................................152.1.2 Die Ausleihbibliothek ......................................................................172.1.3 Analyse der Adressdaten..................................................................18

2.2 Erstellung eines ER-Modells...................................................................192.3 Umsetzung des ER-Schemas in ein Relationen-Schemas ........................22

3. Benutzerhandbuch der Programme ...............................................................273.1 Systemanforderungen und Hinweise zur Installation...............................27

3.1.1 Der Server .......................................................................................273.1.2 Die Clients.......................................................................................30

3.2 Die Konvertierungsprogramme...............................................................313.2.1 Der Bibliothekskonverter .................................................................323.2.2 Der Ausleihkonverter.......................................................................33

3.3 Die Bestandsverwaltung .........................................................................343.4 Das Leihprogramm .................................................................................363.5 Das Programm zum löschen eines Entleihers ..........................................393.6 Das Mahnprogramm ...............................................................................40

4. Entwicklung und Realisierung der Programme .............................................414.1 Benötigte Programme .............................................................................414.2 Benutzerschnittstellen und Funktionsbeschreibung .................................414.3 Realisierung der Programme...................................................................43

4.3.1 Die Bestandsverwaltung...................................................................434.3.2 Das Leihprogramm ..........................................................................45

4

4.3.3 Das „Entleiher löschen“ Programm..................................................464.3.4 Das Mahnprogramm ........................................................................47

5. Entwurf der WWW-Schnittstelle ..................................................................495.1 Die Benutzerschnittstelle ........................................................................495.2 Realisierung............................................................................................51

5.2.1 Die Standardsuche ...........................................................................515.2.2 Die Sachgebietssuche.......................................................................58

6. Ausblicke und Anmerkungen .......................................................................626.1 Mögliche Erweiterungen der Datenbank und Schnittstellen.....................626.2 Erfahrungen mit dem Microsoft SQL-Server 6.5.....................................62

Anhang A: Beschreibung der einzelnen Prozeduren .........................................64A.1 Die Konvertierungsprogramme.............................................................64

A.1.1 Der Bibliothekskonverter (main.pas) ...............................................64A.1.2 Der Ausleihkonverter (mainkonv.pas) .............................................64

A.3 Die Bibliotheksverwaltung.....................................................................65A.3.1 (datamodule1.pas)...........................................................................65A.3.2 (bibverw1.pas) ................................................................................66

A.4 Das Leihprogramm ................................................................................68A.4.1 (main.pas) .......................................................................................68A.4.2 (cref.pas).........................................................................................69

A.5 Das „Entleiher löschen“ Programm (main.pas) ......................................69A.6 Das Mahnprogramm (Mahnen.pas) ........................................................70

Abbildungsverzeichnis .....................................................................................71

Literaturverzeichnis..........................................................................................72

5

1. Einleitung

In diesem Kapitel wird eine Übersicht über die Bibliothek des Instituts fürMathematik gegeben. Weiterhin soll die Aufgabenstellung der Studienarbeit dar-gestellt werden sowie ein Überblick der zur Realisierung benutzten Programmegegeben 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 Studiumsfür Seminare und zum Anfertigen von Arbeiten benötigt werden.

• PräsenzbibliothekDieser Bereich der Bibliothek ist nur für Mitarbeiter vorgesehen. Studentenkönnen sich hier nach Absprache während ihrer Diplomarbeit ebenfalls Bü-cher entleihen.

• KongreßbibliothekHier werden Kongreßberichte nach Jahrgängen sortiert aufbewahrt.

Der Gesamtbestand beläuft sich auf ca. 26000 Bücher und wächst jährlich umetwa 300 Stück an. Zur Zeit werden lediglich die Ausleihen der für Studentenzugänglichen Ausleihbibliothek erfaßt. In den anderen Teilen der Bibliothek tra-gen sich die Entleiher selbständig auf der zum Buch gehörigen Stellvertreterkarteein.

Zur Zeit werden zwei Programme zur Eingabe der Verwaltungsdaten des Buch-bestandes eingesetzt. Die Software wurde Anfang der siebziger Jahre von Stu-denten unter Leitung von Herrn Dr. Heinermann entwickelt. Als Programmier-sprache kam damals FORTRAN zum Einsatz. In dem einen Programm werdenneue Bücher erfaßt. Dieses Programm erstellt eine Textdatei mit der einmal jähr-lich der Gesamtbestand aktualisiert wird. Das zweite Programm dient der Erfas-sung von Leihvorgängen in der Ausleihbibliothek. Dieses Programm erzeugtebenfalls eine Textdatei mit der jeweils zum Mahnen die Ausleihdaten aktuali-

6

siert werden. Das Aktualisieren der Dateien erfolgt mit der Hilfe vonShellskripten die mehrere FORTRAN-Programme, die leider nicht dokumentiertwurden, aufrufen. Auf dieselbe Art werden die Mahnungen und die gedrucktenKataloge, die in den Bibliothek ausliegen, erstellt. Folgende Kataloge liegen inden 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 Datumsinfor-mationen nur zweistellig gespeichert. Dieses führt heute zum bekannten Jahr2000 Problem. Da die Programme nicht mehr den Ansprüchen an eine moderneBenutzerschnittstelle entsprechen, bietet es sich an, die Software neu zu ent-wickeln, 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 einensoll hiermit der Buchbestand erfaßt und aktualisiert werden. Zum anderen sollennun auch die Ausleihvorgänge in den beiden anderen Bibliotheksteilen erfaßtwerden. Dazu ist es nötig, unter Berücksichtigung der vorhandenen Daten einneues Datenmodell zu entwerfen. Dieses soll mit Hilfe eines relationalen Daten-banksystems implementiert werden. Weiterhin müssen Programme zur Konver-tierung der Daten entwickelt werden. Als Ersatz für die alten Kataloge soll eineWWW-Recherche angeboten werden.

7

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-Server6.50.252 (Service Release 4) sowie der WWW-Server Microsoft Internet Infor-mation Server 4.0 (IIS) zum Einsatz kommen.

Für die Darstellung interaktiver Inhalte, also zur Recherche über die WWW-Schnittstelle, kommen Active-Server-Pages (ASP) zum Einsatz. Dies ist eine vonMicrosoft entwickelte Skriptingtechnologie, die mit CGI-Skripten vergleichbarist. Sie werden jedoch wesentlich schneller als CGI-Skripte ausgeführt, so daßsie in einer Windows-Serverumgebung den Vorzug gegenüber CGI erhalten ha-ben.

1.3.2 Die Clients

Auf den Clients wird eine Win32-Umgebung benötigt (Windows 3.11 mit der32Bit-Erweiterung Win32s, Windows 9x oder Windows NT) sowie die ODBC-Schnittstelle (Open Database Connection) für den Zugriff auf den Server. ZurRecherche über das WWW wird darüber hinaus ein beliebiger WWW-Browserbenötigt.

1.3.3 Das Entwicklungssystem

Zur Entwicklung der Programme kommt das Entwicklungssystem Delphi 3.02Client/Server von Borland zum Einsatz. Es nutzt eine aus Turbo Pascal weiter-entwickelte Programmiersprache namens Object-Pascal. Das IDE (IntegratedDevelopment Environment / Integrierte Entwickungsumgebung) von Delphisetzt sich aus einem Fenster für den Programmquelltext der einzelnen Units, deneinzelnen Formularen sowie dem Objektinspektor zusammen. Die Eigenschaften

8

der Objekte können zur Entwicklungszeit im Objektinspektor eingestellt undgeändert werden (siehe Abb. 1).

Abb. 1: Die Delphi-Oberfläche1: Der Objektinspektor2: Der Quelltexteditor3: Ein Formular4: Die Komponentensammlung

Das Entwicklungssystem besteht aus einer Entwicklungsumgebung, in der dieFormulare durch Hinzufügen von Objekten aus der Komponentensammlungerstellt werden können. Es gibt sichtbare Formulare, sie sind das, was derBenutzter später als Fenster sieht. Außerdem gibt es unsichtbare Formulare, indenen programminterne Objekte, wie zum Beispiel die Datenbankobjekte (s.u.),abgelegt werden. Zu jedem Formular gehört eine eigene Unit. In dieser sind dieEreignisbehandlungsroutinen zu allen im Formular enthaltenen Komponenten(s.u.) abgelegt. Weiterhin gehört ein Datenbankexplorer zum Entwickungs-system, mit dessen Hilfe man sich den Inhalt beliebiger Datenbanken, die über

9

die Windows-ODBC-Schnittstelle ansprechbar sind, anzeigen lassen kann. Inihm 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 Grund-funktionen. Die vom Programmierer gewünschte Funktionalität wird durchEreignisbehandlungsroutinen erreicht. Jedes Objekt reagiert dabei auf eine zuihm passende Menge von Ereignissen, ein Editorobjekt beispielsweise auf einenTastendruck. Wenn nun der Programmierer eine spezielle Reaktion auf diesenTastendruck erreichen möchte, so muß er diese in der zu diesem Ereignisgehörenden Routine ausprogrammieren.

Die im Rahmen der Studienarbeit verwendeten Komponenten stammen aus dendrei folgenden Kategorien:

10

Die Steuerungs-Objekte von Delphi:

Delphi bringt alle benötigten Steuerelemente für die Programmsteuerung durchden Benutzer mit. Ein Fenster mit funktionierendem Minimize, Maximize undClose-Button ist bereits vorhanden. Die Buttons sind ebenfalls vorhanden, manmuß sie nur noch mit einer Beschriftung versehen und ihr OnClick-Ereignis aus-programmieren, zumeist mit dem Aufruf einer weiteren Funktion.

Darüber hinaus bietet Delphi auch noch Objekte wie Menüleisten und Popup-menüs, die jedoch im Rahmen der Studienarbeit keine Verwendung gefundenhaben.

Die Eingabe-Objekte von Delphi:

Delphi bietet alle erdenklichen Eingabeobjekte, vom Label, also einfach ange-zeigten Text, bis hin zum mehrzeiligen Editor. Darüber hinaus sind natürlichauch RadioButton, CheckBoxes und alle anderen von graphischen Oberflächenbekannten Eingabeelemente vorhanden. In der Studienarbeit werden vor allemeinfache Objekte, wie zum Beispiel das TEdit-Objekt, ein einzeiliger Editor,verwendet. Zusätzlich kommen noch Eingabe-Objekte zum Einsatz, die direktmit der Datenbank verbunden werden, und mit deren Hilfe sich der aktuelleDatensatz anzeigen bzw. bearbeiten läßt.

Die Datenbank-Objekte von Delphi:

Borland liefert mit Delphi die „Borland Database Engine“ (BDE) aus, eine vonBorland entwickelte Lösung zur Anbindung der Anwendungen an die ODBC-Schnittstelle von Windows. In ihr wird zum Beispiel das Ergebnis von SQL-Anfragen zwischengespeichert. Zusätzlich kann die BDE bei Datenbanken, dieselbst nicht über eine Transaktionskontrolle verfügen, diese übernehmen. DerZugriffsweg von Delphi-Programmen auf auf den SQL-Server hat also folgendesAussehen:

11

Microsoft SQL Server 6.5

ODBC - Schnittstelle

Borland Database Engine

Anwendungsprogramm

Abb. 3: Zugriffsweg vom Anwendungsprogramm auf den SQL-Server

Zum Lieferumfang von Delphi gehören Objekte, die dem Zugriff auf Daten-banken dienen. Hier sind vor allem das Objekt TDataBase sowie die ObjekteTTable und TQuerySQL zu nennen.

Das TDataBase-Objekt bildet die Verbindung zur Datenbank. Über diesesObjekt kann eine Transaktionskontrolle erfolgen (StartTransaction, Rollback,Commit). Wird diese Möglichkeit nicht genutzt, so erfolgt jede Änderung an derDatenbank von Delphi aus als einzelne Transaktion.

Die Objekte TTable und TQuerySQL bilden die Schnittstelle zur Abfrage derDatenbank, wobei TTable jeweils genau eine Tabelle der Datenbank nachbildet,TQuerySQL das Ergebnis einer SQL-Anfrage liefert. Bei relationalen Daten-banken erfolgt die Abfrage der Tabellen bei TTable natürlich auch mit Hilfe vonSQL-Befehlen, diese sind jedoch für den Entwickler nicht sichtbar.

Es können beliebig viele Instanzen der Objekte generiert werden. Bei TTablewird üblicherweise für jede genutzt Tabelle eine Instanz generiert, die bereits zurEntwicklungszeit des Programms fest mit einer Tabelle verbunden wird (siehe

12

Abb. 4). Für die wichtigsten SQL-Anfragen werden ebenfalls einzelne Instanzenvon TQuerySQL generiert, für einzelne Updates oder ähnliches verwendet maneine zusätzliche Instanz, der man zur Laufzeit den jeweils benötigten SQL-Stringzuweist.

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, nacheinem Aufruf der Methode Open zur Verfügung. Mit Hilfe der Methoden Priorund Next man kann darin vor- und zurückgehen. Änderungen an den Tabellenschreibt Delphi sofort in die Datenbank zurück. Wenn die Transaktionkontrollevom Programm selbst übernommen wurde, ist danach allerdings noch einCommit nötig.

Zugriff auf die einzelnen Felder des Ergebnisses hat man über die MethodenFieldByName(Name:String) oder FieldByNumber(Number:Integer). Wurde dasObjekt bereits während der Programmentwicklung fest mit einer Tabelle odereiner SQL-Anfrage verbunden, so fragt Delphi auf Wunsch ein Testergebnis an

13

und generiert für die zurückgelieferten Felder eigene Instanzen des TField-Objekts, so daß ein direkter Zugriff auf die Felder möglich wird. Dies erhöht inerster Linie die Lesbarkeit des Quelltextes und sorgt dafür, daß man nicht ver-sehentlich auf nicht vorhandene Felder zugreift.

1.3.4 Der Webserver

Der Microsoft Internet Information Server 4.0 (IIS 4.0) ist ein Bestandteil desOption Pack 4 für Windows NT 4. Dieses Packet ist frei verfügbar und von derMicrosoft Homepage zu beziehen. Der Webservers wir durch die MicrosoftManagement Konsole gesteuert (siehe Abb. 5 ).

Abb. 5: Die Microsoft Management Konsole

Standardmäßig wir die Datei „default.htm“ bzw. „default.asp“ beim Aufruf desWebservers an die Clients geschickt. Die Active Server Pages (ASP) bestehenaus HTML-Code mit eingebettetem VisualBasic-Script (VB-Script) oder Java-Script.

14

An den Dateiendung „.ASP“ erkennt der IIS, das die Datei auf mögliche Skript-Komponenten zu durchsuchen ist. Die jeweilig genutze Script-Sprache wird inder 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 hier-bei direkt an den Webbrowser weitergeleitet. Nur die Skripte werden vom IISausgeführt. In diese Skript-Abschnitte kann weiterer HTML-Code eingefügtwerden, 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 hiermitmöglich, auch mit Browsern die nicht Java, Javascript oder VBScript beherr-schen, 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 inVariablen speichern. Mit diesen Variablen läßt sich rechnen oder Stringver-arbeitung durchführen. Informationen die mittels der Method POST an eineASP-Dokument weitergereicht wurde, kann mit einem REQUEST.FORM ab-gefragt und z.B. in Variablen gespeichert werden.

Außerdem können Datenbankabfragen über die ODBC-Schnittstelle durchge-führt werden (siehe 5.2.1). Das Anfrageergebnis wird in einer Liste zurück-gegeben, die man über eine Variable ansprechen kann. In dieser Liste kann manmit dem MOVENEXT bzw. MOVEPREVIOUS durchlaufen.

Nähere Erläuterungen zum Quelltext sind noch unter 5.2 zu finden.

15

2. Entwurf der Datenbank

In diesem Kapitel wird zunächst eine Analyse der schon im Computer erfaßtenDaten der Bibliothek erstellt. Unter Berücksichtigung dieser Daten wird einEntity-Relationship-Modell für eine neue Datenbank entwickelt sowie ein dazu-gehö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 derBibliothek. Erfaßt wurden mindestens Verfasser/Titel, Standort und Inventar-nummer. Er besteht aus 103 Zeichen langen Zeilen, die den folgenden Aufbaubesitzen:

Spalten: Inhalt:01 – 56 Verfasser, Titel57 – 58 Auflagenzahl59 – 61 Erscheinungsjahr (2-3stellig)62 – 65 Seitenzahl66 – 85 5x 4stellige Sachgebiete86 – 95 ISBN96 Institutskennzeichen: M97 Standort98 Leer99 – 103 Inventarnummer

Der Eintrag „Verfasser, Titel“ ist nach den alten Unterlagen wie folgt zu inter-pretieren (Quelle: Originaldokumentation der Bibliotheksverwaltung, Stand1988):

16

Verfasser mit nachgestellten Anfangsbuchstaben der Vornamen ohnePunkte 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 Kommaschließt den Namensteil ab!nach diesem Abschlußkomma ein Leerzeichen,dann folgt bis Spalte 56 der Titel des Buches, ggf. unter Verwen-dung möglichst verständlicher Abkürzungen.

Leider wurde versäumt, dieses Eingabeformat zu erzwingen, so daß ein Teil derDatensätze nicht dieser Vorgabe entspricht und Probleme bei der Konvertierungbereitet.

Beispiel einer korrekten Autor-/Titeleintrags:

VARADARAJAN V S, GEOMETRY OF QUANTUM THEORY

Autor: Varadarajan V STitel: 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: CarrierTitel: Krook,Pearson,Funct of a complex variable

Da in der Datenbank durchaus Titel, die ein Komma enthalten, vorkommen, istes nicht möglich, solche Einträge automatisch zu erkennen.

Als Standort sind die folgenden Kennziffern möglich:

Kennziffer: Standort:1 oder Leerzeichen Präsenzbibliothek2 Ausleihbibliothek3 unbenutzt4 Großformate der Präsenzbibliothek

17

5 Dauerentleihungen6 Lexika und Nachschlagewerke allgemein7 Seminarberichte8 Kongreßberichte9 Verweiszeilen= Standexemplar, d.h. nicht entleihbar„ Standexemplar GroßformatA Angewandte MathematikB bis Z Aufgliederung des Standortes „Lex“

Die Verweiszeilen enthalten alternative Titel oder zusätzliche Autoren zu einemBuch. Diese Verweiszeilen sind bisher nötig gewesen, um das Buch an verschie-denen 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 derEintrag 885.

2.1.2 Die Ausleihbibliothek

Die Datei (PCBEB_xxx) enthält die Ausleihdaten zum Bestand der Ausleih-bibliothek. Da die Bearbeiter keinen Zugriff auf den obigen Gesamtkataloghatten, enthält die Datei (PCBEB_xxx) zusätzlich noch einmal den Eintrag Ver-fasser/Titel. Sie besteht aus 109 Zeichen langen Zeilen, die den folgendenAufbau besitzen:

Spalten: Inhalt:01 – 56 Verfasser, Titel57 – 63 Inventarnummer64 leer65 Standort66 – 73 Ausleihdatum74 – 81 letztes Ansprechdatum82 – 89 Mahndatum90 – 109 Crossreferenz

18

Der Eintrag „Verfasser, Titel“ entspricht dem des Gesamtkatalogs. Die „Cross-referenz“ ist ein Namenskürzel, durch das der Ausleiher identifiziert wird. Indem Eintrag „letztes Ansprechdatum“ wird vermerkt, wann die letzte Änderungan dem Datensatz erfolgte. So läßt sich zum Beispiel erkennen, wann ein Buchzurückgegeben wurde.

2.1.3 Analyse der Adressdaten

Die Adressen (PCBEADR) enthält die Entleiherdaten. Sie besteht aus 96Zeichen langen Zeilen, die den folgenden Aufbau besitzen:

Spalten: Inhalt:01 – 20 Crossreferenz21 – 22 Aufnahmemonat23 – 26 Aufnahmejahr27 – 51 (Titel), Vorname, Name52 – 56 PLZ57 – 71 Ort72 – 96 Straße, Hausnummer

Alternativ enthalten die Stellen 52 ff. bei Mitarbeitern den Eintrag „UniversitätHannover“ mit dem Zusatz „Institut für ...“.

19

2.2 Erstellung eines ER-Modells

Buch

Ausleihe

Ausleihdatum Ausleihart

Gültig?Mahndatum

Titel

Verweisnummer

geh. zuSachgebiet

Sachgebietsnummer

Sachgebietsschlüssel Sachgebietsname

Entleiher

Verweis

verweistauf

Inventur

ÄnderungsdatumStatus

hat geschrieben

Autornr.

Name

Letztes Anspr.Dat.

geh.zu Buch

geh. zuObergebiet

Autor

Abb. 6: ER-Schema Übersicht

20

Es gibt zwei zentrale Objekttypen, dies sind das Buch (siehe Abb. 7) und derEntleiher (siehe Abb. 8). Sie werden durch den Bezeihungstyp Ausleihe verbun-den (siehe Abb. 6). Dieser Bezeihungstyp enthält alle die Ausleihe betreffendenDaten als Attribute. Sie entsprechen den Informationen, die auch in der altenDatenbank gespeichert wurden und sich als sinnvoll erwiesen haben. Das Aus-leihdatum dient der Kontrolle, wann das Buch zuletzt entliehen wurde, das letzteAnsprechdatum wird auch bei einer Verlängerung sowie einer Rückgabemitaktualisiert, so daß festgestellt werden kann, wann die Ausleihe des Bucheszuletzt geändert wurde. Das Mahndatum schließlich dient dazu, festzustellen,wann das Buch zurückgegeben werden muß. In dem Attribut Ausleihart wirdfestgehalten, 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ßlichdient der Anzeige, ob das Buch tatsächlich noch entliehen ist. Auf diese einfacheArt ist es möglich, bis zur nächsten Ausleihe den letzten Entleiher des Buchesfestzustellen.

Der Beziehungstyp „hat geschrieben“ dient dazu, ein Buch mit mehreren Auto-ren zu verknüpfen. Damit die Reihenfolge eindeutig ist, hat der Objekttyp Autorein 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, derseinerseits über „gehört zu Obergebiet“ wiederum mit einem Sachgebietverbunden sein kann. Schließlich gehören zu einem Buch noch die für dieInventur benötigten Informationen, die mit „gehört zu Buch“ an das Buchangebunden sind.

Buch

Inventarnummer

Seitenzahl

Auflage Erscheinungsjahr

ISBNStandort

Erscheinungsort

Weitere Autoren?

Abb. 7: Der Entitytyp Buch

21

Die Attribute des Objekttyps Buch stimmen im wesentlich mit den vorhandenenInformationen überein, neu hinzugekommen sind der Erscheinungsort, der beimKonvertieren der alten Daten einfach offen gelassen wird, sowie das Attribut„Weitere Autoren?“, in dem vermerkt werden kann, daß es weitere in der Daten-bank nicht aufgenommene Autoren zu diesem Buch gibt.

EntleiherName

Vorname

Straße

Ort

Crossreferenz

Postleitzahl

Titel

Mahnsumme

E-Mailadresse

InstitutMitarbeiter?

Abb. 8: Der Entitytyp Entleiher

Die Attribute des Objektyps Entleiher sind ebenfalls in erster Linie die aus demalten Datenbestand übernommenen Informationen, wobei hier beim Konvertierender bisherige Eintrag Name in Titel, Vorname, Name zerlegt wird. Neu hinzu-gekommen ist das Attribut E-Mailadresse sowie die Mahnsumme, die beimMahnen hier zukünftig automatisch aufgenommen werden soll. Das Feld „Cross-referenz“ dient der Identifikation des Entleihers. Es hat sich hierbei bewährt,nicht mit abstrakten Nummern zu arbeiten, sondern ein aus dem Namen desEntleihers abgeleitetes Kürzel zu verwenden, da bei der Eingabe der Ausleihendie Crossreferenz direkt eingegeben wird, um ein schnelles Arbeiten zuermöglichen. Bei Mitarbeitern wird hierzu normalerweise der Nachname ver-wendet, bei Studenten der Nachname sowie den 1. Buchstaben des Vornamen.„Mitarbeiter?“ schließlich dient der Unterscheidung zwischen Mitarbeitern undStudenten, da nur letztere Mahngebühren zahlen müssen.

22

Da das Institut bei Mitarbeitern ein eigenes Attribut erhält, können zukünftig beiBedarf 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 wurdedarauf geachtet, daß das Schema mit dem Microsoft SQL-Server realisiert wer-den kann.

Die Relation „Buch“:

Attribut Datentyp NN* FremdschlüsselInventarnummer INTEGER üWeitereAutoren BIT(1) üISBN VARCHAR(10)Auflage INTEGERSeitenzahl INTEGERErscheinungsjahr DATETIMEErscheinungsort VARCHAR(50)Standort VARCHAR(20) ü

*NN= NOT NULL / Defaultwert.

23

Die Relation „Verweise“:

Attribut Datentyp NN* FremdschlüsselInventarnummer INTEGER ü Buch.InventarnummerVerweisnummer INTEGER üTitel VARCHAR(255) ü

*NN= NOT NULL / Defaultwert.

Der „Titel“ mit der „Verweisnummer“ 1 ist der tatsächliche Titel des Buches, dieweiteren Einträge stellen Verweise dar.

Zum Relationship „verweist auf“ wird keine Relation erstellt (Verknüpfung vonBuch und Verweise), da diese durch einen Fremdschlüssel realisiert wird.(Verweise.Inventarnummer ó Buch.Inventarnummer)

Die Relation „Autoren“:

Attribut Datentyp NN* FremdschlüsselInventarnummer INTEGER ü Buch.InventarnummerAutornummer INTEGER üName VARCHAR(50) ü

*NN= NOT NULL / Defaultwert.

Die Autoren werden in der Reihenfolge ihrer Nennung auf dem Buch durch-numeriert.

Zum Relationship „hat geschrieben“ wird keine Relation erstellt (Verknüpfungvon Buch und Autoren), da diese durch einen Fremdschlüssel realisiert wird.(Autoren.Inventarnummer óBuch.Inventarnummer)

Die Relation „Sachgebieteschluessel“:

Attribut Datentyp NN* FremdschlüsselSachgebietsnummer INTEGER ü Buch.InventarnummerSachgebietsname VARCHAR(255) ü

*NN= NOT NULL / Defaultwert.

24

In der Sachgebietstabelle haben Sachgebiete 4-stellige Nummern. Das linkeZiffernpaar entspricht dem Obergebiet, das rechte dem Untergebiet. So ist dasSachgebiet 0000 das Obergebiet der Sachgebiete 0001-0099. Da dieSachgebietsnummern als Zahl gespeichert werden, entspricht die 0 der 0000. DieRelation „GehoertZuObergebiet“ wurde nicht implementiert, das dieseBeziehung aus den Sachgebietsnummer erkennbar ist.

Die Relation „GehoertZuSachgebiet“:

Attribut Datentyp NN* FremdschlüsselInventarnummer INTEGER ü Buch.InventarnummerSachgebietsnummer INTEGER ü Sachgebietssschluessel.

Sachgebietsnummer*NN= NOT NULL oder Defaultwert.

Die Relation „Inventur“:

Attribut Datentyp NN* FremdschlüsselInventarnummer INTEGER ü Buch.InventarnummerStatus CHAR(1) ü(N)Aenderungsdatum DATETIME ü

*NN= NOT NULL oder Defaultwert.

Zur Relationship „gehoert zu Buch“ wird keine Relation erstellt (Verknüpfungvon Buch und Inventur), da diese durch einen Fremdschlüssel realisiert wird.(Inventur.Inventarnummer ó Buch.Inventarnummer)

Die Bedeutungen des Feldes „Status“:

N UnbekanntE entliehenV verlorenA angeblich verlorenS am Standort

25

Die Relation „Entleiher“:

Attribut Datentyp NN* FremdschlüsselCref VARCHAR(20) üName VARCHAR(40) üVorname VARCHAR(40)Titel VARCHAR(25)Strasse VARCHAR(40)PLZ INTEGEROrt VARCHAR(50)Mitarbeiter BIT(1) ü(0)Institut VARCHAR(80)Email VARCHAR(80)Mahnsumme MONEY ü(0,0)

*NN= NOT NULL / Defaultwert.

Die Relation „Ausleihe“:

Attribut Datentyp NN* FremdschlüsselInventarnummer INTEGER ü Buch.InventarnummerCref VARCHAR(20) ü Entleiher.CrossreferenzAusleihdatum DATETIME üMahndatum DATETIME üLetztesAnsprechdatum DATETIME üAusleihart CHAR(1) ü(N)Gueltig BIT(1) ü(1)

*NN= NOT NULL / Defaultwert.

Die Bedeutungen des Feldes „Ausleihart“:

N Normal (6 Wochen)S Semesterleihe (bis zum nächsten 15.2. bzw. 15.8)D Dauerleihe

26

Der folgende Trigger wird benutzt um das letzte Ansprechdatum bei Änderungender Ausleihe automatisch auf das Tagesdatum zu setzen:

CREATE TRIGGER T_LAD_Update ON dbo.Ausleihe FOR INSERT,UPDATEASDECLARE @invnr INTSELECT @invnr=Inventarnummer FROM INSERTEDUPDATE Ausleihe SET LetztesAnsprechdatum=CONVERT(CHAR(12),GETDATE(),104) WHERE @invnr=Inventarnummer

Bei der Aufnahme eines neuen Entleihers wird mit dem nächsten Trigger dasAufnahmedatum gespeichert:

CREATE TRIGGER T_Entleiheraufnahme ON dbo.Entleiher FOR INSERTASDECLARE @cref VARCHAR(20)SELECT @cref=cref FROM INSERTEDUPDATE Entleiher SET Aufnahmedatum=CONVERT(CHAR(12),GETDATE(),104) WHERE @cref=cref

Außerdem wird mit einer Regel überwacht, daß die Mahnsummer nicht negativwird. Regeln dienen der Kontrolle einzelner Tabellenspalten. Mit ihrer Hilfekann die Einhaltung eines bestimmten Wertebereiches sichergestellt werden.Eine Regel ist also ein eingeschränkter Trigger, der Eintrag wird zurück-gewiesen, wenn der Wertebereich nicht eingehalten wird:

CREATE RULE Mahnsumme_GT_ZeroAS @MS >= 0

Anschließend muß die erzeugte Regel noch mit einer Tabellenspalte verbundenwerden. Dies geschieht mit Hilfe der stored procedure sp_bindrule.

sp_bindrule Mahnsumme_GT_Zero, Entleiher.Mahnsumme

Die weiteren Integritätsbedingungen werden durch die Anwendungsprogrammesichergestellt.

27

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änd-liche Anleitung zur Bedienung der Programme. Ein Benutzerhandbuch zurWWW-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 Systemadministratordruchgeführt werden!

Nach der Installation des SQL-Servers und des Webservers müssen verschiedeneEinstellungen vorgenommen werden. Zunächst muß mit dem SQL EnterpriseManager ein neues Datenbankmedium erstellt werden, in dem die Datenbankgespeichert wird (siehe Abb. 9). Ist bereits ein Datenbankmedium vorhanden,sollte dieses ausreichend Platz für die Bibliotheksdatenbank aufweisen. DieGröße des Datenbankmedium sollte mindestens 100MB betragen, um die mit-gelieferte leere Datenbank einzuspielen.

Abb. 9: Neues Datenbankmedium erstellen

28

Anschießend muß eine neue Datenbank erstellt werden (siehe Abb. 10) und diemitgelieferte leere Datenbank eingespielt werden (siehe Abb. 11).

Abb. 10: Neue Datenbank erstellen

Abb. 11: Wiederherstellen der mitgelieferten leeren Datenbank

29

In dieser mitgelieferten Datenbank sind alle notwendigen leeren Tabellen,Trigger und Regeln sowie ein Internetlogin (ohne Passwort) vorhanden. DasInternetlogin wird für den Webserver benötigt. Für alle anderen Benutzer müssendie jeweiligen Logins erstellt werden (siehe Abb. 12) sowie Benutzerrechte ein-gestellt werden.

Abb. 12: Benutzer erstellen

Die Benutzer des Programms für die Bestandsverwaltung (siehe 3.3) benötigtVollzugriff auf die folgenden Tabellen:• Autoren• Buch• GehoertZuSachgebiet• Inventur• Sachgebietsschluessel• Verweise

Eine Zugriffsberechtigung auf die Tabellen „Ausleihe“ und „Entleiher“ ist nichtnotwendig.

30

Für die Programme und den Webserver muß die ODBC-Systemverbindung„Institutsbibliothek“ zum SQL-Server erstellt werden. Diese Einstellung wirdmit 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ßerdemmuß die ODBC-Schnittstelle und der ODBC-Treiber für den SQL-Server instal-liert sein und eine Verbindung „Institutsbibliothek“ zum SQL-Server eingerich-tet werden (siehe Abb. 13). Um diese einzustellen, wenden Sie sich bitte an IhrenSystemadministrator.

Die Programme müssen im selben Verzeichnis des jeweiligen Rechners liegenund können von dort gestartet werden. Die Wahl des Verzeichnis ist beliebig.

31

Nach dem Aufruf des Programms „Start“ können Sie die einzelnen Programm-teile über die entsprechenden Buttons aufrufen (siehe Abb. 14)

Abb. 14: Das Startprogramm

Nach dem Start der jeweiligen Programme muß zunächst der Benutzername unddas 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 wer-den die jedoch nur einmal benötigt werden. Da die Konvertierung von den Ent-wicklern durchgeführt wird, werden diese hier nicht weiter erläutert. Aus ent-sprechenden Gründen wurde in das Design der Benutzerschnittstellen nicht so-viel Zeit investiert.

32

3.2.1 Der Bibliothekskonverter

Abb. 16: Der Bibliothekskonverter

Zum Blättern in der Datenbank stehen der „Vor“ sowie der „Zurück“ Button zurVerfü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 korri-gieren und kann dann mit dem „Start / Weiter“ Button das Programm fortsetzen(siehe Abb. 16).

Mit dem „Programm beenden“ Button wird der Bibliothekskonverter beendet.

33

3.2.2 Der Ausleihkonverter

Abb. 17: Der Ausleihkonverter

Mit dem „Start / Weiter“ Button startet man die Konvertierung der Ausleih-informationen. Sobald zu einem entliehenen Buch kein Entleiher bzw. fehler-hafte Entleiherinformationen vorhanden sind, kann man diese nachtragen bzw.die Ausleihe überspringen (siehe Abb. 17).

Mit dem „Programm beenden“ Button wird der Ausleihkonverter beendet.

34

3.3 Die Bestandsverwaltung

Abb. 18: Die Bibliotheksverwaltung

Zum Blättern in der Datenbank stehen der „Vor“ sowie der „Zurück“ Button zurVerfügung, diese blättern jeweils einen Datensatz weiter. Um zu einembestimmten Datensatz zu springen, steht der „zu InvNr springen“ Button zurVerfügung. Dieser öffnet ein Dialogfenster (siehe Abb. 19) in dem die Inventar-nummer eingegeben werden kann. Ist die Inventarnummer nicht vorhanden, oderwird der „Abbrechen“ Button gewählt, so verbleibt das Programm beim aktuel-len Datensatz.

Abb. 19: Zu Inventarnummer springen

35

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 Editier-modus versetzt. Nun können im aktuellen Datensatz die gewünschtenÄnderungen vorgenommen werden. Diese müssen mit „Änderung speichern“ fürden aktuellen Datensatz bestätigt werden, „Änderung verwerfen“ behält denalten Datensatz bei.

Für das Hinzufügen neuer Autoren, Titel und Sachgebiete befinden sich imlinken Fensterbereich die entsprechenden Buttons. Für Autoren und Titel wirdeine neue Zeile im entsprechenden Feld hinzugefügt und das Programm in denoben beschriebenen Editiermodus versetzt. Für das Hinzufügen eines neuenSachgebiets wird ein neues Fenster geöffnet, in dem die neue Sachgebiets-nummer eingegeben werden kann. In diesem Fenster wird gleichzeitig das zuraktuell 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 linkenoberen Fensterecke (siehe Abb. 18). Das Programm gibt dann die nächste zuvergebende Inventarnummer vor. Diese kann jedoch geändert werden. Es wirdein leerer Eintrag angezeigt, der ausgefüllt werden muß. Zu einem Datensatzgehören mindestens eine Inventarnummer, ein Autor, ein Titel sowie der Stand-ort. Weitere Autoren, Titel und Sachgebiete können dann wie oben beschriebenhinzugefügt werden (siehe Abb. 21).

36

Abb. 21: Neues Buch hinzufügen

Mit Hilfe des „Programm beenden“ Buttons wird die Bibliotheksverwaltungbeendet.

3.4 Das Leihprogramm

Das Leihprogramm dient zur Eingabe der Entleihungen, Verlängerungen undRückgaben sowie zur Eingabe und zum Bearbeiten der Benutzerdaten durch dieBibliotheksmitarbeiter. Deshalb wurde besoders auf eine schnelle, routinemäßigeEingabe und nicht so sehr auf eine selbsterklärende Benutzerschnittstelle wert-gelegt.

37

Abb. 22: Das Leihprogramm

Mit Hilfe des „Programm beenden“ Buttons wird das Leihprogramm beendet.

Nach dem Programmstart steht der Eingabefokus bereits auf der Inventar-nummer. Nach Eingabe der Inventarnummer wird mit Hilfe der Eingabetaste indas Feld Ausleihart gewechselt, sofern das Buch in der Datenbank vorhanden ist.Ist das Buch nicht vorhanden, wird rechts neben der Inventarnummer ein „Buchnicht vorhanden“ eingeblendet. Mit der Esc-Taste kann man immer zum vor-herigen 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 momentaneAusleihart sowie das Mahndatum angezeigt. Ist das Buch bereits entliehen, sowerden Informationen über den Entleiher unterhalb der Eingabefeldern ange-zeigt.

Ist das Buch nicht entliehen, so sind die folgenden Eingaben möglich:• N: Normale Leihe (6 Wochen)• S: Semesterleihe (15.2. / 15.8.)• D: DauerleiheNach dem Druck auf eine der Tasten springt die Eingabe dann zum Feld CRef.

38

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 Mahndatumunterhalb des alten angezeigt.

Im Feld Cref muß das Namenskürzel des Entleihers eingegeben werden. Dies istbei 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 ab-geschlossen. Ist der Entleiher bereits in der Datenbank vorhanden, so wird dieAusleihe ausgeführt, die Entleiherinformationen angezeigt und zur Eingabe einerder nächsten Inventarnummer gesprungen.

Ist der Entleiher nicht vorhanden, so wird das Fenster zur Eingabe der Entleiher-daten geöffnet. Hier können die entsprechenden Daten eingegeben werden. Ab-geschlossen wird die Eingabe mit dem „OK“ Button, der „Abbrechen“ Buttonoder 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 denDatensatz des aktuell angezeigten Entleihers bearbeiten. Hierzu öffnet sich dasbereits oben beschriebene Fenster, in dem die entsprechenden Eingaben vorge-nommen werden können.

39

3.5 Das Programm zum löschen eines Entleihers

Das Programm dient zum Löschen von Entleihern, die keine Bücher mehr ent-liehen haben. Nach dem Start des Programms wird eine Liste aller Entleiher an-gezeigt, die keine Bücher mehr entleihen haben. Zum Löschen eines Entleihersmuß ein Doppelklick über seinem Namen ausgeführt werden.

Abb. 24: Entleiher löschen

Nach dem die folgende Sicherheitabfrage mit OK beantwortet wurde, wird derEntleiher entgültig aus der Datenbank gelöscht.

Abb. 25: Die Sicherheitsabfrage

40

3.6 Das Mahnprogramm

Abb. 26: Das Mahnprogramm

Nach der Auswahl des Druckers wird mit dem „Start“-Button der Mahnvorganggestartet. Die Mahnungen für die Mitarbeiter werden auf der Festplatte gespei-chert, die übrigen auf dem ausgewählten Drucker ausgegeben.

41

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 einzelnenProgramme eingegangen.

4.1 Benötigte Programme

Es werden Konvertierungstools zum Einlesen der alten, in großen Textdateienerfaßten, Daten in die neue Datenbank benötigt. Wegen der besseren Übersicht-lichkeit, und um Fehler beim Konvertieren zu vermeiden, werden hierzu zweiProgramme eingesetzt, für jede Ausgangsdatei eines.

Die Verwaltung selbst erfolgt mit zwei Programmen, eines dient zur Verwaltungdes Buchbestandes, das andere zur Verwaltung der Nutzer und Ausleihdatensowie zum Erstellen von Mahnungen. Diese Trennung ist sinnvoll, da die Ver-waltung und die Erfassung der Benutzerdaten sowie der Ausleihen von verschie-denen Personen vorgenommen wird.

4.2 Benutzerschnittstellen und Funktionsbeschreibung

Die Benutzerschnittstellen der einzelnen Programme sollen ein möglichst ein-heitliches Aussehen erhalten. Dies versetzt den Benutzer in die Lage, nach derEinarbeitung in eines der Programme auch die anderen Problemlos bedienen zukönnen. Für die Programme wurde eine feste Fenstergröße von 800x600 Punktegewählt, da ein Skalieren der Anzeige auf verschiedene Fenstergrößen die Über-sichtlichkeit verschlechtern würde und um die Nutzung des Programms auf altenComputern mit geringerer Bildschirmauflösung zu ermöglichen.

Die Bibliothekskonvertierung liest einen Datensatz aus der alten Gesamtdaten-bank ein und zerlegt diesen in die einzelnen Einträge. Das Programm versuchthierbei, die Spalte Autor/Titel automatisch zu zerlegen. Ist dieses nicht möglich,

42

so muß der Benutzer eine Korrektur vornehmen. Anschließend wird der Daten-satz in der neuen Datenbank gespeichert.

Der Ausleihkonverter spricht die alte Ausleihdatei und die Entleiherdatei miteinem ODBC-Text-Treiber als Datenbank an. So werden mit einer SELECT-Anweisung alle entliehenen Bücher ausgewählt. Dann wird zu jedem entliehenenBuch zunächst ein Entleiher in der neuen Datenbank gesucht. Ist dort kein Ein-trag vorhanden, wird ein Entleiher in der alten Entleiherdatenbank gesucht. DieAusleihe wird anschließend per INSERT-Anweisung in die Datenbank eingetra-gen, 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 Eintra-gen in die neue Datenbank eine Trennung von Name und Vorname durchgeführt.Bei der Konvertierung werden alle alten Karteileichen aus der Datenbank ent-fernt, da nur die aktuellen Benutzer übernommen werden sollen.

Für die Bücherverwaltung werden Funktionen zum Editieren und Hinzufügenneuer Bücher benötigt. Die datensatzweisen Editierfunktionen stellen dieAnzeigeelemente von Delphi hierbei zur Verfügung, das Programm muß dazudas Editieren freigeben und abschließend für den bearbeiteten Datensatz einCommit oder Rollback auslösen. Beim Hinzufügen wird ein leerer Datensatzvom Programm generiert und dann genau wie beim Editieren vom Benutzer be-arbeitet. Falls das Hinzufügen abgebrochen werden soll, wird dann ebenfalls einRollback, sonst ein Commit ausgeführt.

Die Ausleih- und Benutzerverwaltung hat im Prinzip zur Bücherverwaltung ähn-liche 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 Funktionenzum Eingeben von Ausleihen, Verlängerungen und Rückgaben nötig. Zu guterLetzt wird eine Mahnfunktion benötigt, die für alle Benutzer der Ausleih-bibliothek automatisch Mahnungen erstellt und ausdruckt bzw., sofern eine E-Mailadresse bekannt ist, zum späteren Versand als Textdatei speichert. Einautomatischer Versand ist hier nicht sinnvoll, da einige Nutzer ihre Bücher direktin die Bibliothek zurückstellen, und daher vor dem Mahnen die Richtigkeit derMahnungen überprüft werden muß.

Darüber hinaus enthält das Programm eine Suchfunktion, deren Eingabefensterder WWW-Schnittstelle, zur besseren Orientierung des Anwenders, nach-

43

empfunden ist. Die Anzeige erfolgt in einem Fenster, das dem der Bibliotheks-verwaltung ähnlich gestaltet ist.

Auf die Realisierung einer Suchfunktion wurde hier verzichtet, da diese über daWWW bereitgestellt wird.

4.3 Realisierung der Programme

Zur Realisierung der Programme bleibt nach der Vorstellung der Benutzer-schnittstellen nicht mehr viel zu sagen. Deshalb werden im folgenden nur diewesentlichsten, selbst erstellten, Prozeduren vorgestellt. Zusätzlich wird ein kur-zer Überblick über die Module geben, die ja, wie bei der Vorstellung von Delphierwähnt, jeweils einem Formular entsprechen.

4.3.1 Die Bestandsverwaltung

Die Bestandsverwaltung setzt sich aus vier Modulen zusammen. Dazu gehörendas Modul bibverw1, in dem sich das zentrale Formular, also das Hauptfensterder Anwendung befindet. Dem Modul DataModule2, das als nicht sichtbaresFormular für die Datenbankverbindung zuständig ist sowie den Modulen Sach-gebHinzu und InvNrAbfr. Sie entsprechen den Formularen zum Hinzufügeneines Sachgebiets bzw. der Abfrage der Inventarnummer zum Springen in derDatenbank.

Im DataModule2 befindet sich ein TDataBase-Objekt für die Transaktions-kontrolle sowie mehrere TTable- und TQuerySQL-Objekte für die Datenbank-anbindung. Im einzelnen sind das TTable-Objekte für die Tabellen Buch undInventur, sowie TQuerySQL-Objekt für die Abfrage der Autoren und Titel eineBuches. Das TQuerySQL-Objekt für die Autorenabfrage enthält den folgendemSQL-String:

select * from autoren where Inventarnummer = :InvNr;

Hierbei ist :InvNr ein Parameter, dem mit Hilfe des Objektinspektors als Integer-Parameter definiert wurde.

44

Weiterhin sind TQuerySQL-Objekte vorhanden, die zur Abfrage der Sachgebietebenötigt werden.

Um zu zeigen, was an Programmierleistung erforderlich war, wird nun die fol-gende Prozedur aus dem DataModule2 vorgestellt. Sie wird aufgerufen, wennden Verweisen ein neuer Eintrag hinzugefügt wurde und setzt dann die Verweis-nummer 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 deshalbnur scheinbar Überflüssig.

Mit dem Konstrukt DataModule2.TableBuchInventarnummer.AsString erfolgtder Zugriff auf den aktuellen Wert des Feldes Inventarnummer im ObjektTableBuch, als dem TTable-Objekt das mit der Relation Buch verbunden ist. DasObjekt TableBuchInventarnummer ist ein von Delphi generiertes Objekt zumZugriff auf das Feld. Alternativ wäre auch ein Zugriff der Form Table-Buch.FieldByName(‘Inventarnummer‘) möglich. Die Methode AsString liefertden Feldinhalt als String im Delphi-Format zurück.

Es sind mehrere kurze Prozeduren dieser Art vorhanden. Eine detaillierte Er-läuterung aller Prozeduren würde jedoch den Rahmen dieser Arbeit sprengen.Die Prozeduren sind aber alle leicht lesbar und somit selbsterklärend. Eine kurze

45

Erläuterung der Prozeduren ist im Anhang A zu finden. Da das DataModuleselbst auch ein Formular, und somit ein Objekt ist, darf die Unit nicht so wie dasin ihr enthaltene Formular heißen. Daher heißt das Formular DataModule2, wel-ches im Anhang in der Datei „Datamodule1.pas“ zu finden ist

In den anderen Modulen befinden sich vor allem kurze Prozeduren, die nacheinem Wechsel des Datensatzes die Anzeige aktualisieren und die jeweils zueinem Button gehörende Funktion ausführen. Das einfachste Beispiel ist die fol-gende Prozedur, die, wie man ihrem Namen entnehmen kann, zum „Programmbeenden“-Button gehört:

procedure TForm1.ButtonEndeClick(Sender: TObject);begin Close;end;

Mit Close wird das Formular geschlossen. Da es sich hierbei um das Haupt-fomular der Anwendung handelt, wird diese somit beendet.

Die anderen Programme, die dem Benutzer zur Verfügung stehen, enthalten auchjeweils ein DataModule2, das jeweils aus dem obigen abgeleitet wurde. Diesewurden jedoch dem jeweiligen Programm angepaßt.

4.3.2 Das Leihprogramm

Das Programm Leihverwaltung besteht aus den Modulen Main, DataModule2und Cref. Hierbei gehört das Modul Cref zum Formular Entleiherdaten be-arbeiten und enthält lediglich diverse einzeilige Editor-Objekte. Im Modul Mainerfolgt die restliche Programmsteuerung als Reaktion auf Tastendrücke desBenutzers, deshalb haben die Prozeduren auch jeweils den Namen onKeyPress,wobei jedem Edit-Objekt des Formulars eine eigene onKeyPress-Prozedur zuge-ordnet ist.

46

4.3.3 Das „Entleiher löschen“ Programm

Des Programm zum löschen nicht mehr benötigter Entleiher ist das einfachst undkleinste der vier Programme. Es besteht aus einem Modul DataModule2 unddem Modul main. Mit Hilfe der SQL-Anfrage QueryKandidaten werden zu-nä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 ewhere (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 Sicherheits-abfrage wird dieser gelöscht. Hierzu werden zunächst alle Einträge in der Rela-tion „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;

47

end; StrDispose(p);end;

Die hier vorgestellt Prozedur nutzt die zweite Möglichkeit, SQL-Anfragen zustellen, sie werden in dieser Prozedur zur Laufzeit generiert. Hierfür wurde imDataModule2 die Instanz QuerySQL von TQuerySQL vorgesehen. Zunächstwird hier ermittelt, wo der Doppelklick gemacht wurde und anschließend derText für die Sicherheitsabfrage zuammengesetzt. Nach dem diese mit OK be-antwortet wurde, werden dann die beiden benötigten SQL-Anfragen generiertund ausgeführt. Mit DBGrid1.Update wird am Ende die Bildschirmanzeigeaktualisiert.

4.3.4 Das Mahnprogramm

Das Programm Mahnen schließlich besteht nur aus zwei Modulen, nämlicheinem schon bekannten DataModule2 und dem Modul Mahnen, in dem sichwiederum die Prozedur Mahnen befindet, die das eigentliche Mahnen erledigt.Hierzu werden zunächst die zu mahnenden Personen mit Hilfe der folgendenSQL-Anweisung ermittelt.

select distinct A.Cref Cref, Name, Vorname, Titel, Strasse, Plz, Ort, Mitarbeiter, Institut, Email, Mahnsumme, Aufnahmedatumfrom Ausleihe A, Entleiher Ewhere (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. DieMahnungen für die Mitarbeiter werden als Datei auf der Festplatte abgelegt, dieübrigen auf dem eingestellten Drucker ausgegeben.

48

Zum Abschluß folgt hier nun noch eine Übersicht über die Programme undModule. Ausdrücklich muß noch einmal daruf hingewiesen werden, das es sichbei den jeweiligen DataModule2 nicht um identische Module handelt.

Borland Database Engine

DataModule2

Main

Cref

Leihverwaltung

DataModule2

BibVerw1

SachgebHinzu

InvNrAbfr

Bestandsverwaltung

DataModule2

Main

Enleiher löschen

DataModule2

Mahnen

Mahnen

SQL-Server

Abb. 27: Programmübersicht

49

5. Entwurf der WWW-Schnittstelle

In diesem Kapitel wird die Benutzerschnittstelle für die WWW-Seite derBibliothek vorgestellt. Außerdem wird auf die Realisierung der Webseiteneingegangen.

5.1 Die Benutzerschnittstelle

Die Webschnittstelle bietet die Möglichkeit, nach den folgenden Einträgen zusuchen:• Inventarnummer• Autor,• Titel,• Erscheinungsjahr (≤,=,≥)• Erscheinungsort und• ISBN.

Bei Angabe einer Inventarnummer werden alle anderen Angaben ignoriert, dadie Inventarnummer eindeutig ist. Wird die Anfrage gestartet, so wird nach derInventarnummer gesucht und alle zu diesem Buch gehörigen Informationen aus-gegeben.

Wird ein Autor gesucht, ist es nur nötig, die ersten Buchstaben des Nachnameneinzugeben, und es werden automatisch alle Autoren, die mit der Buchstaben-kombination anfangen, gesucht. Bei der Suche nach einem Titel muß man einenTeilstring des Titels angeben, und es werden alle entsprechenden Bücher ausge-geben, hierbei werden auch die Verweise durchsucht. Um Bücher aus bestimm-ten Erscheinungsjahren zu suchen, kann man die Jahreszahl angeben und sichalle Bücher aus dem entsprechenden Jahr anzeigen lassen, oder die Suche auf dievorherigen oder nachfolgenden Jahre zu beschränken.

Der Erscheinungsort wurde bei der Entwicklung dieser Datenbank als neuesInformationsfeld aufgenommen und wird daher erst für Bücher eingetragen, dienach der Einführung dieser Datenbank und der zugehörigen Programme in derBibliothek aufgenommen werden. Um Bücher nach Erscheinungsorten zu

50

suchen, ist es wiederum nur erforderlich, die ersten Buchstaben des Erschei-nungsortes anzugeben.

Die ISBN-Nummer muß bei der Suche exakt eingegeben werden. Teilstringsoder der Anfangsteil einer ISBN-Nummer liefern kein Ergebnis zurück. Außer-dem ist bei der Suche nach ISBN-Nummern zu berücksichtigen, daß nur etwajedes dritte Buch diesen Eintrag in der Datenbank besitzt.

Weiterhin kann man die Suche auf Bibliotheksteile einschränken (z.B. die Aus-leihbibliothek oder die Kongreßbibliothek). Werden mehrere Felder desAnfrageformulars ausgefüllt, so wird nach allen Büchern gesucht, auf die dieseAngaben zutreffen.

Das Anfrageergebnis wird sortiert ausgegeben. Als Sortierung voreingestellt istdas Erscheinungsjahr in absteigender Reihenfolge. Der Benutzer kann dieSortierung nach einem der folgenden Merkmalen sowohl aufsteigend als auchabsteigend 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 Buchausgegeben. Wird nach einem Autor gesucht, und wird dieser z.B. als zweiterAutor gefunden, so wird dieser zusätzlich ausgegeben. Entsprechend werdenauch die Verweise durchsucht, und auch die erweiterten Verweise mit im Ergeb-nis ausgegeben. Bei der erweiterten Anzeige werden alle Informationen zu denjeweiligen Büchern angezeigt.

Als alternative wird eine Sachgebietssuche angeboten. Hierbei muß zunächst einObersachgebiet ausgewählt werden. Anschließend werden die zugehörigenUntersachgebiete angezeigt. Auch hier kann das Suchergebnis nach den Angabendes Benutzers sortiert werden, sowie zwischen einer einfachen und erweiterten

51

Anzeige der Ergebnises gewählt werden. Die Bildschirmausgabe entspricht derAnzeige der anderen Suchfunktion.

5.2 Realisierung

Im folgenden wird die Realisierung der Webschnittstelle erläutert. Hierbei wirdunterschieden zwischen der Standardsuche und Sachgebietssuche. Die hier fol-genden Codeauschnitte (HTML und VB-Script) wurden zur besseren Lesbarkeitanders formatiert.

5.2.1 Die Standardsuche

Um die größtmögliche Kompatibilität in Webbrowsern zu bieten, werden nureinfache standardisierte HTML-Befehle genutzt. Somit ist die Recherche sowohlmit 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 aufdem Server ausgeführt (siehe Abb. 28).

Das Suchformular besteht aus reinem HTML-Code, das mit der Methode POSTdie 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>&lt;= <OPTION SELECTED> = <OPTION>&gt;= </SELECT> <INPUT NAME="Jahr" SIZE=4 MAXLENGTH=4>

Erscheinungsort : <INPUT NAME="Ort" SIZE=50 MAXLENGTH=50>

52

ISBN : <INPUT NAME="ISBN" SIZE=10 MAXLENGTH=10>

Standort : <SELECT NAME="Standort"> <OPTION SELECTED> Alle <OPTION> Pr&auml;senzbibliothek <OPTION> Pr&auml;senzbibliothek Gro&szlig;formate <OPTION> Ausleihbibliothek <OPTION> Lexika <OPTION> Seminarberichte <OPTION> Kongre&szlig;berichte <OPTION> Standexemplar <OPTION> Standexemplar Gro&szlig;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&uuml;cksetzen"></FORM></PRE>

53

Abb. 28: Beispiel einer Webanfrage

In diesem Suchformular werden die in 5.1 genannten Eingaben abgefragt und anden Webserver geschickt, der die ASP-Datei „searchresult.asp“ startet. Die ASP-Datei wertet diese Variablen aus.

Im folgenden wird nur Programmteile erklärt, welche die einfache Ergebnis-anzeige erläutert. Auf Besonderheiten der erweiterten Ergebnisanzeige wird imeinzelnen hingewiesen.

Im einfachsten Fall wird nach einer Inventarnummer gesucht. Es wird dann dasfolgende VB-Script ausgeführt:

54

<%IF (Request.Form("Invnr")<>"") THENDIM InvnrDIM BuchSQLDIM 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&uuml;ck zur <A HREF="/search.htm">Suchseite</A><%ELSE '-> Nein.

SET objAutor = Server.CreateObject("ADODB.Recordset")objAutor.Open AutorSQL, objConnectionSET objTitel = Server.CreateObject("ADODB.Recordset")objTitel.Open TitelSQL, objConnection 'Alle Autoren, sowie Titel und Verweise 'abfragen.

<BIG> Anzeigen von Inventarnummer:</BIG> <%=Invnr%><PRE>

55

<HR>Inventarnummer : <%=invnr%>......Status : <%SELECT CASE objBuch("status") CASE "S" %>Am Standort<% CASE "E" %>Entliehen<% CASE ELSE %>Keine Information<% END SELECT%><HR><BR><BR>Zur&uuml;ck zur <A HREF="/search.htm">Suchseite</A></PRE> 'Ausgabe der Buchinformationen.<%END IFobjBuch.CloseobjAutor.CloseobjTitel.Close

SET objBuch = NOTHINGSET objAutor = NOTHINGSET objTitel = NOTHING 'Datenbankverbindung schließen undDatensätze 'löschen.ELSE 'Inventarnummer suchen Ende...

Wird nach anderen Einträgen als der Inventarnummer gesucht, so wird jeweilseine 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 suchenIF Autor<>"" THEN Ausgabe2 = Ausgabe2 & ", a2.name zweitautor" Tabellen2 = Tabellen2 & ", autoren a2" Vergleich2 = Vergleich2 & " AND (a2.inventarnummer=b.inventarnummer) AND

56

(a2.name like '" & Autor & "%')"END IF

' Titel suchenIF 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 suchenIF 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 einstellenSELECT 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 demder Inventarnummeranfrage. Aus dieser Beispielanfrage wird somit die folgendeSELECT-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)

57

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 oderdritter Autor vorhanden ist, mußte hier zweimal die Relation Autoren aufge-nommen werden. Die erste Relation Autoren wird für die Ausgabe des Erstautorssowie für die Sortierung bei der Ausgabe benötigt. Die zweite wird für dieeigentliche Suche genutzt. Aus dem gleichen Grund wird auch die RelationVerweise zweimal benötigt. Der gefundene Eintrag wird in der Ergebnisanzeigeauf jeden Fall mit ausgegeben. Bei den Autoren wird dieser durch ein Kommagetrennt an den Erstautor angehängt. Bei den Verweisen wird eine zusätzlicheZeile 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

58

WHERE (b.inventarnummer=i.inventarnummer) AND (a.name like 'hardy%') AND (a.inventarnummer=b.inventarnummer) AND (b.inventarnummer=v.inventarnummer) AND (v.titel LIKE '%inequ%') AND (b.erscheinungsjahr>=1970) AND (Standort='Ausleihbibliothek') ORDER BY b.erscheinungsjahr DESC;

Hier werden die Realtionen Autoren und Verweise nur für die Sortierungbenötigt. Bei der Ausgabe wird zu jeder gefundenen Inventarnummer eine ein-zelne 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 Zeilebei einem Suchergebnis fehlen.

5.2.2 Die Sachgebietssuche

Die ASP-Datei „sachsearch1.asp“ generiert das Formular für die Obersach-gebietsauswahl (siehe Abb. 30).

Abb. 30: Sachgebietssuche (Teil 1)

59

<FORM ACTION="/sachsearch2.asp" METHOD="post"><PRE>Obersachgebiet : <SELECT NAME="Obersachgebiet"><%DIM strSQLSachDIM objConnectionDIM 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.MoveNextLOOPobjSach.CloseSET 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 derDatenbank ausgewählt und in das HTML-Formular eingefügt.

Nach der Auswahl des Obersachgebiets werden von der nächsten ASP-Seite allezugehörigen Untersachgebiete dazu angezeigt, und der Benutzer kann wie beider Standardsuchseite eine Sortierung vornehmen (siehe Abb. 31).

60

Abb. 31: Sachgebietssuche (Teil 2)

Für die Anzeige kann auch hier zwischen einer einfachen und erweiterten Aus-gabe gewählt sowie die Sortierung eingestellt werden. Mit eine SELECT-Anwei-sung werden jetzt alle Bücher aus der Datenbank angezeigt, die zu dieser Sach-gebietsnummer 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)

61

AND (b.inventarnummer=i.inventarnummer)ORDER BY b.Erscheinungsjahr DESC;

Abb. 32: Ergebnis der Sachgebietssuche

62

6. Ausblicke und Anmerkungen

Zum Abschluß möchten wir hier mögliche Erweiterungen darstellen sowieAnmerkungen zur benutzten Software geben.

6.1 Mögliche Erweiterungen der Datenbank und Schnittstellen

Als Erweiterung sind noch Katalogdrucke möglich, z.B. Inventarnummern-katalog, Autorenkatalog und Titel-/Verweiskatalog für die jeweiligen Biblio-theksräume. Außerdem könnte man ein separates Programm zur Inventur sowieder Auswertung erstellen. Die hierfür nötigen Felder sind in der Datenbankbereits vorhanden.

Denkbar, jedoch nur mit viel Zeitaufwand realisierbar, wäre auch eine Aufnahmevon Preprints in den Datenbestand. Der Aufwand entsteht hier allerdings wenigerbeim Anpassen der Datenbank, sondern vielmehr bei der Erfassung der vorhan-denen Preprints, da bisher noch kein Verzeichnis in elektronischer Formexistiert.

Fernziel könnte sein, daß die Benutzer ihre Ausleihen selbständig an einemTerminal in der Datenbank eintragen können, hierzu müßten allerdings erst ent-sprechende Kontrollmechanismen eingeführt werden, da sonst ein Bücher-schwund 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äßiggroß. Dieses liegt an der nicht optimalen Speicherung der Datensätze in derDatenbank. Bis zu diesem Zeitpunkt haben wir nur die Möglichkeit gefunden,den Speicherplatz zu optimieren, indem man die Daten in eine andere Datenbankumkopiert.

63

Während der Entwicklung der WWW-Schnittstelle ist es bei verschachteltenSELECT-Anweisung an den SQL-Server zu langen Wartezeiten gekommen. Wiesich herausstellte, optimierte der SQL-Server diese Anfragen nicht, obwohl keineAbhängigkeiten zwischen den inneren und äußeren SELECT-Anweisung bestan-den. Daher wurde die WWW-Schnittstelle zugunsten einer unverschachteltenSELECT-Anweisung umgestellt.

64

Anhang A: Beschreibung der einzelnen Prozeduren

Im folgenden werden die einzelnen Prozeduren nach Modulen (Units) sortiertkurz erläutert. Sie dienen, wie bereits oben erwähnt, der Reaktion auf bestimmteEreignisse, die Prozedurnamen sind so gewählt, daß man sie leicht einemEreignis 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.

65

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 Datenbankanwendungbenötigten Funktionen bereitgestellt.

procedure TableBuchAfterScroll

Wird nach dem Wechsel zu einer anderen Zeile in der Buchtabelle automatischaufgerufen. Ruft ihrerseits die Prozedur UpdateFields auf.

66

procedure QueryAutorNewRecord

Sorgt beim Einfügen eines neuen Autors dafür, daß dieser eine fortlaufendeVerweisnummer erhält.

procedure QueryVerweiseNewRecord

Wie QueryAutorNewRecord.

procedure UpdateFields

Sorgt dafür, daß die zum aktuellen Buch gehörenden Autoren, Verweise undSachgebiete angezeigt werden.

A.3.2 (bibverw1.pas)

Dies ist das Hauptmodul der Bücherverwaltung. Es erzeugt das Hauptfenster derAnwendung 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 „Änderungverwerfen“ und „Änderung speichern“ deaktiviert und ihr Status gespeichert.Desweiteren wird an die Datenbank ein „Start Transaction“ gesendet.

67

procedure ButtonAnderungVerwerfenCick

Führt ein Rollback auf der Datenbank aus, beendet den Editiermodus und aktua-lisiert die Anzeige, zusätzlich werden alle Buttons in den Zustand vor demEditieren versetzt.

procedure ButtonAenderungSpeichernClick

Führt ein Commit auf der Datenbank aus, sonst wie ButtonAenderung-VerwerfenClick.

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 isthierbei, daß durch das Anlegen eins neuen Autors automatisch die Prozedurdatamodule1.QueryAutorNewRecord aufgerufen wird.

procedure ButtonTitelHinzufuegenClick

Wie ButtonAutorHinzufügenClick.

procedure ButtonZuInvNrSpringenClick

Öffnet ein Fenster, indem der Benutzer zur Eingabe einer Inventarnummer auf-gefordert 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, zurKontrolle wird gleichzeitig das neue Sachgebiet angezeigt. Bricht der Anwenderdie Eingabe ab, so wird kein Sachgebiet hinzugefügt.

68

A.4 Das Leihprogramm

A.4.1 (main.pas)

procedure FormCreate

Öffnet die Datenbank und initialisiert die Datumsvariablen mit den für heutegeltenden Leihfristen für normale bzw. Semsterleihe.

procedure MaskEditInvNrKeyPress

Reagiert auf die Eingabetaste und überprüft, ob das Buch in der Datenbank vor-handen und ob es entliehen ist, aktualisiert die Anzeige und springt weiter zumFeld Ausleihart.

procedure EditArtKeyPress

Reagiert auf die Tasten R,V,S,N,D mit dem Eintrag der entsprechenden Art indas Feld und führt die Aktionen Rückgabe, Verlängerung oder Verlängerung bisSemsterende direkt aus und springt danach zur Inventarnummerneingabe, sonstzur Cref-Eingabe.

procedure EditCrefKeyPress

Überprüft nach Druck auf die Eingabetaste ob die Cref in der Datenbank vorhan-den 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 Inventar-nummerneingabe.

69

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äch-sten Eingabe. Die entsprechenden, hier nicht aufgeführten, KeyPress-Funktionender 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.

70

A.6 Das Mahnprogramm (Mahnen.pas)

procedure Mahnen;

Erstellt die Mahnungen. Hierzu wird zunächst eine Liste aller zu mahnendenPersonen abgefragt (QueryMahnungAn), anschließend werden die einzelnenMahnungen erstellt (QueryWelcheBuecher).

procedure ButtonStartClick;

Übernimmt den Drucker aus der Druckerauswahl und ruft die Prozedur Mahnenauf.

71

Abbildungsverzeichnis

Abb. 1: Die Delphi-Oberfläche...........................................................................8Abb. 2: Der SQL-Explorer .................................................................................9Abb. 3: Zugriffsweg vom Anwendungsprogramm auf den SQL-Server ............11Abb. 4: Ein TTable-Objekt, verbunden mit der Tabelle „Buch“ in der

Datenbank „Institutsbibliothek“...........................................................12Abb. 5: Die Microsoft Management Konsole....................................................13Abb. 6: ER-Schema Übersicht..........................................................................19Abb. 7: Der Entitytyp Buch ..............................................................................20Abb. 8: Der Entitytyp Entleiher ........................................................................21Abb. 9: Neues Datenbankmedium erstellen ......................................................27Abb. 10: Neue Datenbank erstellen ..................................................................28Abb. 11: Wiederherstellen der mitgelieferten leeren Datenbank........................28Abb. 12: Benutzer erstellen ..............................................................................29Abb. 13: Die ODBC-Schnittstelle.....................................................................30Abb. 14: Das Startprogramm ............................................................................31Abb. 15: Die Passworteingabe..........................................................................31Abb. 16: Der Bibliothekskonverter...................................................................32Abb. 17: Der Ausleihkonverter.........................................................................33Abb. 18: Die Bibliotheksverwaltung.................................................................34Abb. 19: Zu Inventarnummer springen .............................................................34Abb. 20: Sachgebiet hinzufügen .......................................................................35Abb. 21: Neues Buch hinzufügen .....................................................................36Abb. 22: Das Leihprogramm ............................................................................37Abb. 23: Entleiherdaten bearbeiten...................................................................38Abb. 24: Entleiher löschen ...............................................................................39Abb. 25: Die Sicherheitsabfrage .......................................................................39Abb. 26: Das Mahnprogramm ..........................................................................40Abb. 27: Programmübersicht............................................................................48Abb. 28: Beispiel einer Webanfrage .................................................................53Abb. 29: Einfache Anzeige des Suchergebnises................................................57Abb. 30: Sachgebietssuche (Teil 1) ..................................................................58Abb. 31: Sachgebietssuche (Teil 2) ..................................................................60Abb. 32: Ergebnis der Sachgebietssuche...........................................................61

72

Literaturverzeichnis

BorlandHandbücher und Dokumentation zu Delphi 3 Client/ServerBorland

Gerald Deutsch, Michael Groß, Karsten Richter, Markus RichterDas große Buch – Delphi 3Data BeckerISBN 3-8158-1205-4

Michael EbnerDelphi 3.0 Datenbankprogrammierung: Entwicklung leistungsfähigerDatenbankanwendungenAddison-WesleyISBN 3-8273-1315-5

Scott Hillier, Dan Mezick, New Technology Solution, Inc.Active Server Pages – ProgrammierungMicrosoft PressISBN 3-86063-449-6

Andreas KoschDelphi-3-Datenbankentwicklung: Grundlagen relationaler DatenbankenFranzisISBN 3-7723-4033-4

Udo LipeckSkript zur Vorlesung Datenbanksysteme 1+2 (WS97/98 SS98)Begleitmaterial zum Oracle/SQL-KursUniversität Hannover

73

Stefan MünzSelfHTMLhttp://www.netzwelt.com/selfhtml/

Edwin SchickerDatenbanken und SQLB.G. Teubner StuttgartISBN 3-519-02991-X