Apakah saya melanggar aturan NF pada desain database saya?

8

Saya seorang pemula dalam membuat basis data ... Saya harus membuatnya untuk aplikasi web rekrutmen saya.

Aplikasi saya perlu menjadwalkan pemutaran, ujian dan wawancara pelamar dan menyimpan hasil dalam database ..

Skema basis data saya adalah sebagai berikut:

masukkan deskripsi gambar di sini

Masalah saya adalah saya termasuk applicant_iddi tabel lain ... misalnya ujian, wawancara, jenis ujian.

Apakah saya melanggar aturan normalisasi? Jika saya melakukannya, apa yang Anda rekomendasikan untuk meningkatkan desain saya?

pemula
sumber
1
Saya tidak berpikir siapa pun tanpa pengetahuan khusus tentang domain bisnis / perusahaan hanya dapat melihat model data Anda dan memberi Anda saran realistis tentang kunci, kendala, tipe data, dll. Namun, saya dapat memberi tahu Anda, bahwa kolom yang dapat dibatalkan akan melanggar interpretasi ketat dari 1NF.
onedaywhen

Jawaban:

10

Ada beberapa hal yang perlu dipertimbangkan selain normalisasi. Misalnya, Anda memiliki kolom untuk AGE. Apakah Anda akan memperbarui itu setiap tahun? Bagaimana Anda tahu kapan harus melakukan itu? Hal yang sama berlaku untuk pengalaman bertahun-tahun.

Ada beberapa kolom yang mungkin akan memiliki beberapa nilai untuk setiap pelamar: Sekolah, Kursus, dll.

Anda mungkin juga ingin memeriksa opsionalitas Anda pada hubungan tersebut. Saat ini pelamar harus memiliki ujian terkait, tetapi ujian tidak harus memiliki pelamar yang terkait dengannya. Saya menduga itu terbalik dengan cara kerja di kehidupan nyata. Anda memiliki masalah serupa dengan semua hubungan lainnya.

Akan membantu jika Anda membacakan hubungan setelah Anda membuatnya.

Karen Lopez
sumber
1
Ada beberapa hal yang perlu dipertimbangkan selain tabel dan kolom :) Negara saya memiliki undang-undang perlindungan data (batas waktu penyimpanan data, orang memiliki hak akses ke data mereka, dll) dan undang-undang diskriminasi usia yang seharusnya membuat pengusaha setidaknya berpikir dua kali sebelum merekam usia seseorang pada tahap wawancara.
onedaywhen
5

Saya kira Anda benar-benar membutuhkan hubungan banyak ke banyak antara tabel Pemohon Anda dan tabel utama lainnya (Penyaringan dan Ujian terutama). Bahwa jika Anda ingin skrining berisi lebih dari satu pelamar (dan situasi serupa untuk tabel lainnya).

Saya akan melihat wawancara dengan satu kandidat, tetapi ujian atau sesi penyaringan dengan lebih dari satu kandidat. Dalam hal ini Anda akan membutuhkan tabel relasi yang akan menautkan Penyaringan dengan Pemohon.

Lihat di sini tentang hubungan Many-To-Many.

Marian
sumber