Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Panduan Merancang Database Untuk Sistem Manajemen Karyawan Di MySQL

Tutorial ini memberikan langkah-langkah lengkap untuk merancang skema database Sistem Manajemen Karyawan untuk mengelola pengguna, peran, izin, organisasi, dan karyawan.

Diagram Hubungan Entitas atau desain basis data visual ditunjukkan di bawah ini.

Basis Data Manajemen Karyawan

Anda juga dapat mengunjungi tutorial populer termasuk Cara Menginstal MySQL 8 di Ubuntu 20.04 LTS, Cara Menginstal MySQL 8 di Windows, Cara Menginstal MySQL Workbench Di Ubuntu, Cara Menginstal MySQL 8 Dengan Workbench Di Windows 10, Database RBAC di MySql, Database Blog di MySql, Database Kuis di MySQL, Database Poll &Survey di MySQL, Database Keranjang Belanja Online di MySQL, Database Inventory di MySQL, dan Pelajari Query SQL Dasar Di MySQL.

Catatan :Anda juga dapat mengikuti skema Database Khusus dari Sistem Manajemen Karyawan untuk mendapatkan solusi yang disesuaikan berdasarkan kebutuhan Anda.

Database Organisasi

Langkah pertama adalah membuat Database Organisasi. Itu dapat dibuat menggunakan kueri seperti yang ditunjukkan di bawah ini.

CREATE SCHEMA `organization` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Saya telah menggunakan set karakter utf8mb4 untuk mendukung berbagai karakter.

Tabel Peran

Di bagian ini, kita akan mendesain Tabel Peran untuk menyimpan peran sistem dan organisasi. Jenis kolom dapat digunakan untuk mengidentifikasi apakah peran tersebut untuk pengguna aplikasi atau karyawan organisasi. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Peran.

Id Id unik untuk mengidentifikasi peran.
Judul Judul peran.
Siput Siput unik untuk mencari peran.
Deskripsi Deskripsi untuk menyebutkan peran.
Ketik Jenis peran untuk membedakan antara peran sistem dan organisasi.
Aktif Bendera untuk memeriksa apakah peran sedang aktif.
Dibuat Pada Ini menyimpan tanggal dan waktu saat peran dibuat.
Diperbarui Pada Ini menyimpan tanggal dan waktu saat peran diperbarui.
Konten Detail lengkap tentang peran tersebut.

Tabel Peran dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

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) );

Tabel Izin

Di bagian ini, kami akan mendesain Tabel Izin untuk menyimpan izin sistem dan organisasi. Jenis kolom dapat digunakan untuk mengidentifikasi apakah izin tersebut untuk pengguna aplikasi atau karyawan organisasi. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Izin.

Id Id unik untuk mengidentifikasi izin.
Judul Judul izin.
Siput Siput unik untuk mencari izin.
Deskripsi Deskripsi untuk menyebutkan izin.
Ketik Jenis izin untuk membedakan antara izin sistem dan organisasi.
Aktif Bendera untuk memeriksa apakah izin sedang aktif.
Dibuat Pada Ini menyimpan tanggal dan waktu saat izin dibuat.
Diperbarui Pada Ini menyimpan tanggal dan waktu saat izin diperbarui.
Konten Detail lengkap tentang izin.

Tabel Izin dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

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) );

Tabel Izin Peran

Tabel Izin Peran dapat digunakan untuk menyimpan pemetaan izin ke peran. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Izin Peran.

Id Peran Id peran untuk mengidentifikasi peran.
Id Izin Id izin untuk mengidentifikasi izin.
Dibuat Pada Ini menyimpan tanggal dan waktu saat pemetaan dibuat.
Diperbarui Pada Ini menyimpan tanggal dan waktu saat pemetaan diperbarui.

Tabel Izin Peran dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

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);

Tabel Pengguna

Di bagian ini, kita akan mendesain Tabel Pengguna untuk menyimpan informasi pengguna. Pengguna dapat mengelola profil mereka sendiri. Selain itu, pengguna dapat menggunakan aplikasi sesuai dengan peran sistem yang diberikan kepada mereka. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Pengguna.

Id Id unik untuk mengidentifikasi pengguna.
Id Peran Peran pengguna. Bisa Admin atau Pengguna.
Nama Depan Nama depan pengguna.
Nama Tengah Nama tengah pengguna.
Nama Belakang Nama belakang pengguna.
Seluler Nomor ponsel pengguna. Ini dapat digunakan untuk tujuan login dan registrasi.
Email Email pengguna. Ini dapat digunakan untuk tujuan login dan registrasi.
Hash Kata Sandi Hash kata sandi yang dihasilkan oleh algoritme yang sesuai. Kita harus menghindari penyimpanan kata sandi biasa atau terenkripsi.
Terdaftar Di Kolom ini dapat digunakan untuk menghitung umur pengguna dengan aplikasi tersebut.
Login Terakhir Ini dapat digunakan untuk mengidentifikasi login terakhir pengguna.
Pengantar Pengenalan singkat tentang Pengguna.
Profil Detail pengguna.

Tabel Pengguna dengan batasan yang sesuai ditunjukkan di bawah ini.

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);

Tabel Organisasi

Di bagian ini, kita akan mendesain Tabel Organisasi untuk menyimpan data organisasi. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Organisasi.

Id Id unik untuk mengidentifikasi organisasi.
Dibuat Oleh ID pengguna untuk mengidentifikasi pengguna yang mendaftarkan organisasi.
Diperbarui Oleh ID pengguna untuk mengidentifikasi pengguna yang memperbarui organisasi.
Judul Judul organisasi.
Judul Meta Judul meta yang akan digunakan untuk judul browser dan tujuan SEO.
Siput Siput untuk membentuk URL unik.
Ringkasan Ringkasan untuk menyebutkan sorotan utama.
Status Status organisasi bisa Baru, Disetujui, Aktif, atau Diblokir.
Dibuat Pada Ini menyimpan tanggal dan waktu saat organisasi dibuat.
Diperbarui Pada Ini menyimpan tanggal dan waktu di mana organisasi diperbarui.
Profil Kolom yang digunakan untuk menyimpan detail profil organisasi.
Konten Kolom yang digunakan untuk menyimpan detail tambahan organisasi.

Ini menggunakan status kolom untuk melacak status organisasi. Status dapat berupa Baru, Disetujui, Aktif, atau Diblokir. Tabel Organisasi dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

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;

Meta Organisasi

Tabel Meta Organisasi dapat digunakan untuk menyimpan informasi tambahan tentang organisasi termasuk URL spanduk organisasi dll. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Meta Organisasi.

Id Id unik untuk mengidentifikasi meta organisasi.
Id Organisasi Id organisasi untuk mengidentifikasi organisasi induk.
Kunci Kunci yang mengidentifikasi meta.
Konten Kolom yang digunakan untuk menyimpan metadata organisasi.

Tabel Meta Organisasi dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

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;

Meja Karyawan

Di bagian ini, kita akan mendesain Meja Karyawan untuk menyimpan data pegawai. Disebutkan di bawah ini adalah deskripsi dari semua kolom Tabel Karyawan.

Id Id unik untuk mengidentifikasi karyawan.
Id Pengguna ID pengguna untuk mengidentifikasi pengguna yang terkait dengan Karyawan.
Id Peran Id peran khusus organisasi yang ditetapkan ke Karyawan.
Dibuat Oleh ID pengguna untuk mengidentifikasi pengguna yang menambahkan karyawan.
Diperbarui Oleh ID pengguna untuk mengidentifikasi pengguna yang memperbarui karyawan.
Kode Kode yang digunakan oleh organisasi untuk mengidentifikasi karyawan.
Status Status karyawan dapat berupa Baru, Disetujui, Aktif, Diblokir, atau Dihentikan.
Dibuat Pada Ini menyimpan tanggal dan waktu saat karyawan dibuat.
Diperbarui Pada Ini menyimpan tanggal dan waktu saat karyawan diperbarui.
Mulai Dari Ini menyimpan tanggal dan waktu di mana pekerjaan dimulai.
Berakhir Pada Menyimpan tanggal dan waktu berakhirnya pekerjaan.
Catatan Kolom yang digunakan untuk menyimpan catatan khusus untuk pekerjaan.

Ini menggunakan status kolom untuk melacak status karyawan. Status dapat berupa Baru, Disetujui, Aktif, Diblokir, atau Dihentikan. Tabel Karyawan dengan batasan yang sesuai adalah seperti yang ditunjukkan di bawah ini.

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;

Ringkasan

Dalam tutorial ini, kita telah membahas desain database Sistem Manajemen Karyawan untuk menyimpan peran, izin, pengguna, organisasi, dan mengelola karyawan organisasi.

Anda dapat mengirimkan komentar Anda untuk bergabung dalam diskusi. Anda mungkin juga tertarik untuk mendesain database aplikasi Blog, Keranjang Belanja, dan Poll &Survey. Skema database lengkap juga tersedia di GitHub.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menghubungkan ke MySQL menggunakan PHP

  2. Cara Mengotomatiskan Migrasi dari Standalone MySQL ke Galera Cluster menggunakan Ansible

  3. MySQL di 2018:Apa yang ada di 8.0 dan Pengamatan Lainnya

  4. Cara Setup Replikasi MySQL di RHEL, Rocky dan AlmaLinux

  5. Bagaimana Membandingkan Dua Kolom di MySQL