D. Stastka Author 03b Klasse 26. Juni 2005 Datum Fuhrpark - Datenbank Inhaltsverzeichnis ITSE TS DB2 1 Fuhrpark-Datenbank..................................................................................................................... 1 1.1 Bestehende Daten ................................................................................................................. 1 1.2 Software ................................................................................................................................. 1 1.2.1 Server ............................................................................................................................ 1 1.2.2 Client ............................................................................................................................. 1 2 Rahmenbedingungen ................................................................................................................... 2 3 4 5 6 7 8 Datenbank...................................................................................................................................... 3 3.1 Beziehungen .......................................................................................................................... 3 3.2 Tabellendefinitionen ............................................................................................................... 4 3.2.1 Haupt-Tabelle ................................................................................................................ 4 3.2.2 Child-Tabelle ohne Fremdschlüssel .............................................................................. 4 3.2.3 Child-Tabelle mit Fremdschlüssel ................................................................................. 4 Überprüfung .................................................................................................................................. 5 4.1 Geprüft ................................................................................................................................... 5 4.2 Nicht Überprüft ....................................................................................................................... 5 Dialogkonzept ............................................................................................................................... 6 5.1 Startseite ................................................................................................................................ 6 5.2 Hauptansicht .......................................................................................................................... 6 5.3 Aufträge (Übersicht) ............................................................................................................... 7 5.4 Neue Aufträge ........................................................................................................................ 7 5.4.1 Auftrag erfassen ............................................................................................................ 7 5.4.2 Fahrzeug wählen ........................................................................................................... 8 5.4.3 Mitarbeiter wählen ......................................................................................................... 9 5.4.4 Auftrag ändern............................................................................................................. 10 5.4.4.1 Auftrag..................................................................................................................... 10 5.4.4.2 Fahrzeug ................................................................................................................. 10 5.4.4.3 Mitarbeiter ............................................................................................................... 10 5.4.5 Auftrag löschen............................................................................................................ 10 5.5 Administration ...................................................................................................................... 11 5.6 Berichtsfunktion.................................................................................................................... 11 Abschluss.................................................................................................................................... 13 6.1 Test der Datenbank.............................................................................................................. 13 6.2 Produktiver Einsatz .............................................................................................................. 13 Weitere Möglichkeiten................................................................................................................ 14 7.1.1 Allgemein..................................................................................................................... 14 7.1.2 Fahrzeug ..................................................................................................................... 14 7.1.3 Mitarbeiter.................................................................................................................... 14 Anhang......................................................................................................................................... 15 8.1 Fahrzeuge (tbz_tbl_fz) ......................................................................................................... 15 8.2 Mitarbeiter (tbz_tbl_ma) mit Ausweisen (tbz_tblh_matoaw) ................................................ 15 8.3 Auseise (tbz_tbl_ausweis) ................................................................................................... 16 8.4 Datenstruktur auf dem Server .............................................................................................. 16 8.5 SQL-Befehle......................................................................................................................... 17 8.5.1 Variable / Funktionen................................................................................................... 17 8.5.2 [task/month.asp] Anzeigen des Monts ........................................................................ 17 8.5.3 [task/auftrag_edit] Anzeigen des Auftrages ................................................................ 17 8.5.4 [task/getfz.asp] (Fahrzeugbuchung)............................................................................ 17 8.5.5 [task/getteam.asp] Buchen der Mitarbeiter.................................................................. 19 8.5.6 [task/function.asp] Ändern und Löschen des Auftrages.............................................. 20 8.5.6.1 Fahrzeug reservieren .............................................................................................. 21 8.5.6.2 Fahrer buchen......................................................................................................... 22 8.5.6.3 Fahrer löschen ........................................................................................................ 22 8.5.6.4 Beifahrer buchen/löschen ....................................................................................... 22 8.5.6.5 Fahrzeug ändern..................................................................................................... 23 8.5.6.6 Mitarbeiter ändern ................................................................................................... 23 Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 1 Fuhrpark-Datenbank Die Firma Transport-AG will die Einteilung der Fahrzeuge und die Zuteilung der MitarbeiterInnen zu den Aufträgen besser planen und überwachen können. Dies soll durch eine Datenbank-Lösung realisiert werden. 1.1 Bestehende Daten Die Transport-AG liefert eine Liste der vorhandenen Fahrzeuge und Mitarbeiter, was als Grundlage für die Datenbank dient. (Siehe Anhang Seite 15) 1.2 Software Die Datenbankapplikation muss auf dem bestehenden Webserver lauffähig sein. Die produktive Umgebung sieht wie folgt aus: 1.2.1 Server Betriebsystem Windows 2000 Webserver Ils 5.1 Scriptsprache / Umgebung VBscript / ASP (Active Server Pages) Datenbank MySQL 4 Version: 4.0.18 Adresse http://stastka.ch/tbz/transportag/ 1.2.2 Client Betriebsystem Windows 2000/XP Browser Muss Cookies akzeptieren Browser IE 6.0 SP2 Firefox 1.0.4 Opera 7.23 Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 1 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 2 Rahmenbedingungen Ein Fahrzeug kann nur ausgewählt werden, wenn es die zu transportierende Last aufnehmen kann Das eingesetzte Fahrzeug muss am Transportdatum noch frei sein Der Fahrer (und ev. der Beifahrer) müssen am Transportdatum frei sein Der zugeteilte Fahrer und Beifahrer (falls ausgewählt) verfügen über den für das Lenken des Fahrzeuges erforderlichen Fahrausweis Für den Auftrag werden folgende Daten gespeichert: o Ausführungsdatum o Nutzlast o Zielort o Fahrzeug o Fahrer/Beifahrer Für jeden Auftrag wir ein Team gebildet, das aus einem Fahrer und ev. keinem oder mehreren Beifahrern besteht Jeder Fahrer hat einen oder mehrere Ausweise Jeder Auftrag kann einzeln angeschaut, geändert und gelöscht werden, ausser Aufträge in der Vergangenheit können nicht neu erstellt bez. verändert werden, d.h. die vergangen Aufträge können nur noch angeschaut werden (nur der Administrator hat die Möglichkeit alte Aufträge zu mutieren oder zu löschen) Es sind eine Anzahl Fahrzeuge vorhanden, die einen bestimmten Ausweis benötigen Mitarbeiter können nicht gelöscht werden Ausweise können den Mitarbeitern zugeteilt oder entzogen werden (nur Administrator) Es kann ein neuer Mitarbeiter erstellt werden (nur Admnistrator) In der Übersicht soll der Status des Auftrages ersichtlich sein (0 Auftrag erfasst, 1 Fahrzeug gebucht, 2 Fahrer gebucht) Berichte werden wochenweise ausgehändigt, d.h. am Ende jeder Woche erhalten die Mitarbeiter ein Handout mit den Aufträgen der nächsten Woche. Folgende Berichte werden erstellt: o Wochenübersicht für alle Fahrzeuge mit den jeweiligen Fahrern / Beifahrern o Wochenübersicht für jedes Fahrzeug o Wochenübersicht für jeden Mitarbeiter Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 2 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 3 Datenbank Jede Tabelle wird mit dem Typ INNODB erstellt. Alle Fremdschlüssel (FK / FOREIGN KEY) werden mit RESTRICT angelegt. Das heisst, so lange noch Datensätze vorhanden sind, kann kein Parent Wert gelöscht/geändert werden Die Verwendung der MySQL-Version 4.0.18 bedeutet, dass man keine Subselect erstellen kann. Dieses Manko muss durch Programmierung umgangen werden. 3.1 Beziehungen tbz_fld_task 1 1 PK id fld_kunde fld_datum fld_status fld_totlast fld_ort FK fld_fzID 1 1 1 tbz_tbl_fz PK id_fz fld_fz_kfz fld_fz_typ fld_fz_bemrk fld_fz_maxnutzlast FK fld_auswID tbz_tbl_ausweis PK id_ausw 1 fld_kat_code fld_kat_name fld_kat_bez tbz_tblh_matoaw PK id tbz_tbl_team PK id_team FK fld_taskID FK fld_maID fld_aufgabeID 1N* 1N* FK fld_auswID FK fld_maID 1 PK id_ma 1N* 1 1N* tbz_tbl_ma fld_ma_name fld_ma_vorname Abbildung 1 Schematische Darstellung der Datenbank Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 3 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 3.2 Tabellendefinitionen 3.2.1 Haupt-Tabelle Das Feld „fld_fzID“ ist per Definition ein Fremdschlüssel von der Tabelle „tbz_tbl_fz“ / Feld „id_fz“. Da aber beim Erfassen des Auftrages noch kein Fahrzeug gewählt wird, ist keine direkte FOREIGN KEY Klausel möglich. Dies wird mittels Programmierung geprüft. CREATE TABLE `tbz_tbl_task` ( `id` int(11) NOT NULL auto_increment, `fld_kunde` text NOT NULL, `fld_datum` date NOT NULL default '0000-00-00', `fld_status` int(11) NOT NULL default '0', `fld_totlast` double NOT NULL default '0', `fld_ort` text NOT NULL, `fld_fzID` int(11) NOT NULL default '0', PRIMARY KEY (`id`) ) TYPE=INNODB; 3.2.2 Child-Tabelle ohne Fremdschlüssel Tabelle Mitarbeiter CREATE TABLE `tbz_tbl_ma` ( `id_ma` int(11) NOT NULL auto_increment, `fld_ma_name` text NOT NULL, `fld_ma_vorname` text NOT NULL, PRIMARY KEY (`id_ma`) ) TYPE=INNODB; Tabelle Ausweise CREATE TABLE `tbz_tbl_ausweis` ( `id_ausw` int(11) NOT NULL auto_increment, `fld_ausw_code` text NOT NULL, `fld_aw_name` text NOT NULL, `fld_aw_bez` longtext NOT NULL, PRIMARY KEY (`id_ausw`) ) TYPE=INNODB; 3.2.3 Child-Tabelle mit Fremdschlüssel Fahrzeug-Tabelle mit Fremdschlüssel zur Ausweis-ID gemäss der Liste im Anhang CREATE TABLE `tbz_tbl_fz` ( `id_fz` int(11) NOT NULL auto_increment, `fld_fz_kfzno` text NOT NULL, `fld_fz_typ` text NOT NULL, `fld_fz_bem` text NOT NULL, `fld_fz_maxnutzlast` double NOT NULL default '0', `fld_fz_awID` int(11) NOT NULL, PRIMARY KEY (`id_fz`), INDEX idx_fld_fz_awID (fld_fz_awID), FOREIGN KEY (fld_fz_awID) REFERENCES tbz_tbl_ausweis(id_ausw) ON DELETE RESTRICT ON UPDATE RESTRICT ) TYPE=INNODB; Team-Tabelle mit Fremdschlüssel zur Auftrags-ID und Mitarbeiter-ID CREATE TABLE `tbz_tbl_team` ( `id_team` int(11) NOT NULL auto_increment, `fld_taskID` int(11) NOT NULL, `fld_maID` int(11) NOT NULL, `fld_aufgabeID` int(11) NOT NULL, PRIMARY KEY (`id_team`), INDEX idx_fld_taskID (fld_taskID), INDEX idx_fld_maID (fld_maID), FOREIGN KEY (fld_maID) REFERENCES tbz_tbl_ma(id_ma) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (fld_taskID) REFERENCES tbz_tbl_task(id) ON DELETE RESTRICT ON UPDATE RESTRICT ) TYPE=INNODB; Hilfstabelle welcher Mitarbeiter hat welchen Ausweis: Fremdschlüssel Ausweis-ID und Mitarbeiter-ID CREATE TABLE `tbz_tblh_matoaw` ( `id` int(11) NOT NULL auto_increment, `fld_maID` int(11) NOT NULL, `fld_awID` int(11) NOT NULL, PRIMARY KEY (`id`), INDEX idx_fld_maID (fld_maID), INDEX idx_fld_awID (fld_awID), FOREIGN KEY (fld_maID) REFERENCES tbz_tbl_ma(id_ma) ON DELETE RESTRICT ON UPDATE RESTRICT, FOREIGN KEY (fld_awID) REFERENCES tbz_tbl_ausweis(id_ausw) ON DELETE RESTRICT ON UPDATE RESTRICT ) TYPE=INNODB; Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 4 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 4 Überprüfung 4.1 Geprüft Mit dem Datenbankaufbau werden folgende Punkte abgefangen: Auftrag kann nicht gelöscht werden sofern ein Team besteht Mitarbeiter kann nicht gelöscht werden sofern er in einem Team steht Ausweis kann nicht gelöscht werden sofern er einem Mitarbeiter zugewiesen worden ist 4.2 Nicht Überprüft Mit dem Datenbankaufbau werden folgende Punkte nicht abgefangen: Buchen von Fahrzeugen/Mitarbeitern am gleichem Tag Buchen von Fahrern, die nicht den nötigen Ausweis haben Löschen von Fahrzeugen obwohl diese in einem Auftrag verwendet werden Fahrzeuge, die nicht für die Nutzlast ausgelegt worden sind, können eingetragen werden Fahrzeuge können gebucht werden obwohl kein Fahrer frei ist Ausweise können doppelt eingetragen werden Es können mehrere Fahrer für einen Auftrag gebucht werden Man kann Mitarbeiter doppelt für einen Auftrag buchen Team kann gelöscht werden obwohl der Auftrag noch vorhanden ist Es kann ein Auftrag erfasst werden ohne Fahrzeug Es kann ein Auftrag in der Vergangenheit erfasst werden Dem Mitarbeiter kann eine andere Aufgaben-ID als Fahrer und Beifahrer zugeteilt werden Der Ausweis von einem Mitarbeiter kann gelöscht werden obwohl er für einen Auftrag erforderlich ist Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 5 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 5 Dialogkonzept 5.1 Startseite Auf der Startseite melden Sie sich mit dem Passwort an. Es gibt zwei Möglichkeiten um sich Anzumelden: Benützer: tbz(tag+monat) = 11. Mai = „tbz16“ Administrator: admin(tag+monat) 21.April = „admin25“ 5.2 Hauptansicht [a] [b] [c] [d] [e] [f] Abbildung 2 Hauptübersicht Auf der Hauptoberfläche wird jeweils ein Monat dargestellt. Bei [a] kann man in den nächsten Monat, bez. [b] auf den aktuellen Monat wechseln. Als Administrator kann man die Eigenschaften der Fahrzeuge (Ausweise, Nutzlast) und die der Mitarbeiter unter [c] ändern. Um Fehlerquellen zu vermeiden, werden bei [d] die unvollständigen Aufträge pro Monat angezeigt. Durch Klicken auf [e] kann der Wochebericht erstellt und ausgedruckt werden. Der aktuelle Tag des Monats wird rot dargestellt.[f] Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 6 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 5.3 Aufträge (Übersicht) [g] [h] [i] Abbildung 3 Abbildung 4 Auftragsnummer [g] Aufträge, die in der Vergangenheit liegen, können nur noch mittels diesem Icon angeschaut werden und sind nicht mehr veränderbar. Status des Auftrages [h] 0 Kein Fahrer und Fahrzeug 1 Kein Fahrer Neue Aufträge können nicht in der Vergangenheit eröffnet werden 2 Auftrag OK Auftraggeber [i] Auftrag anschauen, ändern, löschen 5.4 Neue Aufträge 5.4.1 Auftrag erfassen Für einen neuen Auftrag muss man auf das Icon (Abbildung 3) klicken und es wird eine neue Dialogseite angezeigt. Man beginnt mit der Eingabe des Kundennamens, der zu transportierenden Last und des Ortes. Zur Übersicht sieht man bei [j] die aktuell verfügbaren Fahrzeuge mit den freien Mitarbeitern [k]. Abschliessend klickt man auf Auftrag erfassen [l] [j] [k] [l] Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 7 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 5.4.2 Fahrzeug wählen Sind alle Werte angenommen worden, erhält man die Auftragsnummer [m]. Klicken Sie jetzt auf Fahrzeuge wählen [n] [m] [m] [n] Die rechte Seite wird aktualisiert und es werden nur noch diejenigen Fahrzeuge angezeigt, die gleich oder innerhalb der maximalen Last liegen. Um das Fahrzeug für den Auftrag zu wählen, muss man auf buchen [o] klicken [o] Die Seite wird aktualisiert und das gebuchte Fahrzeug [p] wird angezeigt. [p] Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 8 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 5.4.3 Mitarbeiter wählen Klicken Sie auf Fahrer wählen [q] und die Seite wird aktualisiert. [q] Klicken Sie auf ein Icon [r], um den Fahrer auszuwählen. [r] Der Fahrer wurde gewählt und der Auftrag ist gültig und kann durchgeführt werden. Sie können für den Auftrag noch weitere Mitarbeiter wählen, die als Beifahrer eingetragen werden können. Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 9 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 5.4.4 Auftrag ändern Sie können jederzeit den Auftrag ändern, sofern dieser nicht in der Vergangenheit liegt (nur als Administrator können Änderungen in der Vergangenheit gemacht werden). 5.4.4.1 Auftrag Bei Änderungen der Last werden alle Fahrzeuge und Mitarbeiter zu diesem Auftrag gelöscht. Änderungen des Kundennames oder Ortes haben keinen Einfluss. 5.4.4.2 Fahrzeug Bei Neubuchung des Fahrzeuges werden alle Mitarbeiter gelöscht, da ev. die Anforderungen (Ausweis) an den Fahrer sich geändert haben. 5.4.4.3 Mitarbeiter Wird der Fahrer gelöscht, werden alle Beifahrer gelöscht 5.4.5 Auftrag löschen Sie können jederzeit den Auftrag löschen, sofern er nicht in der Vergangenheit liegt. Als Administrator können sie immer den Auftrag löschen. Beim Löschvorgang werden das im Auftrag reservierte Fahrzeug und alle Mitarbeiter freigegeben. Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 10 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 5.5 Administration Jede Firma ist Änderungen innerhalb der Strukturen unterworfen, für die Administrierung ist deshalb eine einfaches Interface entwickelt worden, um es zu Ermöglichen neue Mitarbeiter und Fahrzeuge in die Datenbank einzufügen. Änderungen können nur vom Administrator erstellt werden, da diese tiefgreifende Auswirkungen haben können. Um in den Adminstrationsbereich zu kommen, muss man sich mit dem Administrator-Passwort auf der Startseite anmelden. Verwaltung der Fahrzeuge und der Mitarbeiter [s] [s] 5.6 Berichtsfunktion Für die Mitarbeiter kann ein Einsatzplan [t] der nächste Woche generiert werden. [t] [t] [t] [t] [t] Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 11 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 Für jeden Mitarbeiter oder Fahrzeug kann ein Wochenplan einzeln ausgedruckt werden. Wochenbericht für alle Mitabeitern und Fahrzeuge (Zentrale) [u] Wochenbericht für jeden einzelnen Mitabeitern [v] Wochenbericht für jedes Fahrzeug [w] [u] [v] [w] Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 12 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 6 Abschluss 6.1 Test der Datenbank Die Datenbank wurde durch den Entwickler geprüft und als lauffähig befunden. Eine Testperson wurde kurz geschult und testete die Applikation in mehreren Schritten. Diese bescheinigte ein einwandfreies Funktionieren. 6.2 Produktiver Einsatz Die Applikation ist für den produktiven Einsatz vorgesehen und kann auf dem Webserver installiert werden. Die Firma Transport-AG erhält die Applikation als Backup auf einer CD. Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 13 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 7 Weitere Möglichkeiten Die Datenbank liegt in einer Basisstruktur vor. Eine Weiterentwicklung ist möglich, um den Umgang zu erleichtern und weitere Features einzubinden. Folgende Features könnten für die 2. Entwicklungsphase umgesetzt werden: 7.1.1 Allgemein Der Auftrag kann durch die Buchhaltung weiterverarbeitet werden. Neue Status: o Rechung (3) o Bezahlt (4) o Archiviert (5) Detaillierte Statistiken wie Auslastung und Buchung Genauere Buchung mit Uhrzeit Der Fahrer kann selbstständig seinen Wochenplan anschauen (Änderungen nicht möglich) 7.1.2 Fahrzeug Fahrzeuge können mehrere Ausweise haben Fahrzeuge können für Reparaturen gesperrt werden 7.1.3 Mitarbeiter Ausweise der Mitarbeiter können gelöscht bez. gesperrt werden. Mitarbeiter können gesperrt werden für: o Ferien o Krankheit o Ausweisentzug o Stellenwechsel Ruhezeiten der Fahrer können berücksichtigt werden Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 14 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 8 Anhang Die Transport AG hat eine Liste der bestehenden Fahrzeuge, Mitarbeiter und der Ausweise 8.1 Fahrzeuge (tbz_tbl_fz) id Kennzeichen Typ Nutzlast Ausweis 1 ZH 112 33 44 Sehr grosser Lastwagen mit Anhänger bis 7500 40000 C1E(6) 2 ZH 112 33 44 Sehr grosser Lastwagen mit Anhänger bis 7500 35600 C1E(6) 3 ZH 115 33 55 Kleiner Laster (3-Rad) mit Anhänger 750 B1(1) 4 ZH 763 11 34 Grosser Lastwagen mit Anhänger 25000 C(2) 5 ZH 654 34 12 Kleiner Laster (3-Rad) mit Anhänger 800 B1(1) 6 ZH 663 12 34 Grosser Lastwagen 25000 C(2) 7 ZH 334 76 33 Auto mit Anhänger 500 BE(4) 8.2 Mitarbeiter (tbz_tbl_ma) mit Ausweisen (tbz_tblh_matoaw) id Name Vorname Ausweis: 1 Jacoby Dave C,CE,C1E 2 Berger Karl B1,C 3 Müller Hans C1,BE,CE,C1E,B1,C 4 Stil Jörg C,C1 5 De Masi Ippolito B1,C1,CE,C1E,C,BE 6 Hollenstein Peter B1,BE 7 Frick Walter C,B1,BE 8 Coletti Henry C,BE,CE 9 Oberholzer Patrick B1,BE Ida C1,C1E,C 10 Berger Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 15 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 8.3 Auseise (tbz_tbl_ausweis) id Ausweis Name Beschreibung 1 B1 Kategorie B1 Klein- und dreirädrige Motorfahrzeuge mit einem Leergewicht von nicht mehr als 550 kg 2 C Kategorie C Motorwagen - ausgenommen jene der Kategorie D - mit einem zulässigen Gesamtgewicht von mehr als 3500 kg; mit einem Motorwagen dieser Kategorie darf ein Anhänger mit einem Gesamtgewicht von nicht mehr als 750 kg mitgeführt werden 3 C1 Kategorie C1 Motorwagen - ausgenommen jene der Kategorie D - mit einem Gesamtgewicht von mehr als 3500 kg, aber nicht mehr als 7500 kg; mit einem Motorwagen dieser Unterkategorie darf ein Anhänger mit einem Gesamtgewicht von nicht mehr als 750 kg mitgeführt werden 4 BE Kategorie BE Fahrzeugkombinationen aus einem Zugfahrzeug der Kategorie B und einem Anhänger, die als Kombination nicht unter die Kategorie B fallen 5 CE Kategorie CE Fahrzeugkombinationen aus einem Zugfahrzeug der Kategorie C und einem Anhänger mit einem Gesamtgewicht von mehr als 750 kg 6 C1E Kategorie C1E Fahrzeugkombinationen aus einem Zugfahrzeug der Unterkategorie C1 und einem Anhänger mit einem Gesamtgewicht von mehr als 750 kg, sofern das Gesamtzugsgewicht 12000 kg und das Gesamtgewicht des Anhängers das Leergewicht des Zugfahrzeugs nicht übersteigen 8.4 Datenstruktur auf dem Server /bericht Berichtsmodul /css CSS-Definitionen /function Globale Funktionen /fz Änderungen Fahrzeuge /img Bilder /ma Änderungen Mitarbeiter /sql_data DB-Sicherung und Testdaten /task Aufträge, Buchung Fahrzeug und Mitarbeiter Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 16 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 8.5 SQL-Befehle 8.5.1 Variable / Funktionen MySQLtoDate() Wandelt ein MySQL Datumsformat in ein normales Datum um DateToMySQL() Wandelt ein Datum ins MySQL Format um 8.5.2 [task/month.asp] Anzeigen des Monts In einer WHILE Schlaufe werden alle Tage eines Monats aufgebaut "SELECT * FROM stastka.tbz_tbl_task WHERE fld_datum='"&YEAR(varCurDate)&""&MONTH(varCurDate)&"-"&N&";" 8.5.3 [task/auftrag_edit] Anzeigen des Auftrages "SELECT * FROM stastka.tbz_tbl_task WHERE id="&id&";" 8.5.4 [task/getfz.asp] (Fahrzeugbuchung) Abfrage über die Anzahl Fahrzeuge, die heute gebucht worden sind. (Variable cFZ) "SELECT COUNT(fld_fzID) FROM stastka.tbz_tbl_task WHERE fld_datum='"&DateToMySQL(fld_datum)&"' AND NOT fld_status='0';" Alle Fahrzeug-IDs in einen Array speichern, die am heutigem Tag gebucht wurden "SELECT * FROM stastka.tbz_tbl_task WHERE fld_datum='"&DateToMySQL(fld_datum)&"' AND NOT fld_status='0';" Ist die Variable cFZ <> 0, dann folgenden String Zusammensetzen "SELECT f.id_fz , f.fld_fz_kfzno, f.fld_fz_typ, f.fld_fz_maxnutzlast, f.fld_fz_awID, a.fld_ausw_code FROM stastka.tbz_tbl_fz f JOIN stastka.tbz_tbl_ausweis a ON a.id_ausw = f.fld_fz_awID WHERE f.fld_fz_maxnutzlast>="&fld_nutzlast&" AND NOT(" IF cFZ = -1 THEN SQL = SQL & " f.id_fz=0" FOR N = 0 TO cFZ IF N > 0 THEN SQL = SQL & " OR " SQL = SQL & " f.id_fz=" & FahrzID(N) NEXT IF cFZ<>0 THEN SQL = SQL&" ) ORDER BY f.fld_fz_maxnutzlast;" Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 17 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 Es wurde kein Fahrzeug gebucht, cFZ = 0 "SELECT f.id_fz , f.fld_fz_kfzno, f.fld_fz_typ, f.fld_fz_maxnutzlast, "f.fld_fz_awID, a.fld_ausw_code "&_ "FROM stastka.tbz_tbl_fz f JOIN stastka.tbz_tbl_ausweis a "&_ "ON a.id_ausw = f.fld_fz_awID "&_ "WHERE f.fld_fz_maxnutzlast>="&fld_nutzlast&" AND NOT(id_fz="&FahrzID(0)&") "ORDER BY fld_fz_maxnutzlast;" Anzahl Mitarbeiter, die heute gebucht wurden und den Ausweis haben "SELECT COUNT(te.fld_maID) "&_ "FROM stastka.tbz_tbl_ma m JOIN stastka.tbz_tbl_team te "&_ "ON te.fld_maID = m.id_ma "&_ "JOIN stastka.tbz_tblh_matoaw mta "&_ "ON mta.fld_maID = m.id_ma "&_ "JOIN stastka.tbz_tbl_task ta "&_ "ON te.fld_taskID=ta.id "&_ "WHERE ta.fld_datum ='"&DateToMySQL(fld_datum)&"' "AND mta.fld_awID="&fld_fz_awID&“;“ Anzahl Mitarbeitern, die den erforderlichen Ausweis haben, somit kann man zusammen mit Tabelle 7 angeben, wie viele Ausweise für den jeweiligen Ausweis noch verfügbar sind. "SELECT COUNT(fld_maID) FROM stastka.tbz_tblh_matoaw WHERE fld_awID ="&fld_fz_awID&";" Alle Fahrzeuge, die am heutigen Tag gebucht worden sind "SELECT t.id , f.id_fz, f.fld_fz_kfzno, f.fld_fz_typ, f.fld_fz_maxnutzlast, "f.fld_fz_awID, t.fld_kunde, a.fld_ausw_code "&_ "FROM stastka.tbz_tbl_fz f JOIN "&dbName&".tbz_tbl_task t "&_ "ON f.id_fz = t.fld_fzID "&_ "JOIN stastka.tbz_tbl_ausweis a "&_ "ON a.id_ausw = f.fld_fz_awID "&_ "WHERE fld_datum='"&DateToMySQL(fld_datum)&"' AND f.id_fz<>0 "&_ "ORDER BY f.fld_fz_maxnutzlast;" Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 18 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 8.5.5 [task/getteam.asp] Buchen der Mitarbeiter Abfrage welcher Ausweis benötigt wird "SELECT fld_fz_awID FROM stastka.tbz_tbl_fz WHERE id_fz="&id_fz&";" Abfrage ob ein Fahrer schon für den Auftrag gebucht worden ist "SELECT COUNT(fld_taskID) FROM stastka.tbz_tbl_team WHERE fld_taskID="&id&";" Abfrage für alle Fahrer mit dem benötigten Ausweis "SELECT a.id_ausw, a.fld_ausw_code, t.fld_maID, m.fld_ma_name, "m.fld_ma_vorname "&_ "FROM stastka.tbz_tbl_ma m JOIN stastka.tbz_tblh_matoaw t "&_ "ON m.id_ma = t.fld_maID "&_ "JOIN stastka.tbz_tbl_ausweis a "&_ "ON a.id_ausw=t.fld_awID "&_ "WHERE a.id_ausw="&fld_fz_awID&";" Abfrage ob der Fahrer noch frei ist "Select COUNT(te.fld_maID) "FROM stastka.tbz_tbl_team te JOIN stastka.tbz_tbl_task ta "&_ "ON te.fld_taskID=ta.id "&_ "WHERE ta.fld_datum='"&DateToMySQL(fld_datum)&"' AND "&_ “te.fld_maID="&fld_maID&";" Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 19 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 Abfrage über alle gebuchten Fahrer für den Auftrag "SELECT te.id_team, ta.fld_datum, te.fld_maID, te.fld_aufgabeID, "&_ "te.fld_taskID, m.fld_ma_name, m.fld_ma_vorname, a.fld_ausw_code "&_ "FROM stastka.tbz_tbl_team te JOIN stastka.tbz_tbl_ma m "&_ "ON te.fld_maID = m.id_ma "&_ "JOIN stastka.tbz_tbl_task ta "&_ "ON te.fld_taskID=ta.id "&_ "JOIN stastka.tbz_tblh_matoaw t "&_ "ON m.id_ma = t.fld_maID "&_ "JOIN stastka.tbz_tbl_ausweis a "&_ "ON a.id_ausw=t.fld_awID "&_ "WHERE ta.fld_datum = '"&DateToMySQL(fld_datum)&"' "&_ "AND a.id_ausw="&fld_fz_awID&" AND te.fld_taskID="&id&";" 8.5.6 [task/function.asp] Ändern und Löschen des Auftrages SQL-Befehl, um Werte in die Datenbank einzufügen, dabei wird für Status und Fahrzeug-ID eine „0“ eingetragen. "INSERT INTO "&dbName&".tbz_tbl_task ( fld_kunde, fld_datum, fld_status, fld_totlast, fld_ort, fld_fzID ) VALUES(' "&_ fld_kunde & "', '" "&_ fld_datum & "', '" "&_ 0 & "', '" "&_ fld_totlast & "', '"&_ fld_ort & "', '" "&_ 0 & "');" Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 20 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 Änderungen des Auftrages, sofern sich die Transportlast verändert hat. Dabei werden alle Teammitglieder gelöscht "UPDATE stastka.tbz_tbl_task SET " `fld_kunde` = '"& fld_kunde &"', "&_ " `fld_datum` = '"& fld_datum &"', "&_ " `fld_status` ='"& 0 &"', "&_ " `fld_totlast` = '"& fld_totlast &"', "&_ " `fld_ort` = '"& fld_ort &"', "&_ " `fld_fzID` = '"& 0 &"' "&_ "WHERE id= '"& id &"' LIMIT 1;“ "DELETE FROM stastka.tbz_tbl_team WHERE `fld_taskID`='"& id &"';“ Änderungen des Auftrages, sofern sich nicht die Transportlast verändert hat. "UPDATE stastka.tbz_tbl_task SET " `fld_kunde` = '"& fld_kunde &"', "&_ " `fld_datum` = '"& fld_datum &"', "&_ " `fld_ort` = '"& fld_ort &"' "&_ "WHERE id= '"& id &"' LIMIT 1; " Auftrag und seine Teammitglieder löschen "DELETE FROM stastka.tbz_tbl_team WHERE `fld_taskID`='"& id & "'; " "DELETE FROM stastka.tbz_tbl_task WHERE id='"& id &"'" 8.5.6.1 Fahrzeug reservieren In der Zeit zwischen Speichern des Auftrages und Buchen des Fahrzeuges ist es möglich, dass ein anderer Applikations-Benützer das Fahrzeug buchen kann "SELECT COUNT(fld_fzID) FROM stastka.tbz_tbl_task WHERE fld_fzID='"&fld_fzID&"' AND fld_datum='"&DateToMySQL(fld_datum)&"';" Auftrag updaten mit status=1 und der Fahrzeug-ID. Es werden immer alle Mitarbeiter zu diesem Auftrag gelöscht, da möglicherweise das Fahrzeug neu ausgewählt worden ist (Fahrzeug mit ev. anderem Ausweis). "UPDATE stastka.tbz_tbl_task SET " `fld_fzID` = '"& fld_fzID &"', "&_ " `fld_status` = '"& 1 &"' "&_ " WHERE `id`="& id &";" "DELETE FROM stastka.tbz_tbl_team WHERE `fld_taskID`='"& id &"';" Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 21 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 8.5.6.2 Fahrer buchen Abfrage ob der Mitarbeiter schon gebucht worden ist "SELECT COUNT(te.fld_maID) "&_ "FROM stastka.tbz_tbl_team te JOIN stastka.tbz_tbl_task ta "&_ "ON te.fld_taskID=ta.id "&_ "WHERE ta.fld_datum='"&DateToMySQL(fld_datum)&"' AND te.fld_maID="&id_ma&“;" Wurde der Mitarbeiter noch nicht reserviert, so bekommt der Auftrag den Status 2. Der Mitarbeiter wird als Fahrer in die Team-Tabelle eingetragen "UPDATE stastka.tbz_tbl_task SET "&_ " `fld_status` = "& 2 &" "&_ " WHERE `id`='"& id &"';" "INSERT INTO stastka.tbz_tbl_team ( fld_taskID, fld_maID, fld_aufgabeID ) VALUES('"& id & "', '" & id_ma & "', '" fld_aufgabeID & "');" 8.5.6.3 Fahrer löschen Wird der Fahrer gelöscht, so geschieht dies auch für alle Beifahrer für diesen Auftrag. Der Auftrag bekommt den Status 1 "DELETE FROM stastka.tbz_tbl_team WHERE `fld_taskID`='"& id & "'; "UPDATE stastka.tbz_tbl_task SET " `fld_status` = "& 1 &" " WHERE `id`='"& id &"';" 8.5.6.4 Beifahrer buchen/löschen Abfrage ob Mitarbeiter schon gebucht ist "SELECT COUNT(te.fld_maID) "&_ "FROM stastka.tbz_tbl_team te JOIN stastka.tbz_tbl_task ta "&_ "ON te.fld_taskID=ta.id "&_ "WHERE ta.fld_datum='"&DateToMySQL(fld_datum)&"' AND te.fld_maID="&id_ma&“;“ Beifahrer in Team-Tabelle eingefügen "INSERT INTO stastka.tbz_tbl_team ( fld_taskID, fld_maID, fld_aufgabeID ) VALUES('"& id & "', '" & id_ma & "', '" & fld_aufgabeID & "');" Beifahrer löschen "DELETE FROM stastka.tbz_tbl_team WHERE `fld_maID`='"& id_ma & "';" Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 22 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 8.5.6.5 Fahrzeug ändern Alle Fahrzeuge anzeigen "SELECT f.id_fz, f.fld_fz_kfzno, f.fld_fz_typ, f.fld_fz_maxnutzlast, "&_ "f.fld_fz_awID, a.fld_ausw_code "&_ "FROM stastka.tbz_tbl_fz f JOIN stastka.tbz_tbl_ausweis a "&_ "ON a.id_ausw=f.fld_fz_awID;" Fahrzeug ändern "UPDATE stastka.tbz_tbl_fz SET "&_ " `fld_fz_kfzno` = '"& fld_fz_kfzno &"', "&_ " `fld_fz_typ` = '"& fld_fz_typ &"', "&_ " `fld_fz_maxnutzlast` = '"& fld_fz_maxnutzlast &"', "&_ " `fld_fz_awID` = '"& fld_fz_awID &"' "&_ "WHERE `id_fz`='"& id_fz &"';" Neues Fahrzeug einfügen "INSERT INTO stastka.tbz_tbl_fz ( fld_fz_kfzno, fld_fz_typ , "&_ "fld_fz_maxnutzlast , fld_fz_awID ) VALUES('"&_ "fld_fz_kfzno & "', '" "&_ "fld_fz_typ & "', '" "&_ "fld_fz_maxnutzlast & "', '" & "&_ "fld_fz_awID & "');" 8.5.6.6 Mitarbeiter ändern Alle Mitarbeiter anzeigen "SELECT * FROM stastka.tbz_tbl_ma; " Letzter Auftrag des Mitarbeiters "SELECT MAX(ta.fld_datum) "FROM stastka.tbz_tbl_team te JOIN stastka.tbz_tbl_task ta "&_ "ON te.fld_taskID=ta.id "&_ "WHERE te.fld_maID="&id&“;“ Alle Ausweise des Mitarbeiters suchen "SQLaus = "SELECT mta.id, a.id_ausw, a.fld_ausw_code, mta.fld_awID "&_ "FROM "&dbName&".tbz_tbl_ausweis a JOIN "&dbName&".tbz_tblh_matoaw mta "&_ "ON mta.fld_awID = a.id_ausw "&_ "WHERE mta.fld_maID="&id&“;“ Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 23 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc Fuhrpark - Datenbank ITSE TS DB2 Anzahl Ausweise gesamthaft "SELECT COUNT(id) FROM "&dbName&".tbz_tblh_matoaw WHERE fld_maID="&id&";" Hat er mindestens einen Ausweis? Alle Ausweise anzeigen, die der Fahrer hat. Nötig für den String Zusammenbau für die Ausweise, die er nicht hat SQL = "SELECT mta.fld_awID "&_ "FROM stastka.tbz_tbl_ausweis a JOIN stastka.tbz_tblh_matoaw mta "&_ "ON mta.fld_awID = a.id_ausw "&_ "WHERE mta.fld_maID="&id Einen Mitarbeiter anzeigen SELECT mta.id, a.id_ausw, a.fld_ausw_code, mta.fld_awID "&_ "FROM stastka.tbz_tbl_ausweis a JOIN "&dbName&".tbz_tblh_matoaw mta "&_ "ON mta.fld_awID = a.id_ausw "&_ "WHERE mta.fld_maID="&id&“;“ Zusammensetzung des SQL-Befehls mit der Variable SQLadd, die alle Ausweise enthält, die er schon hat. (WHERE id_ausw<>1 AND id_ausw<>2 usw.) Alle Ausweise anzeigen, die der Mitarbeiter nicht hat "SELECT id_ausw , fld_ausw_code, fld_aw_name "&_ "FROM stastka.tbz_tbl_ausweis "& SQLadd Mitarbeiter einfügen "INSERT INTO "&dbName&".tbz_tbl_ma ( fld_ma_name, fld_ma_vorname ) VALUES('" & fld_ma_name & "', '" & fld_ma_vorname & "');" Mitarbeiter ändern SQL="UPDATE "&dbName&".tbz_tbl_ma SET "&_ " `fld_ma_name` = '"& fld_ma_name &"', "&_ " `fld_ma_vorname` = '"& fld_ma_vorname &"' "&_ " WHERE `id_ma`='"& id &"';" Ausweis für den Mitarbeiter einfügen SQL="INSERT INTO "&dbName&".tbz_tblh_matoaw ( fld_maID, fld_awID ) VALUES('" & fld_id_ma & "', '" & fld_id_ausweis & "')" Ausweis des Mitarbeiters löschen SQL="DELETE FROM "&dbName&".tbz_tblh_matoaw WHERE `id`="& id &";" Technische Berufsschule Zürich TECHNIKERSCHULE 29.06.2005 24 / 24 Daniel Stastka, Klasse 03b 03b_stastkad_Fuhrpark_db2_Final.doc