Traffine I/O

Bahasa Indonesia

2023-04-06

Normalisasi dalam Database

Normalisasi dalam Database

Normalisasi dalam konteks database mengacu pada proses merancang struktur database relasional untuk mengurangi redundansi data dan meningkatkan integritas data. Tujuan utama normalisasi meliputi:

  • Menghilangkan Redundansi Data
    Normalisasi bertujuan untuk memastikan setiap elemen data disimpan hanya dalam satu tempat. Hal ini dicapai dengan membagi database secara logis menjadi tabel-tabel dan membangun hubungan antara mereka.

  • Meminimalkan Masalah Modifikasi Data
    Ketika data disimpan di beberapa tempat, menjaga konsistensinya saat dilakukan modifikasi dapat menjadi tantangan. Normalisasi mengatasi masalah ini dengan memastikan setiap data berada di satu tempat, sehingga memudahkan modifikasi data.

  • Mensederhanakan Permintaan Data (Queries)
    Data yang terorganisir dengan baik dan tidak redundan dalam database yang ternormalisasi membuat permintaan data (queries) lebih mudah dilakukan. Hal ini menghasilkan peningkatan kinerja, terutama pada database yang besar.

  • Mempertahankan Integritas Data
    Normalisasi membantu mempertahankan akurasi dan konsistensi data sepanjang siklus hidupnya dengan mengurangi redundansi dan membangun hubungan yang jelas antara tabel-tabel.

  • Mengakomodasi Data Masa Depan
    Database yang ternormalisasi dengan baik lebih mudah beradaptasi dengan perubahan di masa depan. Seiring dengan perkembangan kebutuhan bisnis, menjadi lebih mudah untuk memodifikasi database jika database tersebut ternormalisasi dengan baik.

Bentuk Normal (Normal Forms)

Dalam normalisasi, bentuk normal (normal forms) adalah seperangkat aturan yang mengurangi redundansi data dan meningkatkan konsistensi logis. Progresi dari bentuk normal pertama (1NF) hingga bentuk normal kelima (5NF) melibatkan aturan yang semakin ketat.

Bentuk Normal Pertama (1NF)

Sebuah tabel dikatakan berada dalam bentuk normal pertama jika memenuhi kondisi-kondisi berikut:

  • Memiliki kunci primer (primary key).
  • Semua atribut mengandung nilai atomik (nilai yang tidak dapat didekomposisi lebih lanjut).
  • Entri pada kolom adalah jenis yang sama.

Contoh

Misalkan ada sebuah tabel yang mencatat mata kuliah yang diambil oleh mahasiswa:

Student_ID Name Courses
1 Alice Math, History
2 Bob Science
3 Carol Math, Science, History

Tabel ini tidak berada dalam 1NF karena kolom Courses mengandung nilai yang tidak atomik. Untuk membuatnya sesuai dengan 1NF, kita dapat memecah datanya menjadi baris-baris terpisah:

Student_ID Name Course
1 Alice Math
1 Alice History
2 Bob Science
3 Carol Math
3 Carol Science
3 Carol History

Bentuk Normal Kedua (2NF)

Sebuah tabel dikatakan berada dalam bentuk normal kedua jika:

  • Berada dalam 1NF.
  • Tidak memiliki ketergantungan parsial (tidak ada atribut non-primer yang bergantung pada subset yang benar dari kunci kandidat apa pun).

Contoh

Misalkan ada sebuah tabel di mana mahasiswa ditempatkan di ruang kelas yang berbeda di sebuah sekolah:

Student_ID Class_ID Class_Room Subject
1 A 101 Math
2 B 102 Science

Di sini, baik Student_ID maupun Class_ID bersama-sama membentuk kunci utama. Namun, Class_Room hanya bergantung pada sebagian dari kunci utama (Class_ID), yang disebut sebagai ketergantungan parsial. Untuk membuat tabel ini sesuai dengan 2NF, kita dapat memecahnya menjadi dua tabel:

  • Tabel Mahasiswa
Student_ID Class_ID Subject
1 A Math
2 B Science
  • Tabel Kelas
Class_ID Class_Room
A 101
B 102

Bentuk Normal Ketiga (3NF)

Sebuah tabel dikatakan berada dalam bentuk normal ketiga jika:

  • Berada dalam 2NF.
  • Tidak memiliki ketergantungan transitif (atribut non-primer tidak bergantung pada atribut non-primer lainnya).

Contoh

Misalkan ada sebuah tabel yang mencatat item dan harga dalam mata uang yang berbeda:

Item_ID Item_Name Currency Exchange_Rate Price_in_USD
1 Book EUR 1.2 20
2 Pen EUR 1.2 2

Here, Price_in_USD depends on Exchange_Rate, which is not part of the primary key. This is a transitive dependency. To make this table 3NF compliant, we can break it into two tables:

  • Tabel Item
Item_ID Item_Name Currency Price_in_USD
1 Book EUR 20
2 Pen EUR 2
  • Tabel Mata Uang
Currency Exchange_Rate
EUR 1.2

Bentuk Normal Keempat (4NF)

Sebuah tabel dikatakan berada dalam bentuk normal keempat jika:

  • Berada dalam 3NF.
  • Tidak memiliki ketergantungan multivalued (atribut bergantung pada atribut lain tetapi tidak bergantung pada kunci).

Contoh

Misalkan ada sebuah tabel yang mencatat keterampilan karyawan di departemen yang berbeda:

Employee_ID Department Skill
1 HR Writing
1 HR Speaking
2 IT Coding
2 IT Testing

Di sini, Skill tidak tergantung pada Department, tetapi keduanya tergantung pada Employee_ID. Ini adalah ketergantungan multivalued. Untuk membuat tabel ini sesuai dengan 4NF, kita dapat memecahnya menjadi dua tabel:

  • Tabel Karyawan
Employee_ID Department
1 HR
2 IT
  • Tabel Keterampilan
Employee_ID Skill
1 Writing
1 Speaking
2 Coding
2 Testing

Bentuk Normal Kelima (5NF)

Sebuah tabel dikatakan berada dalam Bentuk Normal Kelima atau Bentuk Normal Proyek-Gabung jika:

  • Berada dalam 4NF.
  • Tidak dapat didekomposisi menjadi tabel-tabel yang lebih kecil tanpa kehilangan data atau menghasilkan data palsu.

Bentuk normal ini berurusan dengan kasus di mana tabel dapat direkonstruksi dengan menggabungkan beberapa tabel kecil. Untuk kebanyakan tujuan praktis, mencapai 4NF sering sudah cukup, dan 5NF digunakan dalam skenario yang lebih kompleks atau khusus.

Denormalisasi

Denormalisasi adalah proses menggabungkan redundansi ke dalam database yang ternormalisasi secara strategis untuk mengoptimalkan kinerja baca. Meskipun normalisasi penting untuk mempertahankan integritas data dan menghindari anomali, terkadang dapat menyebabkan masalah kinerja karena perlu adanya penggabungan tabel dalam permintaan data. Di sinilah denormalisasi berperan. Berikut adalah beberapa situasi di mana denormalisasi dapat bermanfaat:

  • Beban Kerja yang Lebih Banyak pada Operasi Baca
    Jika database Anda secara utama melayani operasi baca dan kinerja permintaan data menjadi krusial, denormalisasi dapat mengurangi kebutuhan untuk penggabungan tabel dan membuat permintaan data menjadi lebih cepat.

Pelaporan dan Analitik
Dalam kasus-kasus di mana database digunakan untuk pelaporan atau analitik, denormalisasi dapat mengatur struktur data sedemikian rupa sehingga lebih sesuai untuk permintaan data yang kompleks dan agregasi.

  • Mensederhanakan Pengambilan Data untuk Aplikasi
    Denormalisasi dapat memudahkan pengambilan data bagi aplikasi klien dengan mengurangi kompleksitas dari permintaan SQL.

  • Skalabilitas dan Batasan Resource
    Ketika bekerja dengan resource terbatas, denormalisasi kadang-kadang dapat digunakan untuk mencapai kinerja yang lebih baik tanpa bergantung pada perangkat keras yang lebih kuat.

Menyeimbangkan Normalisasi dan Denormalisasi

Penting untuk menyadari bahwa denormalisasi bukanlah pendekatan yang harus dilakukan secara keseluruhan. Seringkali, desain database terbaik melibatkan keseimbangan antara normalisasi dan denormalisasi. Ini dikenal sebagai pendekatan hybrid. Dalam pendekatan hybrid, bagian-bagian tertentu dari database didenormalisasi untuk mengoptimalkan kinerja baca, sementara bagian-bagian lain tetap dalam keadaan yang sangat ternormalisasi untuk mempertahankan integritas data. Keputusan mengenai di mana harus melakukan denormalisasi harus didasarkan pada pertimbangan yang matang terhadap persyaratan dan kendala yang spesifik dari aplikasi dan sistem Anda.

Ryusei Kakujo

researchgatelinkedingithub

Focusing on data science for mobility

Bench Press 100kg!