Database
 sql >> Datenbank >  >> RDS >> Database

So speichern Sie die Zeitpläne der Mitarbeiter in einer Datenbank

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

  1. 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.
  2. 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 2015-02-04 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.