(Komplex-)Praktikum Rechnernetze Komplex II Praktikumsversuch - WWW-Datenbankanbindung mittels ASP - Praktikumsdokumentation Betreuer: Dr. A.Luntovskyy Bearbeitung: U.Winkler, F.Pretzer Inhaltsverzeichnis 1. Einleitung ......................................................................................................................................... 3 2. Grundlagen ....................................................................................................................................... 3 2.1. Dynamische Webseiten ............................................................................................................. 3 2.1.1. clientseitige Verarbeitung .................................................................................................. 3 2.1.2. serverseitige Verarbeitung ................................................................................................. 3 2.2. CGI ............................................................................................................................................ 4 2.3. HTML ....................................................................................................................................... 7 2.3.1. Formulare ........................................................................................................................... 7 2.3.2. Eingabezeile ....................................................................................................................... 7 2.3.3. Auswahllisten ..................................................................................................................... 8 2.3.4. Radiobuttons und Checkboxes ........................................................................................... 8 2.3.5. Submit ................................................................................................................................ 9 2.4. SQL ........................................................................................................................................... 9 2.5. ASP ......................................................................................................................................... 11 2.6. Installationsanleitung .............................................................................................................. 15 2.6.1. Installation und Konfiguration des Internet Information Server ...................................... 15 2.6.2. Access 2003 und ODBC .................................................................................................. 17 3. Der Versuch ................................................................................................................................... 20 3.1. Versuchsziel ............................................................................................................................ 20 3.2. Versuchsdurchführung ............................................................................................................ 20 3.3. Systemvoraussetzung .............................................................................................................. 21 3.4. Die Datenbank......................................................................................................................... 21 3.5. Aufgabenstellung .................................................................................................................... 24 4. Wichtige Hinweise ......................................................................................................................... 27 4.1. FAQ ......................................................................................................................................... 27 4.2. Test der Logins an den Rechnern des Komplexpraktikums ................................................... 28 Literatur .............................................................................................................................................. 31 2 1. Einleitung Wer heutzutage an einen professionellen Webauftritt denkt, sollte bei der Umsetzung vor allem auch an die dynamische Erzeugung von Webseiten denken. Unternehmensinterne Datenbanken und andere Informationsquellen lassen sich damit mehrfach und vor allem effektiver nutzen. Der Aufwand zur Pflege und Aktualisierung sinkt. Jedoch ist ihre Anbindung mit statischen HTML nur schwer zu realisieren. 2. Grundlagen 2.1. Dynamische Webseiten Dynamische Webseiten haben gegenüber statischen Webseiten den Vorteil, dass bei ihnen der Inhalt während des Aufrufs generiert wird. Sie reagieren auf Eingaben, werten diese aus und liefern danach ein Ergebnis zurück. Prinzipiell unterscheidet man hierbei eine clientseitige und eine serverseitige Verarbeitung der Daten. 2.1.1. clientseitige Verarbeitung Clientseitige Verarbeitung ist dadurch gekennzeichnet, dass nach Aufruf des Dokuments, mit Hilfe des Browsers das Skript ausgeführt wird. Es findet also keinerlei Verarbeitung auf der Serverseite statt. Vorteil dieser Technik ist, dass die Last der Abarbeitung auf der Clientseite liegt. Die Darstellung der Seite erfolgt dadurch meist schneller. Nachteile sind jedoch die Einsehbarkeit des Codes und das Fehlen von Erweiterungen zur Ansicht der Seite (Plugins etc.). 2.1.2. serverseitige Verarbeitung Serverseitige Verarbeitung hingegen vollzieht sich vollkommen hne Mitwirken des Clients. Nach Aufruf des Dokuments bzw. des Skriptes wird dieses auf dem Server verarbeitet und nach Beendigung wird entweder eine Webseite generiert oder es werden nur die Ausgabeparameter übertragen. Vorteile dieser Technik sind die hohe Dynamik und die Unsichtbarkeit des Codes. Darüber hinaus ist die Unabhängigkeit von den Browsereinstellungen des Benutzers vorteilhaft. Nachteilig wirkt sich ein Geschwindigkeitsverlust aus. Abbildung 2.1.1. und Abbildung 2.1.2 verdeutlichen die Arbeitsweise nochmals 3 Abbildung 1: clientseitige Verarbeitung Abbildung 2: serverseitige Abarbeitung 2.2. CGI Die Kommunikation zwischen Browser und Server erfolgt über das HTTP-Protokoll. Der Aufruf eines serverseiteigen Programms durch den Benutzer (Eingabe der URL), erfordert nun eine Schnittstelle, um die Programme mit Parametern(eingegebene Daten) zu versorgen. Diese Schnittstelle zwischen dem Webserver und dem Programm nennt man Common Gateway Interface CGI. Ein serverseitiges Programm – kurz CGI-Skript genannt - wird nun entweder durch die HTTPMethode GET oder POST aufgerufen. Die GET-Methode übermittelt dabei die Parameter durch Anfügen an die URL und so mit der 4 Belegung der Umgebungsvariablen QUERY_STRING . Die Abtrennung der einzelnen Informationen erfolgt hierbei durch Fragezeichen. Die POST-Methode hingegen übermittelt die Informationen direkt an die Standardeingabe. Das CGI-Skript muss demzufolge die Standardeingabe abrufen können. Das Programm entpackt nun die empfangene Zeichenkette, nimmt sie als Parameter und steuert somit den Programmablauf. Die Standardausgabe des Skriptes wird als neue Webseite an den Browser gesendet. Die Skripte können auch Daten auf dem Server speichern oder Informationen von anderen Applikationen verwenden z.B. Datenbanken. Es wird deshalb vor der Beendigung des Skriptes ein Header erzeugt, damit der Server erkennt, was für eine Art Dokument generiert wird. Ein Beispiel für ein sehr einfaches CGI-Skript in C: 1: #include <stdio.h> 2: #include <stdlib.h> 3: 4: int main (void) { int ch; 5: int n, i; 6: char * cl; 7: 8: printf ("<html>\n<body>\n"); 9: 10: cl = getenv ("CONTENT_LENGTH"); 11: n = 0; if (cl) sscanf (cl, "%d", &n); 12: 13: printf ("<b>CONTENT_LENGTH = %d </b>\n", n); 14: for (i = 0; i < n; i++) 15: { 16: ch = getchar (); putchar (ch); 17: } 18: 19: printf("</body></html>"); 20: return 0; 21: } Ein CGI-Script kann aus einer HTML-Datei heraus auf verschiedene Arten aufgerufen werden: a) über Formular: Dabei steht im <form>-Tag der Aufruf des Skriptes 5 Beispiel: ... <form name=“suche“ method=“post“ action=“flug.php“> <select name = „abflughafen“ size=1> ... </form> In diesem Beispiel wird der Parameter durch die Standardeingabe übergeben – zu erkennen an der POST-Methode b) über Verweise: Bei der URL-Angabe des Verweises wird das Skript direkt angegeben. Beispiel: ... <a href=“flug.php?name=dre“> Info </a> ... Hierbei ist der Name des Skriptes flug.php und der zu übergebende Parameter heißt name=dre . c) über Grafikreferenzen: Auch hier genügt die Angabe der URL Beispiel: ... <img src=“flugchart.php?name=12“> ... Wichtig an diesem Beispiel ist, dass das Skript auch eine Grafik produziert. Wie wir sehen kann die Programmierung eines CGI Skriptes durchaus anspruchsvoll sein. In HTML-Code eingebettete Scripte wie PHP vereinfachen dies, da viele Anweisungen, die HTMLCode ausgeben, entfallen. 6 2.3. HTML Wir möchten an dieser Stelle nicht intensiv auf HTML eingehen. Wir empfehlen das Werk von Thomas Münze zum Selbststudium und als Nachschlagewerk [1]. 2.3.1. Formulare Formulare stellen in HTML eine Möglichkeit dar, mit der der Anwender Textfelder ausfüllen, aus Listen und Knöpfen Einträge auswählen und dieses ausgefüllte Formular mittels drücken einer Schaltfläche absenden kann. Alles was zwischen den Tags <form> und </form> steht gehört zu dem Formular. Darüber hinaus können Sie weitere Objekte, wie Textabsätze, Tabellen usw. platzieren, um die Form und Anordnung der Formularelemente zu erzwingen. Beispiel: ... <form name=“suche“ method=“post“ action=“flug.php“> ... </form> ... action im einleitenden <form>-Tag gibt an, was mit den Formulardaten passieren soll, wenn der Anwender das Formular abschickt. 2.3.2. Eingabezeile Eine Eingabezeile ist ein einzeiliges Eingabefeld, welches durch das <input>-Tag definiert wird. Dabei ist zu beachten, dass jede Eingabezeile über einen internen Namen ohne Umlaute und Sonderzeichen verfügt. Beispiel: ... <form action=“person.php“> name=“person“ method=“post“ <table> <tr><td> Vorname </td><td> <input name=“vorname“> </td></tr> <tr><td> Nachname </td><td> <input name=“nachname“> </td></tr> </table> </form> ... Neben diesem einzeiligem Eingabefeld bietet HTML noch weitere Möglichkeiten der Texteingabe, wie z.B. mehrzeilige Eingabefelder oder Eingabezeilen für Passwörter. Mehr Informationen dazu findet man wie oben genannt unter [1]. 7 2.3.3. Auswahllisten <Select name=''auswahl'' size=1> Leitet eine Auswahlliste ein. Jede Auswahlliste muss einen eindeutigen internen Namen tragen, der ebenfalls keine Umlaute und Sonderzeichen enthalten darf. size gibt an, wie viele Einträge der Auswahlliste gezeigt werden. option value=''1'' definiert einen Eintrag in der Auswahlliste wobei die optionale Angabe value den Text festlegt, der abgesendet wird. Fehlt dieser Parameter so wird der String des selektierten Eintrages gesendet. Beispiel: <form name="flughafen" methode="post" action="flughafen.php"> <option>Flughafen Dresden <!-- sendet "Flughafen Dresden" --> <option value="101">Flughafen Berlin <!-- sendet "101" --> <option selected>Flughafen Breitenbrunn <!-- Vorauswahl --> </form> Der zusätzliche Parameter selected wählt diesen Eintrag als Voreinstellung aus. Auch hier wollen wir auf weiterführende Möglichkeiten auf [1] verweisen. 2.3.4. Radiobuttons und Checkboxes Radiobuttons sind eine Gruppe von beschrifteten Auswahlknöpfen, von denen immer nur einer markiert sein kann. Radiobuttons werden ähnlich einem Eingabefeld durch den Tag <input type=radio name=''smoker'' value=''yes''> definiert. Der value -Parameter bestimmt den übermittelten Wert. <form name="raucher" methode="post" action="buchung.php"> <input type="radio" name="smoker" value="1">Raucher <br> 8 <input type="radio" name="smoker" value="0">Nichtraucher <br> </form> 2.3.5. Submit Um die Daten an den Server zu senden, bedarf es in dem Formular noch einer speziellen Schaltfläche – dem Submitknopf Beispiel: ... <input type="submit" value="Formular absenden"> ... Der Parameter value beschriftet diese Schaltfläche mit dem angegebenen Text. 2.4. SQL Structured Query Language SQL ist eine standardisierte Abfragesprache für relationale Datenbanken. Die Idee hinter SQL sollte sein, eine Abfragesprache für Nicht-Programmierer zu schaffen, die ohne mathematische Notationen (Quantoren usw.) auskommt. SQL wird von allen kommerziellen Datenbankmanagementsystemen unterstützt. Jedoch weicht SQL in einigen Aspekten auch vom relationalen Modell ab. Insbesondere wird dies auffällig bei Relationen. Hier ist es in SQL gestattet, das dies Multimengen sein können. Diese Tatsache ist darin begründet, dass dadurch Geschwindigkeitsvorteile erzielt werden. Mittels SQL ist es möglich Datenbanken zu erstellen, zu manipulieren und zu warten. Wir möchten auch hier auf einschlägige Literatur und vor allem auf die Vorlesung „Datenbanken“ aus dem Grundstudium und dem dortigen Skript von Herrn Prof. Lehner verweisen. Die Grundstruktur einer SQL-Anweisung zur Datenbankabfrage lautet: SELECT SELECT_Liste FROM Tabellenname(n) WHERE-Klauseln ORDER BY-Klausel Die in der SELECT_Liste aufgeführten Spaltennamen bestimmen, welche Spalten zur Anzeige der Abfrageergebnisse ausgewählt werden sollen. 9 Nach dem Schlüsselwort FROM ist der Name der Tabelle(n) oder eines anderen Objektes (Sicht) anzugeben. Mit der WHERE-Klausel wird festgelegt, welche Reihen bei der Ausgabe der Abfrageergebnisse angezeigt werden sollen. Gesucht werden können Reihen • mittels Vergleichsoperatoren (= > < >= <= <>) • in Bereichen (BETWEEN , NOT BETWEEN) • in Listen (IN, NOT IN) • durch Zeichenfolgeübereinstimmung (LIKE , NOT LIKE) • mit unbekannten Werten (IS NULL, IS NOT NULL) • durch Kombination der genannten Typen (AND, OR ) und • durch Negation (NOT) . In der ORDER BY-Klausel können bis zu 16 Spaltennamen angegeben werden. Entsprechend dieser Reihenfolge wird sortiert. Darüber hinaus existieren folgende Standardfunktionen: • SUM (Summe) • AVG (Durchschnittliches) • MIN (Minimum) • MAX (Maximum) • COUNT (Werteanzahl) und folgende Standardschlüsselwörter: • ASC/DESC • FOR UPDATE OFF • GROUP BY • HAVING • INTO • FROM • ORDER BY • SAVE TO TEMP • SELECT • UNION • WHERE 10 Abschließend noch einige einfache Beispiele: SELECT DISTINCT Lieferant, Adresse FROM Waren SELECT COUNT (DISTINCT Lieferantencode) FROM Waren SELECT * FROM Personal WHERE Name LIKE `D%` SELECT * FROM Waren WHERE Stoffcode LIKE `M11_` SELECT Name, Vorname FROM Personal WHERE Adresse NOT LIKE `%Pirna` 2.5. ASP ASP – Active Server Pages - ist eine von Microsoft entwickelte Technologie, um serverseitig ausführbare Skripte erstellen zu können. Man erhält somit dynamische Webseiten. ASP ist Bestandteil des IIS (Internet Information Server) und IIS wiederum ist ein kostenlos von Microsoft zu Verfügung gestellter Webserver (die Installation des IIS als Testumgebung wird später noch beschrieben). IIS war ursprünglich nur unter Windows lauffähig. Mittlerweile ist er jedoch durch Drittanbieter auch für andere Betriebssysteme verfügbar. Abbildung 3: Abarbeitung eines Scriptes Zur Programmierung kann prinzipiell jede Skriptsprache verwendet werden, wobei der Code in HTML eingebettet wird. Hauptsächlich wird dazu jedoch VBScript eingesetzt. Das Grundgerüst eines ASP-Skriptes sieht dabei folgendermaßen aus: <%@ Language = VBScript %> <HTML> <HEAD><TITLE>ASP Beispiel 1</TITLE></HEAD> 11 <BODY> <P>Dies ist ganz normaler HTM L-Text.</P> <% Dim Text Text = "Dieser Text wurde dynamisch eingefügt." %> <P><%=Text%></P> </BODY> </HTML> ASP-Seiten werden mit der Dateiendung .asp abgespeichert. ASP enthält unabhängig von der verwendeten Skriptsprache 5 integrierte Objekte: Application Enthält globale Variablen, auf die von jeder Seite einer ASP Anwendung aus zugegriffen werden kann Session Speichert sämtliche Informationen zu einer bestimmten Benutzersitzung Server Erlaubt den Zugriff auf die Eigenschaften und Methoden des Servers Request Erlaubt den Zugriff auf Daten, die ein Browser bei einer HTTP Anforderung an den Server gesendet hat Response Damit lassen sich Daten an den Client übermitteln, indem diese in die Ausgabe eingefügt werden Beispiel zur Verwendung der Objekte: <%@ Language = VBScript %> <HTML> <HEAD><TITLE>ASP Beispiel 2</TITLE></HEAD> <BODY> <FORM ACTION="Beispiel2.asp" METHOD="POST"> 12 <INPUT NAME="Textfeld" TYPE="Text"> </FORM> <% Response.Write "<P>"&Request.Form("Textfeld") & "</P>" %> </BODY> </HTML> Datenbankanbindung mittels ASP ASP verwendet die ActiveX Data Objects (ADO), um auf Daten zuzugreifen. ADO ist ein HighLevel-Interface für den Zugriff auf OLE DB-kompatible Datenquellen und ODBC-kompatible Datenbanken. OLE DB (Object Linking + Embedding for Databases) ist eine Programmierschnittstelle zur Bereitstellung der Funktionalität verschiedener Datenbanksysteme (OLE DB Provider). ODBC (Open Database Connectivity) ist eine Technologie, die es durch den Einsatz spezieller Treiber erlaubt, auf unterschiedliche relationale Datenbanken mit Hilfe von SQL zuzugreifen. Es stellt also definierte Schnittstellen zum Zugriff zur Verfügung. Über das Objekt-Modell von ADO lässt es sich mit einer Skriptsprache, wie z.B. VBScript, nun bequem auf diese Schnittstellen zugreifen. Das ADO Objekt-Modell: - Connection Repräsentiert eine Verbindung zu einer Datenquelle - Command Enthält eine Abfrage, welche auf eine Datenquelle angewendet wird - Recordset Enthält alle Datensätze, die das Ergebnis einer Abfrage darstellen - Field Repräsentiert eine einzelnes Feld eines Datensatzes a) Verbindungsaufbau mittels ODBC: <% Set ConDB = Server.CreateObject("ADODB.Connection") 13 ConDB.Open "DSN=Testdatenbank" ConDB.Close %> DSN steht hierbei für den DSN-Namen der Datenbank (siehe Kapitel 2.6.3). Zu beachten ist, dass eine Verbindung zu einer Datenbank stehts geschlossen werden muss. b) Lesender Zugriff auf eine Datenbank (ODBC): <% Set RS = Server.CreateObject("ADODB.Recordset") RS.Open "SELECT name FROM booking", ConDB While Not RS.EOF Response.Write RS ("name") & "<BR>" RS.MoveNext Wend RS.Close %> c) Schreibender Zugriff auf eine Datenbank (ODBC): <% Set RS = Server.CreateObject("ADODB.Recordset") RS.Open "booking", ConDB, 0, 3 RS.AddNew RS ("name") = "Lustig" RS ("vorname") = "Peter" RS.Update RS.Close %> 14 d) Komplexeres Beispiel: <% ´´´´´´´´´globale Variablen´´´´´´´´´´´´´´´´´´´´´´´´´´´ Dim ConDB, RS, SQL ´´´´´´´´´Verbindung zur Datenbank aufbauen´´´´´´´´´´´ Set ConDB = Server.CreateObject("ADODB.Connection") ConDB.ConnectionTimeout = 30 ConDB.Open "neumerkel2" ´´´´´´´´´Ein leeres Recordset erzeugen´´´´´´´´´´´´´´´ Set RS = Server.CreateObject ("ADODB.Recordset") ´´´´´´´´´Beispielanfrage starten´´´´´´´´´´´´´´´´´´´´´ SQL = "SELECT id, name FROM airport" RS.Open SQL, ConDB ´´´´´´´´´´´Verbindung zur Datenbank beenden´´´´´´´´´´ ConDB.Close %> 2.6. Installationsanleitung 2.6.1. Installation und Konfiguration des Internet Information Server Um von zu Hause aus die Bearbeitung durchführen zu können ist es sinnvoll sich eine Testumgebung einzurichten. Microsoft stellt dafür den IIS kostenlos zur Verfügung. Die hier beschrieben Installation des IIS - Webserver wurde in dieser Form auf einen PC mit vorinstalliertem Windows XP durchgeführt. Die Installation und Konfiguration des IIS Webservers gestaltet sich auch unter Windows 2000 als einfach und unkompliziert. Prinzipielle Vorgehensweise: Start – Systemsteuerung – Software 15 Windowskomponenten hinzufügen/entfernen IIS – Internet Information Server auswählen Abbildung 4: Windowskomponenten hinzufügen/entfernen Um die Installation zu überprüfen kann nun im geöffneten Browser http://localhost eingegeben werden. Es öffnet sich daraufhin die Willkommensseite des IIS. 16 Abbildung 5: die Willkommenseite des IIS unter Windows XP 2.6.2. Access 2003 und ODBC Die Installation von Access 2003 geschieht im Rahmen einer Microsoft Office Installation und wird an dieser Stelle nicht näher beschrieben. 17 ODBC-Quelle Open Database Connectivity ODBC ist eine von Microsoft entwickeltes API mit dessen Hilfe man in einer Anwendung – mit Hilfe der Abfragesprache SQL - auf eine Datenquelle zugreifen kann. Dazu muss jedoch ein ODBC-kompatibler Treiber vorliegen. Dazu muss, bevor man auf die Datenquelle zugreift, die Datenquelle in ODBC eingebunden werden (sog. Systemdatenquelle einrichten). Dies geschieht mit Hilfe des ODBC Administrator. Vorgehensweise: in der Taskleiste Start - ControlPanel - Adminstrative Tools - Data Sources (ODBC) anklicken. Registerkarte USER - DSN wählen. (siehe Abbildung 3.4.) Knopf Add.. wählen. Microsoft Access Treiber wählen und den Knopf Finish drücken.(siehe Abbildung 3.5) Im anschließenden Dialogfenster im Textfeld Data Source Name einen symbolischen Namen vergeben, unter den die ODBC-Quelle angesprochen werden soll. In Abbildung 3.6 wurde der Name flugbuchung gewählt. Im gleichen Dialogfenster den Knopf Select wählen und die entsprechende Datenbankdatei auswählen. Sollte alles erfolgreich verlaufen sein, so müsste jetzt im Auswahlfeld des ODBC Data Source Administrator die ODBC Quelle flugbuchung erscheinen. Abbildung 6: ODBC Datenquellen Administrator Abbildung 6 Abbildung 7: ODBC-Setup 18 Abbildung 7: Auswahl des Microsoft Access-Treiber Abbildung 8: Dialog zur Auswahl der Datenquelle Abbildung 9: Auswahl der Access-Datenbank 19 Abbildung 10: Namensvergabe für ODBC-Datenquelle Abbildung 11: erzeugte ODBC-Datenquelle für flugbuchung 3. Der Versuch 3.1. Versuchsziel Ziel des Praktikumversuches ist es, dass der Student Kenntnisse über die serverseitige Anbindung einer Datenbank an einen Webserver mittels einer in HTML eingebetteten Skriptsprache erlangt. Als Basis dient eine Datenbank, die auch in anderen Praktikumskomplexen Verwendung findet. 3.2. Versuchsdurchführung Jeder Praktikumsteilnehmer wählt eine der vorgestellten Aufgaben und löst diese individuell: zu Hause mittels einer Testumgebung (Einrichtung IIS s.o.) mittels Zugriff auf den Praktikumsrechner über Remotedesktopverbindung Auf den Praktikumsrechnern ist der Webserver, die Datenbank und die Skriptsprache entsprechend vorinstalliert und konfiguriert. Der Student erhält ein Login, mit dem er lesenden Zugriff mittels Remotedesktopverbindung auf die Datenbank hat und ein Ordner im Wurzelverzeichnis des Rechners, um seine Arbeit zu testen. Namenskonventionen: Skript: der Dateiname des Skriptes setzt sich aus dem FRZ-Login und der Endung „.asp“ zusammen 20 Beispiel: FRZ-Login „[email protected]“ → „dg4.asp“ Verzeichnis: C:\Inetpub\wwwroot\prakrn\“FRZ-Login“\ Beispiel: FRZ-Login „[email protected]“ → Verzeichnisname „C:\Inetpub\wwwroot\prakrn\dg4\“ Rechner: (siehe auch Tabelle Abschnitt 4.2.) PRAKTIKUM-1.inf.tu-dresden.de Login für das Praktikum: prak_“FRZ-Login“ Beispiel: FRZ-Login „[email protected]“ → „prak_dg4“ 3.3. Systemvoraussetzung Die Ansprüche an die Hardware sind relativ gering: Pentium III - PC 128 MB Arbeitsspeicher Microsoft Access IIS als Testumgebung (optional) Internetzugang (für Remotedesktopverbindung) ca. 350 MB freien Festplattenplatz Kategorie Software Vendor Betriebsystem Windows 2000/ Windows XP Microsoft Datenbank Access (MS Office) Microsoft Skriptsprache VBScript optionale Testumgebung IIS Microsoft 3.4. Die Datenbank Die in diesem Versuch zu verwendende Datenbank wird wie bereits erwähnt auch in anderen Komplexen des Praktikums verwendet. Der Diskursbereich modelliert den internationalen 21 Flugbetrieb. Die Datenbank besteht aus diversen Tabellen : • Airline - beinhaltet den Namen und eine eindeutige ID der Fluggesellschaften • Airport - eine eindeutige Nummer, den Namen und der Stadt bzw. Ort, in dem sich ein Flughafen befindet • Booking - in dieser Tabelle wird eine eindeutige Zuordnung eines Passagier zu einem bestimmten Flug und Sitz, welchen er gebucht hat, getroffen • Class - alle möglichen Klassen, in denen man fliegen kann • Flight - hier wird ein Flug eingetragen. Ein Flug hat eine eindeutige Nummer, einen Namen, ein Start- und einen Zielflughafen, und wird mit einem bestimmten Flugzeug in einer bekannten Zeit geflogen • Location - diese Tabelle ordne jede Stadt einem Land zu • Passenger - alle relevanten Informationen, wie Name, Vorname, Anschrift und Bankverbindung eines Passengers werden hier abgelegt • Plane - hier findet man Angaben zu einem Flugzeug wie Hersteller und Fluggesellschaft, die dieses Flugzeug unterhält • Planetype - Informationen über Flugzeugbauer und ihre Produkte • Seat - jeder Sitz erhält in diesem Diskursbereich eine eindeutige Nummer, wird einem Flugzeug zugeordnet, hat eine weitere Flugzeug- interne Nummer und Attribute, die beschreiben in welcher Klasse er steht und ob er ein Raucher- und Fensterplatz ist Die nachstehenden Tabellen und die Abbildung 2.3 geben ein mehr detailliertes Bild. Natürlich kann man auch die Tabellen direkt in Microsoft Access erforschen. 22 Abbildung 13 23 3.5. Aufgabenstellung Es soll ein Auskunftssystem für den Linienflugverkehr entwickelt werden, welches über einen Webbrowser bedient werden kann. Teilaufgabe 1 – Anzeigetafel Ziel dieser Aufgabe soll eine Seite sein, die ähnlich einer Anzeigetafel in den Wartehallen der Flughäfen ankommende und abgehende Flüge in der nächsten Stunde anzeigt. Dabei soll der Flughafen frei gewählt werden können. Teilaufgabe 2 – Personensuche Ziel soll eine Suchfunktion sein, die einem die Möglichkeit bietet, sich zu erkundigen, wann und wo eine bestimmte Person auf einen Flughafen ankommt oder abfliegt. Man wählt im Formular zunächst die Stadt, in welcher die gesuchte Person lebt, anschließend die Person aus. Teilaufgabe 3 – Reiseplan Mitunter fliegen Passagiere nicht direkt zu ihrem eigentlichen Ziel sondern sind gezwungen eine andere Route mit Umstiegen und Aufenthalten auf anderen Flughäfen zu wählen. Für diese Passagiere ist ein Reiseplan nützlich, der ihnen genau 24 mitteilt, wann, wo und mit welcher Maschine sie abfliegen und wie lange der Aufenthalt auf den Flughäfen ist. Die Aufgabe sollte „vereinfacht“ gelöst werden, d.h. spezielle Sonderfälle sollte man nicht beachten. Teilaufgabe 4 – Auslastung Für Fluggesellschaften ist es sicherlich interessant wie stark bestimmte Linienflüge ausgelastet werden. Man sollte die Fluggesellschaft wählen könne und sich anzeigen lassen, welcher Flug mehr bzw. weniger als eine frei wählbare Prozentzahl belegt war. Teilaufgabe 5 – Logistik Aus logistischer Sicht ist es für eine Fluggesellschaft wichtig für ihre Flugzeuge einen Flugplan zu erstellen. Man sollte aus einem Formular eine Fluggesellschaft und ein Flugzeug dieser Fluggesellschaft wählen können. Der Flugplan dieses Flugzeuges soll in einer Tabelle angezeigt werden. Teilaufgabe 6 – Besucherzahl Flughafenbetreiber wünschen sich eine einfache Statistik über ankommende und abfliegende Passgierzahlen in einer Monatsübersicht. In dem Formular soll der Flughafen gewählt werden können. Teilaufgabe 7 – Geheimdienst Der Geheimdienst möchte hin und wieder wissen, wo sich eine Person im Moment befindet. Entweder ist sie zu Hause oder auf den Weg in einer anderen Stadt. Der Geheimdienst geht davon aus, dass jeder ausschließlich mit dem Flugzeug reist, d.h. man befindet sich entweder „zu Hause“, in der Luft, auf den Weg in eine andere Stadt oder ist bereits dort angekommen. In dem Formular sollen die Mitarbeiter des Nachrichtendienstes die Stadt wählen könne, in welcher die gesuchte Person wohnt und anschließend die Person selber. Die Antwort des Systems soll der momentane Aufenthaltsort sein. Teilaufgabe 9 – Demnid Das Meinungsforschungsinstitut DEMNID gibt jede Woche eine Top-Ten Liste heraus, auf der die 10. 'reiselustigsten' Städte aufgeführt sind, d.h. aus welchen Städten die meisten Bürger geflogen sind und wie viel. Teilaufgabe 10 – Catering Der Cateringservice einer Fluggesellschaft möchte wissen, wie viele Personen mit einem Flug reisen um entsprechende Anzahl Brötchen, Saftflaschen und Servietten zu bestellen. Zusätzlich muss für die Passagiere der gehobeneren Klassen Sekt bestellt werden. Das Interface soll die Menge bzw. Stückzahl der zu bestellenden Brötchen, 25 Servietten, Saft –und Sektflaschen natürlich gleich errechnen. Die Arbeit sollte funktional, optisch ansprechend, leicht und intuitiv bedienbar sein. Ein mögliches Design zeigen die Abbildungen 14 und 15. Abbildung 14 Abbildung 15 26 4. Wichtige Hinweise 4.1. FAQ • Aktuelles Datum Da die Datenbank nicht aktualisiert wird, beziehen sich alle fiktiven Datensätze auf einen Zeitraum im Oktober 2001. Für die Bearbeitung der Aufgaben kann ein sinnvolles beliebiges Datum als „aktueller“ Zeitpunkt frei gewählt werden. • Timestamp Zur Abfrage eines Microsoft ACCESS Datentyp timestamp muss dieser Wert in # eingeschlossen werden. Zum Beispiel: SELECT * FROM Flight WHERE time > “#2001-10-12 17:12:23#” • Spaltenname from in der Tabelle Flight Zur Unterscheidung des Feldnames from in der Tabelle Flight und dem Schlüsselwort FROM aus der SQL-Sprache ist es notwendig, die vollständige Feldbezeichnug anzugeben: SELECT flight.from FROM Flight WHERE ... oder ein Alias zu verwenden: SELECT f.from FROM Flight AS f WHERE ... 27 4.2. Test der Logins an den Rechnern des Komplexpraktikums Für den Zugriff auf die Praktikums-Server am Lehrstuhl Rechnernetze stehen im FRZ folgende Tools zur Verfügung: 1. Windows XP: Remotdesktopverbindung 2. Windows 2000: Terminaldienstclient a) Zum Aufbau der Verbindung ist der gewünschte Servername anzugeben und die Verbindung herzustellen (Abb.16). Abbildung 16 Der Alias für den Server des Databaseversuches lautet: „PRAKTIKUM-1.inf.tu-dresden.de“. Jedoch wird in der Einführungsverantstaltung die genaue Adresse nochmals bekannt gegeben. b) Eingabe des Nutzernamen und des vorläufigen Passwortes (Abb.17): 28 Abbildung 17 Der Nutzername wird gebildet aus: „prak_“ und dem FRZ-Login {s1234567} und lautet demzufolge prak_s1234567. Das Passwort wird bei der Einführungsveranstaltung bekannt gegeben. c) Bei dem ersten Login kommt die Aufforderung das gesetzte Passwort zu ändern (Abb.18). Abbildung 18 d) Danach sollte getestet werden, ob Schreibrechte für das Verzeichnis bestehen, z.B. durch Anlegen des Ordners „Lösungen“ mit den Unterordnern für die Lösungen der gewählten Praktikumsversuche. e) WICHTIG ! Beenden Sie eine Sitzung niemals nur durch ein Disconnect. Dadurch werden die laufenden 29 Programme nicht beendet, sondern die Sitzung nur unterbrochen. Wenn das mehrere Nutzer machen, führt das zu vielen parallelen Sitzungen und damit zu einer hohen Last auf den Rechnern. Dadurch wird die Arbeit aller Nutzer behindert (Abb.19). Abbildung 19 f) Aus diesem Grund immer mittels Start / Beenden / Abmelden eine Sitzung schließen. Nach 24 Stunden Laufzeit werden Sitzungen vom Administrator ohne Ankündigung beendet (Abb.20). Abbildung 20 30 Literatur [1] Thomas Münze, Lehrbuch Selfhtml: http://www.teamone.de/selfhtml [2] Eine Einführung in SQL http://www.sql-undxml.de/sql-tutorial/index.html [3] Die Webseite von MySQL http://dev.mysql.com [4] Die Webseite eines ASP-Forum: http://www.aspgerman.com [5] Eine amerikanische ASP-Webseite: http://www.learnasp.com/classic/ [6] Die Webseite des Lehrstuhl Rechnernetze an der TU-Dresden [7] Die Webseite des Komplexpraktikum Rechnernetze der TU-Dresden 31