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!
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!
- Refleksivitas: Jika Y adalah subkelompok X, maka X → Y
- Penambahan: Jika X → Y, maka XZ → YZ
- 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:
- Eliminasi kelompok berulang
- Buat tabel terpisah untuk setiap kelompok data yang berkaitan
- 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:
- Menjadi 1NF
- 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:
- Menjadi 2NF
- 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:
- Menjadi 3NF
- 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