Apa itu Relation pada ERD, mengapa Many-to-Many tidak baik digunakan pada ERD

1. Apa itu Relation (Hubungan) pada ERD?

​Relation (Hubungan) dalam ERD (Entity-Relationship Diagram) adalah sebuah asosiasi logis atau keterkaitan fungsional yang ada antara dua atau lebih entitas (objek data) dalam suatu sistem.

​Hubungan ini menentukan bagaimana data dari satu entitas berinteraksi dengan data dari entitas lain. Dalam diagram, hubungan dilambangkan dengan bentuk belah ketupat (diamond) dan memiliki kardinalitas (derajat hubungan), yaitu:

  • ​One-to-One (1:1): Satu entitas A hanya berhubungan dengan satu entitas B.
  • One-to-Many (1:N): Satu entitas A dapat berhubungan dengan banyak entitas B.
  • Many-to-Many (N:M): Banyak entitas A dapat berhubungan dengan banyak entitas B.


​2. Mengapa Many-to-Many (N:M) Tidak Baik Digunakan pada ERD (saat implementasi)?

  • Redundansi Data Tinggi: 

Jika kita mencoba menyimpan hubungan N:M tanpa tabel perantara, kita akan dipaksa mengulang dan menduplikasi data Primary Key di kedua tabel berkali-kali. Ini menyebabkan pemborosan ruang dan data storage.

​Contoh: Untuk mencatat Mahasiswa mengambil Mata Kuliah, kita harus mengulang NIM mahasiswa yang sama untuk setiap MK yang diambil.

  • ​Anomali Data (Inkonsistensi):

​Anomali Update: Jika ada data yang berulang dan harus diperbarui (misalnya nama mahasiswa), kita harus mengubahnya di banyak baris. Jika ada satu baris yang terlewat, data akan menjadi tidak konsisten.

​Anomali Insert: Sulit memasukkan data hubungan jika salah satu entitas belum ada.

  • ​Tidak Dapat Menampung Atribut Hubungan:

​Hubungan N:M seringkali memiliki atribut spesifik hubungan itu sendiri (misalnya, atribut 'Nilai' atau 'Tanggal Ambil' pada hubungan Mahasiswa-Mata Kuliah). Atribut ini tidak dapat ditempatkan secara logis di tabel Mahasiswa maupun di tabel Mata Kuliah.


​Solusi:

​Dalam tahap perancangan logis database, hubungan N:M harus dipecah (resolved) menjadi dua hubungan One-to-Many (1:N) dengan menambahkan Tabel Penghubung (Junction/Association Table) di tengahnya.

​Contoh: Hubungan Mahasiswa (N:M) Mata Kuliah dipecah menjadi:

​Mahasiswa (1:N) KRS

​KRS (N:1) Mata Kuliah

​Tabel KRS akan menyimpan Foreign Key dari Mahasiswa dan Mata Kuliah, serta atribut tambahan seperti 'Nilai'.

Komentar

Postingan populer dari blog ini

Apa itu Primary Key, Foreign Key, dan Candidate Key. Berikan masing-masing 5 contoh pada penerapan ERD