Dalam Entity Relationship Diagram (ERD), relation atau relationship menggambarkan hubungan antara dua atau lebih entitas. ERD digunakan untuk memvisualisasikan bagaimana entitas dalam sistem saling berinteraksi satu sama lain. Hubungan ini bisa berupa satu-ke-satu (one-to-one), satu-ke-banyak (one-to-many), atau banyak-ke-banyak (many-to-many).
Contohnya:
- Mahasiswa mengambil Mata Kuliah → relasi antara entitas Mahasiswa dan entitas Mata Kuliah.
- Dosen membimbing Mahasiswa → relasi antara Dosen dan Mahasiswa.
Mengapa Many-to-Many Tidak Baik Digunakan Langsung dalam ERD
Hubungan many-to-many sebenarnya tidak dapat langsung diterapkan dalam implementasi basis data relasional (misalnya MySQL, PostgreSQL, dan sebagainya). Alasannya adalah karena:
- Tidak efisien dalam penyimpanan data
Basis data relasional tidak memiliki cara bawaan untuk menangani hubungan banyak-ke-banyak secara langsung, sehingga akan sulit mengelola dan mengakses data jika hubungan ini tidak dipecah. - Tidak bisa mengakomodasi atribut hubungan
Dalam hubungan many-to-many, sering kali kita ingin menyimpan informasi tambahan tentang hubungan itu sendiri. Misalnya, relasi "Mahasiswa mengambil Mata Kuliah" mungkin juga menyimpan nilai ujian atau tanggal pengambilan. Ini tidak bisa dilakukan kalau hubungan tidak dipecah.
Solusinya: gunakan tabel relasi (intermediate table)
Untuk mengatasi ini, hubungan many-to-many harus diubah menjadi dua hubungan one-to-many dengan menambahkan tabel penghubung (junction table).
Contoh:
- Tabel Mahasiswa
- Tabel Mata Kuliah
- Tabel KRS sebagai tabel relasi yang berisi kolom: NIM, Kode Mata Kuliah, Nilai
Dengan begitu, hubungan many-to-many dipecah menjadi:
- Mahasiswa → KRS (one-to-many)
- Mata Kuliah → KRS (one-to-many)