Niveau:Anfänger
So viele Organisationen stehen vor dem gemeinsamen Problem, Mitarbeiterzeitpläne zu speichern. Egal welche Institution:ein Unternehmen, eine Universität oder einfach eine Einzelperson, viele Einrichtungen benötigen eine Anwendung, um Stundenpläne einzusehen. Daher werde ich versuchen, ein Datenbankmodell zu entwickeln, und dann werden wir in einem zukünftigen Artikel über eine einfache Anwendung sprechen, um die Zeitpläne der Mitarbeiter in einer Datenbank zu speichern.
Derzeit sieht das Design wie folgt aus:
Das Modell ist ziemlich einfach.
Tipp – Natürliche und Ersatzschlüsselstrategien
- Verwenden Sie einen Ersatz-Primärschlüssel immer dann, wenn sich Werte im natürlichen Schlüssel möglicherweise ändern könnten oder wenn ein natürlicher Schlüssel zu komplex wäre.
- Wenn ein natürlicher Kandidatenschlüssel aus einer kleinen Anzahl von Spalten besteht (idealerweise nur eine) und sich seine Werte nicht ändern – verwenden Sie ihn als natürlichen Primärschlüssel
Weitere Informationen über natürliche und Ersatz-Primärschlüssel.
Der employee
Tabelle enthält grundlegende Attribute, die jeden Mitarbeiter beschreiben, zum Beispiel:Name, Nachname, Adresse und Telefonnummer. Vor- und Nachname identifizieren nicht jeden Datensatz eindeutig (es könnte mehr als eine Person mit demselben Vor- und Nachnamen geben), deshalb wurde eine neue Spalte eingeführt (id
), ein sogenannter Ersatzschlüssel .
Der schedule
Die Tabelle enthält die Tage und Stunden, an denen jeder Mitarbeiter arbeitet. Das work_date
Spalte gibt einen Tag an, an dem jeder Mitarbeiter gearbeitet hat. Die start_work_hour
und end_work_hour
Spalten geben die Arbeitszeiten für diesen Tag an.
Nehmen wir an, wir haben einen Mitarbeiter namens Peter. Er war am 4. Februar bei der Arbeit und markiert seine Start- und Endzeit im Zeitplan.
Die entsprechende Zeile im schedule
Tabelle sieht so aus:
id | employee_id | Arbeitsdatum | start_work_hour | end_work_hour | ist_Feiertag | ist_wochenende |
1 | 1 | 10 | 16 | 0 | 0 |
Beim Aufbau eines solchen Systems möchten wir vielleicht wissen, wer die meisten Nächte oder die meisten Wochenenden/Feiertage gearbeitet hat. Um Berichte zu generieren, die solche Informationen enthalten, müssen die Spalten is_holiday
und is_weekend
wurden eingeführt.
Bei diesem Ansatz benötigen Sie eine separate Tabelle für Feiertage, die die Daten der Feiertage für das Unternehmen enthält. Wenn ein Mitarbeiter seine Arbeitszeit einträgt, werden die Spalten is_holiday
und is_weekend
kann mit einem Trigger aktualisiert werden. Nach dem Einfügen von Datum und Uhrzeit prüft der Trigger, ob es sich bei dem Datum um einen Feiertag oder ein Wochenende handelt, und fügt den korrekten Wert in das Feld ein.