DBMS - Normalisasi Database

Hai, para entusiast database yang bersemangat! Hari ini, kita akan memulai sebuah perjalanan menarik melalui dunia Normalisasi Database. Sebagai guru sains komputer yang ramah di lingkungan sekitar Anda, saya sangat gembira untuk mengantar Anda melalui konsep penting ini dalam desain database. Jangan khawatir jika Anda baru belajar pemrograman – kita akan mulai dari dasar dan naik tingkat perlahan!

DBMS - Database Normalization

Pengenalan ke Normalisasi Database

Bayangkan Anda sedang mengatur lemari pakaian Anda. Anda tentu saja tidak akan melempar semua pakaian Anda ke dalam satu buah timbunan besar, kan? Tentu saja tidak! Anda akan mengatur mereka menurut jenis, warna, atau musim. Normalisasi database hampir sama – tentang mengatur data secara efisien dan mengurangi redundant.

Ketergantungan Fungsi

Mari kita mulai dengan konsep dasar: Ketergantungan Fungsi.

Apa itu Ketergantungan Fungsi?

Ketergantungan Fungsi (FD) adalah hubungan antara dua atribut dalam sebuah relasi, di mana salah satu atribut menentukan yang lain.

Bayangkan Anda punya database murid:

Student_ID Name Age Course
101 Alice 20 Math
102 Bob 21 Physics
103 Charlie 19 Chemistry

Di sini, Student_ID secara fungsional menentukan Name, Age, dan Course. Kita menulis ini sebagai:

Student_ID → Name, Age, Course

Ini berarti jika kita tahu Student_ID, kita dapat menentukan Name, Age, dan Course muridnya.

Aksioma Armstrong

Sekarang, mari bicarakan tentang Aksioma Armstrong. Ini adalah aturan dasar untuk ketergantungan fungsional. Pahami ini sebagai "hukum fisika" untuk hubungan database!

  1. Refleksivitas: Jika Y adalah subkelompok X, maka X → Y
  2. Penambahan: Jika X → Y, maka XZ → YZ
  3. Transitivitas: Jika X → Y dan Y → Z, maka X → Z

Ini mungkin terdengar rumit, tapi mereka hanya adalah cara formal untuk mendeskripsikan hubungan logis. Kita akan melihat bagaimana mereka diterapkan seiring perjalanan kita!

Ketergantungan Fungsi Trivial

Sebuah ketergantungan fungsional trivial adalah saat atribut sisi kanan adalah subkelompok sisi kiri. Misalnya:

Student_ID, Name → Student_ID

Ini trivial karena mengetahui Student_ID dan Name akan selalu memberitahu Anda tentang Student_ID (itu sudah ada di sana!).

Normalisasi

Sekarang, mari kita masuk ke hati pelajaran kita: Normalisasi. Normalisasi adalah proses mengatur data untuk mengurangi redundant dan dependensi. Seperti mengurangi kerumitan dalam database Anda!

Bentuk Normal Pertama (1NF)

Bentuk Normal Pertama adalah level dasar normalisasi. Untuk mencapai 1NF:

  1. Eliminasi kelompok berulang
  2. Buat tabel terpisah untuk setiap kelompok data yang berkaitan
  3. Identifikasi setiap kelompok data dengan kunci utama

mari lihat contoh:

Sebelum 1NF:

Order_ID Product Quantity
1 Apple, Banana 2, 3
2 Orange, Grape 1, 4

Setelah 1NF:

Order_ID Product Quantity
1 Apple 2
1 Banana 3
2 Orange 1
2 Grape 4

Lihat bagaimana kita menghapus kelompok berulang? Jauh lebih bersih!

Bentuk Normal Kedua (2NF)

Untuk mencapai 2NF, kita perlu:

  1. Menjadi 1NF
  2. Hapus dependensi parsial

mari lihat contoh:

Student_ID Course_ID Course_Name Instructor
101 C1 Math Prof. Smith
102 C2 Physics Prof. Johnson

Di sini, Course_Name dan Instructor bergantung pada Course_ID, bukan Student_ID. Kita harus memisahkan ini kedalam dua tabel:

Tabel 1: Student_Course

Student_ID Course_ID
101 C1
102 C2

Tabel 2: Course

Course_ID Course_Name Instructor
C1 Math Prof. Smith
C2 Physics Prof. Johnson

Bentuk Normal Ketiga (3NF)

Untuk mencapai 3NF, kita perlu:

  1. Menjadi 2NF
  2. Hapus dependensi transitif

mari lihat contoh:

Employee_ID Department Department_Head
101 Sales John
102 Marketing Sarah

Di sini, Department_Head bergantung pada Department, yang bergantung pada Employee_ID. Kita harus memisahkan ini:

Tabel 1: Employee

Employee_ID Department
101 Sales
102 Marketing

Tabel 2: Department

Department Department_Head
Sales John
Marketing Sarah

Bentuk Normal Boyce-Codd (BCNF)

BCNF adalah versi sedikit lebih kuat dari 3NF. Untuk menjadi BCNF:

  1. Menjadi 3NF
  2. Untuk setiap dependensi X → Y, X harus menjadi kunci super

mari lihat contoh:

Student Subject Professor
Alice Math Prof. Smith
Bob Physics Prof. Johnson

Dalam kasus ini, baik (Student, Subject) → Professor dan Professor → Subject. Untuk mencapai BCNF, kita pisahkan ini:

Tabel 1: Student_Professor

Student Professor
Alice Prof. Smith
Bob Prof. Johnson

Tabel 2: Professor_Subject

Professor Subject
Prof. Smith Math
Prof. Johnson Physics

Dan begitu saja! Kita telah meliput dasar-dasar normalisasi database. Ingat, meskipun normalisasi penting, kadang-kadang denormalisasi bisa berguna untuk alasan performansi. Itu tentang menemukan keseimbangan yang tepat untuk kebutuhan khusus Anda.

Saya harap panduan ini telah membantu. Ingat, latihan membuat sempurna! Cobalah menormalisasi beberapa database contoh sendiri. Jika Anda punya pertanyaan, jangan ragu untuk bertanya. Selamat normalisasi!

Credits: Image by storyset