Hubungan satu-ke-banyak dalam database terjadi ketika setiap catatan dalam Tabel A mungkin memiliki banyak catatan terkait di Tabel B, tetapi setiap catatan dalam Tabel B mungkin hanya memiliki satu catatan yang sesuai pada Tabel A. Hubungan satu-ke-banyak dalam database adalah desain database relasional yang paling umum dan merupakan jantung dari desain yang baik.
Pertimbangkan hubungan antara guru dan kursus yang mereka ajarkan. Seorang guru dapat mengajar banyak kursus, tetapi kursus tidak akan memiliki hubungan yang sama dengan guru.
Oleh karena itu, untuk setiap catatan dalam tabel Pengajar, mungkin ada banyak catatan dalam tabel Kursus. Ini adalah hubungan satu-ke-banyak: satu guru ke beberapa kursus.
Mengapa Membangun Hubungan Satu-ke-Banyak itu Penting
Untuk mewakili hubungan satu ke banyak, Anda membutuhkan setidaknya dua tabel. Mari kita lihat mengapa.
Mungkin kami membuat tabel Pengajar di mana kami ingin mencatat nama dan kursus yang diajarkan. Kami mungkin mendesainnya seperti ini:
Teacher_ID | Nama guru | Tentu saja |
---|---|---|
Teacher_001 | Carmen | Biologi |
Teacher_002 | Veronica | Matematika |
Teacher_003 | Jorge | Inggris |
Bagaimana jika Carmen mengajar dua atau lebih kursus? Kami memiliki dua opsi dengan desain ini. Kita bisa menambahkannya ke catatan Carmen yang sudah ada, seperti ini:
Teacher_ID | Guru _Name | Tentu saja |
---|---|---|
Teacher_001 | Carmen | Biologi, Matematika |
Teacher_002 | Veronica | Matematika |
Teacher_003 | Jorge | Inggris |
Desain di atas, bagaimanapun, tidak fleksibel dan dapat mengakibatkan masalah nanti ketika mencoba memasukkan, mengedit atau menghapus data.
Itu membuat sulit untuk mencari data. Desain ini melanggar prinsip pertama normalisasi database, First Normal Form (1NF) , yang menyatakan bahwa setiap sel tabel harus berisi satu bagian data tunggal.
Alternatif desain lain mungkin hanya menambahkan catatan kedua untuk Carmen:
Guru _ID | Guru _Name | Tentu saja |
---|---|---|
Teacher_001 | Carmen | Biologi |
Teacher_001 | Carmen | Matematika |
Teacher_002 | Veronica | Matematika |
Teacher_003 | Jorge | Inggris |
Ini mematuhi 1NF tetapi masih desain database yang buruk karena memperkenalkan redundansi dan bisa mengasapi database yang sangat besar tidak perlu. Lebih penting lagi, data bisa menjadi tidak konsisten. Misalnya, bagaimana jika nama Carmen berubah? Seseorang yang bekerja dengan data mungkin memperbarui namanya dalam satu catatan dan gagal memperbaruinya dalam rekaman kedua. Desain ini melanggar Bentuk Normal Kedua (2NF), yang menganut 1NF dan juga harus menghindari redundansi dari beberapa catatan dengan memisahkan himpunan bagian data ke dalam beberapa tabel dan menciptakan hubungan di antara mereka.
Bagaimana Mendesain Basis Data Dengan Hubungan Satu-ke-Banyak
Untuk menerapkan hubungan satu-ke-banyak dalam tabel Guru dan Mata Kuliah, kami membagi tabel menjadi dua dan menghubungkannya menggunakan kunci asing .
Di sini, kami telah menghapus kolom Kursus di tabel Pengajar:
Guru _ID | Guru _Name |
---|---|
Teacher_001 | Carmen |
Teacher_002 | Veronica |
Teacher_003 | Jorge |
Dan di sini adalah tabel Kursus. Perhatikan bahwa kunci asingnya, Teacher_ID, menautkan kursus ke pengajar di tabel Pengajar:
Course_ID | Nama kursus | Teacher_ID |
---|---|---|
Course_001 | Biologi | Teacher_001 |
Course_002 | Matematika | Teacher_001 |
Course_003 | Inggris | Teacher_003 |
Kami telah mengembangkan hubungan antara Guru dan tabel Kursus menggunakan kunci asing.
Ini memberitahu kita bahwa baik Biologi dan Matematika diajarkan oleh Carmen dan Jorge mengajarkan bahasa Inggris.
Kita dapat melihat bagaimana desain ini menghindari redudansi yang mungkin, memungkinkan setiap guru untuk mengajar beberapa kursus, dan mengimplementasikan hubungan satu ke banyak.
Basis data juga dapat menerapkan hubungan satu-ke-satu dan hubungan banyak-ke-banyak.