Normalisasi Database

Hai, para entusiasta basisdata yang sedang berkembang! Hari ini, kita akan memulai perjalanan yang menarik melalui dunia Normalisasi Database. Sebagai guru ilmu komputer yang ramah di lingkungan sekitar Anda, saya sangat senang untuk mengarahkan Anda melalui konsep esensial ini dalam desain basisdata. Jangan khawatir jika Anda baru belajar pemrograman – kita akan mulai dari dasar dan naik tingkat per tingkat!

DBMS - Database Normalization

Pengenalan Normalisasi Database

Bayangkan Anda sedang mengatur lemari pakaian Anda. Anda pasti tidak hanya melempar semua pakaian Anda ke dalam satu buah galian besar, kan? Tentu saja tidak! Anda akan mengatur mereka berdasarkan jenis, warna, atau musim. Normalisasi basisdata hampir sama – itu tentang mengatur data secara efektif 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 hubungan, di mana satu atribut menentukan yang lain.

Bayangkan Anda memiliki basisdata 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 tulis ini sebagai:

Student_ID → Name, Age, Course

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

Aksioma Armstrong

Sekarang, mari kita bicara tentang Aksioma Armstrong. Ini adalah aturan dasar untuk ketergantungan fungsi. Pahami mereka sebagai "hukum fisika" untuk hubungan basisdata!

  1. Reflektivitas: 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 sulit, tapi mereka hanya bentuk formal untuk mendeskripsikan hubungan logis. Kita akan melihat bagaimana mereka diterapkan seiring kita maju!

Ketergantungan Fungsi Trivial

Ketergantungan fungsi trivial adalah saat atribut sisi kanan adalah subkelompok atribut sisi kiri. Sebagai contoh:

Student_ID, Name → Student_ID

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

Normalisasi

Sekarang, mari kita masuk ke hati lesongan kita: Normalisasi. Normalisasi adalah proses mengatur data untuk mengurangi redundant dan ketergantungan. Itu seperti membersihkan basisdata 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 terkait
  3. Identifikasi setiap kelompok data dengan kunci utama

mari kita 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? Lebih bersih!

Bentuk Normal Kedua (2NF)

Untuk mencapai 2NF, kita perlu:

  1. Berada di 1NF
  2. Hapus ketergantungan parsial

Mari kita 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 tergantung pada Course_ID, bukan Student_ID. Kita harus membaginya menjadi 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. Berada di 2NF
  2. Hapus ketergantungan transitif

Mari kita lihat contoh:

Employee_ID Department Department_Head
101 Sales John
102 Marketing Sarah

Di sini, Department_Head tergantung pada Department, yang tergantung pada Employee_ID. Kita harus membaginya:

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. Berada di 3NF
  2. Untuk setiap ketergantungan X → Y, X harus menjadi kunci super

Ini 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 membaginya:

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 itu adalah dia! Kita telah menutupi dasar-dasar normalisasi basisdata. Ingat, meskipun normalisasi penting, kadang-kadang denormalisasi dapat berguna untuk alasan kinerja. Itu tentang menemukan keseimbangan yang tepat untuk kebutuhan khusus Anda.

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

Credits: Image by storyset