Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Leitfaden zum Entwerfen einer Datenbank für ein Mitarbeiterverwaltungssystem in MySQL

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.
E-Mail 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.