Fuhrpark Datenbank

Werbung
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
Herunterladen