Hubungan satu-ke-banyak dalam database terjadi ketika setiap record di Tabel A mungkin memiliki banyak record yang terhubung di Tabel B, tetapi setiap record di Tabel B mungkin hanya memiliki satu record yang sesuai di Tabel A.
Hubungan satu-ke-banyak dalam database adalah desain database relasional yang paling umum dan merupakan inti dari desain yang baik.
Database juga dapat mengimplementasikan hubungan satu-ke-satu dan hubungan banyak-ke-banyak.

Contoh Hubungan Satu-ke-Banyak
Pertimbangkan hubungan antara seorang guru dan mata pelajaran yang mereka ajarkan. Seorang guru dapat mengajar beberapa kelas, tetapi kursus tersebut tidak akan memiliki hubungan yang sama dengan guru tersebut.
Oleh karena itu, untuk setiap record di tabel Guru, mungkin ada banyak record di tabel Kursus. Contoh ini menggambarkan hubungan satu-ke-banyak: satu guru dengan beberapa mata kuliah.
Mengapa Membangun Hubungan Satu-ke-Banyak Itu Penting
Untuk mewakili hubungan satu-ke-banyak, Anda memerlukan setidaknya dua tabel. Mari kita lihat alasannya.
Kepatuhan pada Desain Bentuk Normal Pertama
Mungkin kita membuat tabel di mana kita ingin mencatat nama dan mata kuliah yang diajarkan. Kita mungkin mendesain tabel Guru dan Kursus seperti ini:
Teacher_ID | Nama_Guru | Kursus |
---|---|---|
Guru_001 | Carmen | Biologi |
Guru_002 | Veronica | Matematika |
Guru_003 | Jorge | Bahasa Inggris |
Bagaimana jika Carmen mengajar dua mata kuliah atau lebih? Kami memiliki dua opsi dengan desain ini. Kita bisa menambahkannya ke catatan Carmen yang ada, seperti ini:
Teacher_ID | Guru_Nama | Kursus |
---|---|---|
Guru_001 | Carmen | Biologi, Matematika |
Guru_002 | Veronica | Matematika |
Guru_003 | Jorge | Bahasa Inggris |
Namun, desain di atas tidak fleksibel dan dapat menyebabkan masalah di kemudian hari saat Anda memasukkan, mengedit, atau menghapus data. Mempersulit pencarian data.
Desain ini juga melanggar prinsip pertama normalisasi database, First Normal Form (1NF), yang menyatakan bahwa setiap sel tabel harus berisi satu bagian data yang terpisah.
Aturan Bentuk Normal Kedua
Alternatif desain lain mungkin menambahkan catatan kedua untuk Carmen:
Guru_ID | Guru_Nama | Kursus |
---|---|---|
Guru_001 | Carmen | Biologi |
Guru_001 | Carmen | Matematika |
Guru_002 | Veronica | Matematika |
Guru_003 | Jorge | Bahasa Inggris |
Pendekatan ini menganut 1NF tetapi masih merupakan desain basis data yang buruk karena menimbulkan redundansi dan dapat membuat basis data yang besar membengkak secara tidak perlu. Lebih penting lagi, data bisa menjadi tidak konsisten.
Misalnya, bagaimana jika nama Carmen berubah? Seseorang yang bekerja dengan data mungkin memperbarui namanya di satu catatan dan gagal memperbaruinya di catatan kedua.
Desain ini melanggar standar Second Normal Form (2NF), yang mengikuti 1NF dan juga harus menghindari redundansi beberapa record. Aturan 2NF mencapai ini dengan memisahkan subset data menjadi beberapa tabel dan membuat hubungan di antara mereka.
Cara Mendesain Basis Data Dengan Hubungan Satu-ke-Banyak
Untuk mengimplementasikan hubungan satu-ke-banyak di tabel Guru dan Kursus, bagi tabel menjadi dua dan tautkan menggunakan kunci asing.
Di sini, kami menghapus kolom Kursus di tabel Guru:
Guru_ID | Guru_Nama |
---|---|
Guru_001 | Carmen |
Guru_002 | Veronica |
Guru_003 | Jorge |
Dan inilah tabel Kursus. Perhatikan bahwa kunci asingnya, Teacher_ID, menautkan kursus ke guru di tabel Guru:
Course_ID | Nama_Kursus | Teacher_ID |
---|---|---|
Kursus_001 | Biologi | Guru_001 |
Kursus_002 | Matematika | Guru_001 |
Kursus_003 | Bahasa Inggris | Guru_003 |
Kami telah mengembangkan hubungan antara Guru dan tabel Kursus menggunakan kunci asing. Susunan ini memberi tahu kita bahwa Carmen mengajar Biologi dan Matematika dan bahwa Jorge mengajar bahasa Inggris.
Kita dapat melihat bagaimana desain ini menghindari kemungkinan redudansi, memungkinkan masing-masing guru untuk mengajar beberapa mata pelajaran, dan menerapkan hubungan satu-ke-banyak.