Hubungan Satu-ke-Banyak dalam Basis Data

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:

Guru dan Kursus
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:

Guru dan Kursus
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 dan Kursus
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
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:

Kursus
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.