Apakah Anda ingin belajar bagaimana merancang sistem database dan memetakan proses bisnis ke model data? Maka posting ini untuk Anda.
Dalam artikel ini, Anda akan melihat cara mendesain skema database sederhana untuk perusahaan rekrutmen. Setelah membaca tutorial ini, Anda akan dapat memahami bagaimana skema database dirancang untuk aplikasi dunia nyata.
Proses Bisnis Sistem Rekrutmen
Sebelum merancang basis data atau model data apa pun, sangat penting untuk memahami proses bisnis dasar untuk sistem itu. Skema database yang akan kita buat adalah untuk perusahaan atau tim rekrutmen imajiner. Mari kita lihat dulu langkah-langkah yang terlibat dalam perekrutan karyawan baru:
- Perusahaan menghubungi agen perekrutan untuk merekrut atas nama mereka. Dalam beberapa kasus, perusahaan merekrut karyawan secara langsung.
- Orang yang bertanggung jawab untuk perekrutan memulai proses perekrutan. Proses ini dapat memiliki beberapa langkah, seperti penyaringan awal, tes tertulis, wawancara pertama, wawancara lanjutan, keputusan perekrutan yang sebenarnya, dll.
- Setelah perekrut menyetujui proses tertentu – dan ini dapat berubah tergantung pada klien, perusahaan, atau pekerjaan yang bersangkutan – lowongan diiklankan di berbagai platform.
- Pelamar mulai melamar pekerjaan.
- Pelamar diseleksi dan diundang untuk tes atau wawancara awal.
- Pelamar muncul untuk tes/wawancara.
- Tes dinilai oleh perekrut. Dalam beberapa kasus, tes diteruskan ke spesialis untuk dinilai.
- Wawancara pelamar dinilai oleh satu atau lebih perekrut.
- Pelamar dievaluasi berdasarkan tes dan wawancara.
- Keputusan perekrutan sudah dibuat.
Skema Basis Data Sistem Perekrutan
Mengingat proses yang disebutkan di atas, skema database kami dibagi menjadi lima bidang subjek:
Process
Jobs
Application, Applicant, and Documents
Test and Interviews
Recruiters and Application Evaluation
Kami akan meninjau masing-masing area ini secara mendetail, sesuai urutannya. Di bawah ini, Anda dapat melihat seluruh model data.
Proses
Kategori proses berisi informasi yang berkaitan dengan proses perekrutan. Ini berisi tiga tabel:process
, step
, dan process_step
. Kita akan melihat satu per satu.
process
tabel menyimpan informasi tentang setiap proses rekrutmen. Setiap proses akan memiliki id khusus, kode, dan description
dari proses itu. Kami juga akan memiliki recruiter_id
dari orang yang memulai proses.
step
tabel berisi informasi tentang langkah-langkah yang diikuti selama proses rekrutmen itu. Setiap langkah memiliki id
dan sebuah code
nama. Kolom nama dapat memiliki nilai seperti “penyaringan awal”, “tes tertulis”, “wawancara SDM”, dll.
Karena satu proses dapat memiliki beberapa langkah dan satu langkah dapat menjadi bagian dari banyak proses, kita memerlukan tabel pencarian. process_step
tabel berisi informasi tentang setiap langkah (dalam step_id
) dan proses miliknya (dalam process_id
). Kami juga memiliki status, yang memberi tahu kami status langkah itu dalam proses itu; ini bisa NULL jika langkahnya belum dimulai. Akhirnya, kami memiliki priority
, yang memberi tahu kita perintah mana untuk mengeksekusi langkah-langkah tersebut. Langkah-langkah dengan priority
tertinggi nilai akan dieksekusi terlebih dahulu.
Pekerjaan
Selanjutnya kita memiliki Jobs
subjek, yang menyimpan semua informasi yang terkait dengan pekerjaan yang kami rekrut. Skema untuk kategori ini terlihat seperti ini:
Mari kita jelaskan masing-masing tabel secara detail.
job_category
tabel secara luas menggambarkan jenis pekerjaan. Kita bisa berharap untuk melihat kategori pekerjaan seperti “TI”, “manajemen”, “keuangan”, “pendidikan”, dll.
job_position
tabel berisi judul pekerjaan yang sebenarnya. Karena satu jabatan dapat diiklankan untuk beberapa pekerjaan (mis. “Manajer TI”, “Manajer Penjualan”), kami telah membuat tabel terpisah untuk posisi pekerjaan. Kita bisa berharap untuk melihat nilai-nilai seperti “Pemimpin Tim TI”, “Wakil Presiden”, dan “Manajer” di tabel ini.
job_platform
tabel mengacu pada media yang digunakan untuk mengiklankan lowongan pekerjaan. Misalnya, pekerjaan dapat diposting di Facebook, papan pekerjaan online, atau di koran lokal. Tautan ke postingan lowongan tersebut dapat ditambahkan di description
bidang.
organization
tabel menyimpan informasi tentang semua perusahaan yang pernah menggunakan database ini sebagai bagian dari proses perekrutan mereka. Jelas, tabel ini penting ketika perekrutan sedang dilakukan untuk perusahaan lain.
Tabel terakhir di bidang subjek ini, job
, berisi deskripsi pekerjaan yang sebenarnya. Sebagian besar atribut cukup jelas. Perlu diperhatikan bahwa tabel ini memiliki banyak kunci asing, yang artinya dapat digunakan untuk mencari kategori, posisi, platform, organisasi perekrutan, dan proses rekrutmen yang terkait dengan lowongan pekerjaan tersebut.
Aplikasi, Pemohon, dan Dokumen
Bagian ketiga dari skema terdiri dari tabel yang menyimpan informasi tentang pelamar kerja, aplikasi mereka, dan dokumen apa pun yang disertakan dengan aplikasi.
Tabel pertama, applicant
, menyimpan informasi pribadi pelamar, seperti nama depan, nama belakang, email, nomor telepon, dll. Bidang ringkasan dapat digunakan untuk menyimpan profil singkat pelamar (yaitu paragraf).
Tabel berikutnya berisi informasi untuk setiap application
, termasuk tanggalnya. Tabel juga berisi experience
dan education
kolom. Kolom ini dapat menjadi bagian dari applicant
tabel, tetapi pelamar mungkin ingin atau tidak ingin menampilkan kualifikasi pendidikan atau pengalaman kerja tertentu pada setiap aplikasi yang mereka kirimkan. Oleh karena itu, kolom ini adalah bagian dari application
meja. other_info
kolom menyimpan informasi terkait aplikasi lainnya. Di application
tabel, jobs_id dan pelamar_id masing-masing adalah kunci asing dari tabel pekerjaan dan pelamar.
Karena dapat ada beberapa lamaran untuk setiap pekerjaan tetapi setiap lamaran hanya untuk satu pekerjaan, akan ada hubungan satu-ke-banyak antara job
dan application
tabel. Demikian pula, satu pelamar dapat mengirimkan beberapa aplikasi (yaitu untuk pekerjaan yang berbeda), tetapi setiap aplikasi hanya berasal dari satu peserta; kami telah menerapkan hubungan satu-ke-banyak lainnya antara applicants
dan application
tabel untuk menangani ini.
document
tabel mengelola dokumen pendukung yang dapat dilampirkan pelamar ke aplikasi mereka. Ini bisa berupa CV, resume, surat referensi, surat lamaran, dll. Perhatikan bahwa tabel ini memiliki kolom biner bernama dokumen, yang akan menyimpan file dalam format biner. Tautan ke dokumen dapat disimpan di url
bidang; kolom nama menyimpan nama dokumen, dan last_update
menandakan versi terbaru yang diunggah oleh pemohon. Perhatikan bahwa keduanya document
dan url
dapat dibatalkan; keduanya tidak wajib, dan pemohon dapat memilih untuk menggunakan salah satu atau kedua metode tersebut untuk menambahkan informasi ke permohonan mereka.
Tidak setiap aplikasi akan memiliki dokumen yang dilampirkan. Satu dokumen dapat dilampirkan ke beberapa aplikasi, dan satu aplikasi dapat memiliki beberapa dokumen pendukung. Ini berarti ada hubungan banyak ke banyak antara application
dan document
tabel. Untuk mengelola hubungan ini, tabel pencarian application_document
telah dibuat.
Tes dan Wawancara
Sekarang kita akan beralih ke tabel yang menyimpan informasi tentang tes dan wawancara yang terkait dengan proses rekrutmen.
test
tabel menyimpan detail pengujian termasuk id
uniknya , code
nama, duration
dalam hitungan menit, dan maximum
skor mungkin untuk tes itu.
Satu aplikasi dapat dikaitkan dengan beberapa tes dan satu tes dapat dikaitkan dengan beberapa aplikasi. Sekali lagi, kami memiliki tabel pencarian untuk mengimplementasikan relasi ini:application_test
. start_time
dan end_time
kolom tidak dapat dibatalkan, karena pengujian mungkin tidak memiliki durasi, waktu mulai, atau waktu akhir tertentu.
Sebuah tes dapat dinilai oleh beberapa perekrut dan satu perekrut dapat menilai beberapa tes. answers
tabel adalah tabel yang memungkinkan hal ini. total_grades
kolom mencatat seberapa baik kandidat melakukan tes, dan kolom lulus hanya menunjukkan jika orang itu lulus atau gagal. Spesifik dari setiap tes individu dicatat dalam answer_details
kolom. Perhatikan bahwa ketiga kolom ini tidak dapat dibatalkan; tes aplikasi mungkin ditugaskan ke perekrut yang belum menilainya. Selanjutnya, perekrut dapat diberikan tes sebelum benar-benar diambil.
interview
tabel menyimpan informasi dasar (start_time
, end_time
, id
unique yang unik , dan application_id
yang relevan ) untuk setiap wawancara. Satu wawancara dapat dikaitkan dengan hanya satu aplikasi. Di sisi lain, satu aplikasi dapat memiliki beberapa wawancara. Oleh karena itu, ada hubungan satu-ke-banyak antara aplikasi dan tabel wawancara.
Satu wawancara dapat dilakukan oleh beberapa pengulas, dan satu pengulas dapat melakukan beberapa wawancara. Ini adalah hubungan banyak ke banyak lainnya, jadi kami telah membuat tabel pencarian interview_note
. Ini menyimpan informasi tentang wawancara (dalam interview_id
), perekrut (dalam recruiter_id
), dan catatan perekrut tentang wawancara. Perekrut juga dapat mencatat apakah pelamar lulus wawancara atau tidak di kolom lulus, yang dapat dibatalkan.
Evaluasi dan Status Perekrut Aplikasi
Bagian terakhir dari model rekrutmen kami menyimpan informasi tentang perekrut, status lamaran, dan evaluasi lamaran.
recruiters
tabel menyimpan first_name
setiap perekrut , last_name
, dan id
yang unik nomor.
application_evaluation
tabel menyimpan informasi tentang evaluasi aplikasi. Selain application_id
dan recruiter_id
, berisi umpan balik perekrut (dalam notes
) dan keputusan perekrutan terakhir, jika ada, dalam hired
. Satu aplikasi dapat dievaluasi oleh beberapa perekrut dan satu perekrut dapat mengevaluasi beberapa aplikasi, sehingga keduanya recruiter
dan application
tabel memiliki hubungan satu-ke-banyak dengan application_evaluation
meja.
Aplikasi dapat melalui beberapa tahap selama proses perekrutan, mis. “tidak terkirim”, “sedang ditinjau”, “menunggu keputusan”, “keputusan dibuat”, dll. Aplikasi akan memiliki status “tidak_dikirim” ketika pengguna telah memulai aplikasi tetapi belum mengirimkannya untuk ditinjau oleh perekrut. Setelah aplikasi diajukan, statusnya diubah menjadi “dalam peninjauan”, dan seterusnya. application_status
tabel digunakan untuk menyimpan informasi tersebut.
application_status_change
tabel digunakan untuk menyimpan catatan perubahan status untuk semua aplikasi yang diajukan. date_changed
kolom menyimpan tanggal perubahan status. Tabel ini dapat berguna jika Anda ingin menganalisis waktu pemrosesan untuk setiap tahap aplikasi yang berbeda. Selanjutnya, status kolom tertentu dapat diambil menggunakan application_id
kolom dari application_status_change
meja.
Kasus Penggunaan Perekrutan Sederhana
Mari kita lihat bagaimana database kami dapat membantu proses perekrutan.
Misalkan sebuah perusahaan telah menugaskan Anda untuk mempekerjakan Manajer TI dengan pengalaman pemrograman. Basis data kami dapat membantu kami mempekerjakan orang seperti itu dengan menjalankan langkah-langkah berikut:
- Langkah pertama adalah memulai proses perekrutan baru. Untuk melakukannya, data dimasukkan ke dalam
process
danstep
tabel. Perekrut dapat menambahkan langkah sebanyak yang mereka butuhkan. - Selama tugas di atas, perekrut dapat membuat pekerjaan baru dan memasukkan detailnya di
job
,job_category
,job_position
, danorganization
tabel. Terakhir, iklan pekerjaan akan ditempatkan di salah satu platform yang disimpan dijob_platform
meja. - Selanjutnya, pelamar akan membuat profil dengan mengirimkan datanya ke
applicant
meja. Kemudian mereka akan meluncurkan aplikasi baru dengan memasukkan lebih banyak data keapplication
meja. - Pemohon juga dapat melampirkan dokumen ke aplikasi mereka. Data ini akan disimpan dalam
document
danapplication_document
tabel. - Jika pengguna ingin melamar lebih dari satu pekerjaan, mereka akan mengulangi langkah 3 dan 4.
- Setelah aplikasi dikirimkan, status aplikasi akan disetel menjadi “dikirim” (atau nama status lain yang dipilih oleh perekrut).
- Perekrut akan mengevaluasi aplikasi dan memasukkan umpan balik mereka di
application_evaluation
meja. Pada tahap ini, kolom yang disewa tidak akan berisi informasi. - Setelah aplikasi dalam jumlah yang memadai diterima, perekrut akan menjalankan langkah berikutnya yang ditunjukkan dalam
process_step
meja. - Jika langkah selanjutnya adalah mengelola beberapa jenis tes, perekrut akan membuat tes dengan menambahkan data ke dalam
test
meja. - Tes yang dibuat pada langkah 9 akan ditetapkan ke aplikasi tertentu. Informasi yang menetapkan setiap pengujian ke setiap aplikasi akan disimpan di
application_test
meja. Perhatikan bahwa, selama setiap tahap, status aplikasi akan terus berubah. Ini akan dicatat diapplication_status_change
meja. - Setelah pelamar menyelesaikan tes, nilai untuk setiap tes aplikasi akan ditandai oleh perekrut dan dimasukkan ke dalam
answers
meja. - Setelah tes dilakukan, langkah selanjutnya dari
process_step
tabel akan dieksekusi. Katakanlah langkah selanjutnya adalah wawancara. - Data wawancara akan dimasukkan dalam
interview
meja. Perekrut akan memasukkan komentar mereka dan mengatakan apakah orang tersebut lulus wawancara atau tidak. Ini akan disimpan diinterview_note
meja. - Jika
process
tabel berisi langkah-langkah wawancara dan tes lebih lanjut, mereka akan dieksekusi sampai langkah terakhir tercapai. - Langkah terakhir dalam
process_step
tabel biasanya keputusan perekrutan. Jika pelamar lulus tes dan wawancara dan perusahaan memutuskan untuk mempekerjakan mereka, data dimasukkan ke dalam kolom perekrutanapplication_evaluation
meja dan orang tersebut dipekerjakan.
Apa Pendapat Anda Tentang Model Data Sistem Rekrutmen Kami?
Pada artikel ini, kita melihat cara membuat skema database yang sangat sederhana untuk sistem rekrutmen. Kami membagi skema menjadi empat kategori dan kemudian menjelaskan masing-masing secara rinci. Terakhir, kami menjalankan kasus penggunaan untuk menunjukkan bahwa skema kami benar-benar dapat membantu merekrut karyawan.
Pekerjaan desain database sedang booming. Ingin menambah keahlian database Anda? Baik Anda pendatang baru yang ingin mempelajari dasar-dasar SQL atau profesional berpengalaman yang ingin bercabang ke Membuat Tabel di SQL | Kursus Interaktif | Vertabelo Academy" target="_blank">desain database, lihat kursus mandiri LearnSQL.com.