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!
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!
- Reflektivitas: 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 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:
- Eliminasi kelompok berulang
- Buat tabel terpisah untuk setiap kelompok data yang terkait
- 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:
- Berada di 1NF
- 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:
- Berada di 2NF
- 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:
- Berada di 3NF
- 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