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