Dieses Tutorial enthält die vollständigen Schritte zum Entwerfen eines Datenbankschemas des Mitarbeiterverwaltungssystems zum Verwalten der Benutzer, Rollen, Berechtigungen, Organisationen und Mitarbeiter.
Das Entity-Relationship-Diagramm oder visuelle Datenbankdesign ist unten dargestellt.
Mitarbeiterverwaltungsdatenbank
Sie können auch die beliebten Tutorials besuchen, darunter So installieren Sie MySQL 8 unter Ubuntu 20.04 LTS, So installieren Sie MySQL 8 unter Windows, So installieren Sie MySQL Workbench unter Ubuntu, So installieren Sie MySQL 8 mit Workbench unter Windows 10, RBAC-Datenbank in MySql, Blog-Datenbank in MySQL, Quiz-Datenbank in MySQL, Datenbank für Umfragen und Umfragen in MySQL, Online-Einkaufswagen-Datenbank in MySQL, Bestandsdatenbank in MySQL und Lernen Sie grundlegende SQL-Abfragen in MySQL.
Notizen :Sie können auch dem benutzerdefinierten Datenbankschema des Mitarbeiterverwaltungssystems folgen, um kundenspezifische Lösungen basierend auf Ihren Anforderungen zu erhalten.
Organisationsdatenbank
Der allererste Schritt besteht darin, die Organisationsdatenbank zu erstellen. Es kann mit der unten gezeigten Abfrage erstellt werden.
CREATE SCHEMA `organization` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Ich habe den Zeichensatz utf8mb4 verwendet um eine Vielzahl von Zeichen zu unterstützen.
Rollentabelle
In diesem Abschnitt entwerfen wir die Rollentabelle zum Speichern der System- und Organisationsrollen. Der Spaltentyp kann verwendet werden, um zu identifizieren, ob die Rolle für die Anwendungsbenutzer oder die Mitarbeiter der Organisation bestimmt ist. Unten erwähnt ist die Beschreibung aller Spalten der Rollentabelle.
ID | Die eindeutige ID zur Identifizierung der Rolle. |
Titel | Der Rollentitel. |
Schnecke | Der eindeutige Slug, um die Rolle zu durchsuchen. |
Beschreibung | Die Beschreibung zur Erwähnung der Rolle. |
Typ | Der Rollentyp zur Unterscheidung zwischen System- und Organisationsrollen. |
Aktiv | Das Flag, um zu prüfen, ob die Rolle derzeit aktiv ist. |
Erstellt am | Es speichert Datum und Uhrzeit der Erstellung der Rolle. |
Aktualisiert um | Es speichert Datum und Uhrzeit der Aktualisierung der Rolle. |
Inhalt | Die vollständigen Details über die Rolle. |
Die Rollentabelle mit den entsprechenden Einschränkungen ist unten dargestellt.
CREATE TABLE `organization`.`role` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(75) NOT NULL,
`slug` VARCHAR(100) NOT NULL,
`description` TINYTEXT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`active` TINYINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_slug` (`slug` ASC) );
Berechtigungstabelle
In diesem Abschnitt entwerfen wir die Berechtigungstabelle zum Speichern der System- und Organisationsberechtigungen. Der Spaltentyp kann verwendet werden, um zu identifizieren, ob die Berechtigung für die Anwendungsbenutzer oder die Mitarbeiter der Organisation gilt. Unten erwähnt ist die Beschreibung aller Spalten der Berechtigungstabelle.
ID | Die eindeutige ID zur Identifizierung der Berechtigung. |
Titel | Der Berechtigungstitel. |
Schnecke | Der eindeutige Slug, um die Berechtigung zu durchsuchen. |
Beschreibung | Die Beschreibung zur Erwähnung der Berechtigung. |
Typ | Der Berechtigungstyp zur Unterscheidung zwischen System- und Organisationsberechtigungen. |
Aktiv | Das Flag, um zu prüfen, ob die Berechtigung derzeit aktiv ist. |
Erstellt am | Datum und Uhrzeit der Erstellung der Berechtigung werden gespeichert. |
Aktualisiert um | Datum und Uhrzeit der Aktualisierung der Berechtigung werden gespeichert. |
Inhalt | Die vollständigen Details zur Berechtigung. |
Die Berechtigungstabelle mit den entsprechenden Einschränkungen ist unten dargestellt.
CREATE TABLE `organization`.`permission` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`title` VARCHAR(75) NOT NULL,
`slug` VARCHAR(100) NOT NULL,
`description` TINYTEXT NULL,
`type` SMALLINT NOT NULL DEFAULT 0,
`active` TINYINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_slug` (`slug` ASC) );
Rollenberechtigungstabelle
Die Rollenberechtigungstabelle können verwendet werden, um die Zuordnungen der Berechtigungen zu den Rollen zu speichern. Nachfolgend finden Sie die Beschreibung aller Spalten der Rollenberechtigungstabelle.
Rollen-ID | Die Rollen-ID zur Identifizierung der Rolle. |
Berechtigungs-ID | Die Berechtigungs-ID zur Identifizierung der Berechtigung. |
Erstellt am | Datum und Uhrzeit der Erstellung der Zuordnung werden gespeichert. |
Aktualisiert um | Datum und Uhrzeit der Aktualisierung der Zuordnung werden gespeichert. |
Die Rollenberechtigungstabelle mit den entsprechenden Einschränkungen ist unten dargestellt.
CREATE TABLE `organization`.`role_permission` (
`roleId` BIGINT NOT NULL,
`permissionId` BIGINT NOT NULL,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL,
PRIMARY KEY (`roleId`, `permissionId`),
INDEX `idx_rp_role` (`roleId` ASC),
INDEX `idx_rp_permission` (`permissionId` ASC),
CONSTRAINT `fk_rp_role`
FOREIGN KEY (`roleId`)
REFERENCES `organization`.`role` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_rp_permission`
FOREIGN KEY (`permissionId`)
REFERENCES `organization`.`permission` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
Benutzertabelle
In diesem Abschnitt entwerfen wir die Benutzertabelle Benutzerinformationen zu speichern. Benutzer können ihre eigenen Profile verwalten. Außerdem können die Benutzer die Anwendung gemäß den ihnen zugewiesenen Systemrollen verwenden. Nachfolgend finden Sie die Beschreibung aller Spalten der Benutzertabelle.
ID | Die eindeutige ID zur Identifizierung des Benutzers. |
Rollen-ID | Die Rolle des Benutzers. Es kann Admin oder User sein. |
Vorname | Der Vorname des Benutzers. |
Zweiter Vorname | Der zweite Vorname des Benutzers. |
Nachname | Der Nachname des Benutzers. |
Mobil | Die Mobiltelefonnummer des Benutzers. Es kann für Anmelde- und Registrierungszwecke verwendet werden. |
Die E-Mail des Benutzers. Es kann für Anmelde- und Registrierungszwecke verwendet werden. | |
Passwort-Hash | Der vom entsprechenden Algorithmus generierte Passwort-Hash. Wir müssen vermeiden, einfache oder verschlüsselte Passwörter zu speichern. |
Registriert unter | Diese Spalte kann verwendet werden, um die Lebensdauer des Benutzers mit der Anwendung zu berechnen. |
Letzte Anmeldung | Es kann verwendet werden, um die letzte Anmeldung des Benutzers zu identifizieren. |
Einführung | Die kurze Einführung des Benutzers. |
Profil | Benutzerdetails. |
Die Benutzertabelle mit den entsprechenden Einschränkungen wird unten angezeigt.
CREATE TABLE `organization`.`user` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`roleId` BIGINT NOT NULL,
`firstName` VARCHAR(50) NULL DEFAULT NULL,
`middleName` VARCHAR(50) NULL DEFAULT NULL,
`lastName` VARCHAR(50) NULL DEFAULT NULL,
`username` VARCHAR(50) NULL DEFAULT NULL,
`mobile` VARCHAR(15) NULL,
`email` VARCHAR(50) NULL,
`passwordHash` VARCHAR(32) NOT NULL,
`registeredAt` DATETIME NOT NULL,
`lastLogin` DATETIME NULL DEFAULT NULL,
`intro` TINYTEXT NULL DEFAULT NULL,
`profile` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_username` (`username` ASC),
UNIQUE INDEX `uq_mobile` (`mobile` ASC),
UNIQUE INDEX `uq_email` (`email` ASC),
INDEX `idx_user_role` (`roleId` ASC),
CONSTRAINT `fk_user_role`
FOREIGN KEY (`roleId`)
REFERENCES `organization`.`role` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
Organisationstabelle
In diesem Abschnitt entwerfen wir die Organisationstabelle um die Organisationsdaten zu speichern. Unten erwähnt ist die Beschreibung aller Spalten der Organisationstabelle.
ID | Die eindeutige ID zur Identifizierung der Organisation. |
Erstellt von | Die Benutzer-ID zur Identifizierung des Benutzers, der die Organisation registriert hat. |
Aktualisiert von | Die Benutzer-ID zur Identifizierung des Benutzers, der die Organisation aktualisiert hat. |
Titel | Der Titel der Organisation. |
Metatitel | Der Metatitel, der für Browsertitel und SEO-Zwecke verwendet werden soll. |
Schnecke | Der Slug zur Bildung der eindeutigen URL. |
Zusammenfassung | Die Zusammenfassung, um die wichtigsten Highlights zu erwähnen. |
Status | Der Status der Organisation kann Neu, Genehmigt, Aktiv oder Gesperrt sein. |
Erstellt am | Es speichert Datum und Uhrzeit der Gründung der Organisation. |
Aktualisiert um | Datum und Uhrzeit der Aktualisierung der Organisation werden gespeichert. |
Profil | Die Spalte, in der die Profildetails der Organisation gespeichert werden. |
Inhalt | Die Spalte, in der die zusätzlichen Details der Organisation gespeichert werden. |
Es verwendet die Statusspalte, um den Status der Organisation zu verfolgen. Der Status kann entweder Neu, Genehmigt, Aktiv oder Gesperrt sein. Die Organisationstabelle mit den entsprechenden Einschränkungen ist unten dargestellt.
CREATE TABLE `organization`.`organization` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`createdBy` BIGINT NOT NULL,
`updatedBy` BIGINT NOT NULL,
`title` VARCHAR(75) NOT NULL,
`metaTitle` VARCHAR(100) NULL,
`slug` VARCHAR(100) NOT NULL,
`summary` TINYTEXT NULL,
`status` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`profile` TEXT NULL DEFAULT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE INDEX `uq_slug` (`slug` ASC),
INDEX `idx_organization_creator` (`createdBy` ASC),
CONSTRAINT `fk_organization_creator`
FOREIGN KEY (`createdBy`)
REFERENCES `organization`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
ALTER TABLE `organization`.`organization`
ADD INDEX `idx_organization_modifier` (`updatedBy` ASC);
ALTER TABLE `organization`.`organization`
ADD CONSTRAINT `fk_organization_modifier`
FOREIGN KEY (`updatedBy`)
REFERENCES `organization`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Organisations-Meta
Die Organisations-Metatabelle kann verwendet werden, um zusätzliche Informationen über Organisationen zu speichern, einschließlich der Organisations-Banner-URL usw. Unten aufgeführt ist die Beschreibung aller Spalten der Organisations-Metatabelle.
ID | Die eindeutige ID zur Identifizierung des Organisationsmeta. |
Organisations-ID | Die Organisations-ID zur Identifizierung der übergeordneten Organisation. |
Schlüssel | Der Schlüssel, der das Meta identifiziert. |
Inhalt | Die Spalte, in der die Metadaten der Organisation gespeichert werden. |
Die Organisations-Meta-Tabelle mit den entsprechenden Einschränkungen ist unten dargestellt.
CREATE TABLE `organization`.`organization_meta` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`organizationId` BIGINT NOT NULL,
`key` VARCHAR(50) NOT NULL,
`content` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_meta_organization` (`organizationId` ASC),
UNIQUE INDEX `uq_meta_organization` (`organizationId` ASC, `key` ASC),
CONSTRAINT `fk_meta_organization`
FOREIGN KEY (`organizationId`)
REFERENCES `organization`.`organization` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
Mitarbeitertabelle
In diesem Abschnitt entwerfen wir die Mitarbeitertabelle um die Mitarbeiterdaten zu speichern. Nachfolgend finden Sie die Beschreibung aller Spalten der Mitarbeitertabelle.
ID | Die eindeutige ID zur Identifizierung des Mitarbeiters. |
Benutzer-ID | Die Benutzer-ID zur Identifizierung des mit dem Mitarbeiter verknüpften Benutzers. |
Rollen-ID | Die dem Mitarbeiter zugewiesene organisationsspezifische Rollen-ID. |
Erstellt von | Die Benutzer-ID zur Identifizierung des Benutzers, der den Mitarbeiter hinzugefügt hat. |
Aktualisiert von | Die Benutzer-ID zur Identifizierung des Benutzers, der den Mitarbeiter aktualisiert hat. |
Code | Der von der Organisation verwendete Code zur Identifizierung des Mitarbeiters. |
Status | Der Status des Mitarbeiters kann Neu, Genehmigt, Aktiv, Gesperrt oder Gekündigt sein. |
Erstellt am | Es speichert Datum und Uhrzeit der Erstellung des Mitarbeiters. |
Aktualisiert um | Es speichert das Datum und die Uhrzeit, zu der der Mitarbeiter aktualisiert wird. |
Beginnt bei | Datum und Uhrzeit des Beschäftigungsbeginns werden gespeichert. |
Endet bei | Es speichert Datum und Uhrzeit der Beendigung des Arbeitsverhältnisses. |
Notizen | Die Spalte, in der die beschäftigungsspezifischen Notizen gespeichert werden. |
Es verwendet die Spalte Status, um den Status des Mitarbeiters zu verfolgen. Der Status kann entweder Neu, Genehmigt, Aktiv, Gesperrt oder Beendet sein. Die Mitarbeitertabelle mit den entsprechenden Beschränkungen ist wie unten gezeigt.
CREATE TABLE `organization`.`employee` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`organizationId` BIGINT NOT NULL,
`userId` BIGINT NOT NULL,
`roleId` BIGINT NOT NULL,
`createdBy` BIGINT NOT NULL,
`updatedBy` BIGINT NOT NULL,
`code` VARCHAR(100) NOT NULL,
`status` SMALLINT NOT NULL DEFAULT 0,
`createdAt` DATETIME NOT NULL,
`updatedAt` DATETIME NULL DEFAULT NULL,
`startsAt` DATETIME NULL DEFAULT NULL,
`endsAt` DATETIME NULL DEFAULT NULL,
`notes` TEXT NULL DEFAULT NULL,
PRIMARY KEY (`id`),
INDEX `idx_employee_user` (`userId` ASC),
CONSTRAINT `fk_employee_user`
FOREIGN KEY (`userId`)
REFERENCES `organization`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION);
ALTER TABLE `organization`.`employee`
ADD INDEX `idx_employee_organization` (`organizationId` ASC);
ALTER TABLE `organization`.`employee`
ADD CONSTRAINT `fk_employee_organization`
FOREIGN KEY (`organizationId`)
REFERENCES `organization`.`organization` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
ALTER TABLE `organization`.`employee`
ADD INDEX `idx_employee_role` (`roleId` ASC);
ALTER TABLE `organization`.`employee`
ADD CONSTRAINT `fk_employee_role`
FOREIGN KEY (`roleId`)
REFERENCES `organization`.`role` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
ALTER TABLE `organization`.`employee`
ADD INDEX `idx_employee_creator` (`createdBy` ASC);
ALTER TABLE `organization`.`employee`
ADD CONSTRAINT `fk_employee_creator`
FOREIGN KEY (`createdBy`)
REFERENCES `organization`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
ALTER TABLE `organization`.`employee`
ADD INDEX `idx_employee_modifier` (`updatedBy` ASC);
ALTER TABLE `organization`.`employee`
ADD CONSTRAINT `fk_employee_modifier`
FOREIGN KEY (`updatedBy`)
REFERENCES `organization`.`user` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION;
Zusammenfassung
In diesem Tutorial haben wir das Datenbankdesign eines Mitarbeiterverwaltungssystems besprochen, um die Rollen, Berechtigungen, Benutzer, Organisationen zu speichern und Mitarbeiter der Organisation zu verwalten.
Sie können Ihre Kommentare einreichen, um an der Diskussion teilzunehmen. Sie könnten auch daran interessiert sein, die Datenbank der Anwendungen Blog, Warenkorb und Umfrage &Umfrage zu entwerfen. Das vollständige Datenbankschema ist auch auf GitHub verfügbar.