PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datenbankmodellierung


klausinho
30.12.2002, 12:43
Hallo, zusammen,

ich habe mal zwei Fragen:

1) Ich möchte demnächst ein Zeierfassungssystem zimmern. Hier sollen Mitarbeiter die Möglichkeit haben, über eine Webapplikation ihre Arbeitszeiten einzutragen und diese dann anschließend auf Projekte zu buchen. Das ganze soll mit PHP und MySQL abgefackelt werden.

So weit, so gut: Da ich über gar keine Erfahrungswerte verfüge, was die Performance angeht, möchte ich nun um ein paar Meinungen bitten, wie die Zeittabelle strukturiert werden sollte.

Ihr könnt Euch denken, dass da bei ca. 20 Mitarbeitern und ca. 220 Arbeitsatgen, diese noch gegliedert in unterschiedliche Projekte, etliches an Datensätzen zusammenkommt. Ich könnte nun natürlich alles in einer Tabelle verwursten, oder ich mache Monatstabellen oder je Mitarbeiter ein Tabelle....? Was denkt Ihr?

2) Um Überstunden berechnen zu können, sollen zu jedem Mitarbeiter-Stammdatensatz (Name, Pers-Nummer usw.) auch die wöchentliche Sollarbeitszeit angeben werden. Aufgrund dieses Wertes können dan Überstunden, Gleitzeit usw. errechnet werden.

Frage: Was mache ich, wenn ein Mitarbeiter auf einmal seine Sollarbeitszeit ändert? Beispiel: Kollege A hat eine Halbtagsstelle und arbeitet 20 Stunden die Woche. Nun trägt er fleißig jeden Tag 5 Stunden ein und hat somit 5 Überstunden. Auf einmal ändert sich seine Arbeitszeit und er muß 40 Stunden die Woche arbeiten. Ändere ich dies in den Stammdaten ab, so hätte er auf einmal 15 Minusstunden.

Die einfachste Lösung wäre sicherlich, den Kollegen dann nochg einmal mit der neuen Arbeitszeit anzulegen und hierauf zu buchen, elegant ist das aber nicht.

Wenn jemand Ideen oder Vorschläge hat, wäre ich dankbar. Wie gesagt, dass soll erstmal nur theoretischer Natur sein.


JoelH
30.12.2002, 13:13
also so pauschal lässt sich das jetzt nicht sagen, da dafür die Vorgaben noch etwas wage sing. An deiner stelle würde ich mich mal mit ERM ( Entity-Relationship-Modell ) beschäfftigen und dieses Modell dann normalisieren. Das ist so die Standardvorgehensweise beim Erstellen einer solchen Datenstruktur.

klausinho
30.12.2002, 13:20
Hi Joel,

danke übrigens für Dein Sessions-Tut, jetzt habe ich das endlich auch kapiert.

Das ERM habe ich mir zu Gemüte geführt und Tabellen bis zum Erbrechen normalisiert.... Vom Prinzip her ist die Angelegenheit, also alles drum herum auch klar....

Nur die Geschichte mit den Arbeitszeiten macht mir etwas Kopfzerbrechen. Ich hatte mich schon damit abgefunden, dass es hier wohl keine optimale Lösung gibt. Da ich das Board erst vor ein paar Tagen entdeckt habe, hatte ich mir gedacht, ich poste mein Problem mal hier hin, vieleicht fällt Euch ja etwas ein..

Ich kann, wenn gewünscht, die Vorgaben präzisieren....

Jonas
02.01.2003, 12:57
Also ich würde es wohl so machen, daß ich neben der Stammdaten-Tabelle noch ne weitere, Sollarbeitszeit-Tabelle hab, in der ich die ID des Mitarbeits speichere, ein Datum (in Sekunden seit 1970) und die Sollarbeitszeit.

Um die Über-/"Unter"-Stunden zu berechnen, also um die Sollarbeitszeit zu holen, könntest du dann machen:
SELECT sollarbeitszeit FROM stammdaten_soll WHERE mitarbeiter_id = XX ORDER BY datum DESC LIMIT 1;

wenn sich die sollarbeitszeit ändert, einfach ein neuer eintrag mit mitarbeiter_id, neuer sollarbeitszeit und aktuellem time()

dann liefert obige query ja die aktuelle sollarbeitszeit...

klausinho
02.01.2003, 14:18
Oha,

ja, so könnte das klappen...

wenn ich soweit bin (muss erst mal mein Ticket-System fertig stricken) werde ich hier sicherlich noch öfters fragen...