Hubungan dibuat antara dua tabel database ketika satu tabel menggunakan kunci asing yang mereferensikan kunci utama tabel lain. Ini adalah konsep dasar di balik istilah database relasional.
Cara Kerja Kunci Asing untuk Membangun Hubungan
Kunci utama secara unik mengidentifikasi setiap record dalam tabel. Ini adalah jenis kunci kandidat yang biasanya merupakan kolom pertama dalam tabel dan dapat dibuat secara otomatis oleh database untuk memastikan keunikannya. Kunci asing adalah kunci kandidat lain (bukan kunci utama) yang digunakan untuk menautkan catatan ke data di tabel lain.
Misalnya, perhatikan dua tabel berikut yang mengidentifikasi guru mana yang mengajar mata kuliah mana. Di sini, kunci utama tabel Kursus adalah Course_ID. Kunci asingnya adalah Teacher_ID:
Course_ID | Nama_Kursus | Teacher_ID |
---|---|---|
Kursus_001 | Biologi | Guru_001 |
Kursus_002 | Matematika | Guru_002 |
Kursus_003 | Bahasa Inggris | Guru_003 |
Anda dapat melihat bahwa kunci asing di Kursus cocok dengan kunci utama di Guru:
Teacher_ID | Nama_Guru |
---|---|
Guru_001 | Carmen |
Guru_002 | Veronica |
Guru_003 | Jorge |
Kita dapat mengatakan bahwa kunci asing Teacher_ID membantu membangun hubungan antara tabel Kursus dan Guru.
Jenis Hubungan Basis Data
Menggunakan kunci asing, atau kunci kandidat lainnya, Anda dapat menerapkan tiga jenis hubungan antar tabel:
Satu-ke-Satu
Jenis hubungan ini hanya mengizinkan satu record di setiap sisi hubungan. Kunci utama hanya berhubungan dengan satu catatan (atau tidak ada) di tabel lain. Misalnya, dalam sebuah pernikahan, setiap pasangan hanya memiliki satu pasangan. Hubungan semacam ini dapat diimplementasikan dalam satu tabel dan oleh karena itu tidak menggunakan kunci asing.
Satu-ke-Banyak
Hubungan satu-ke-banyak memungkinkan satu record dalam satu tabel terkait dengan beberapa record di tabel lain. Pertimbangkan bisnis dengan database yang memiliki tabel Pelanggan dan Pesanan.
Satu pelanggan dapat membeli beberapa pesanan, tetapi satu pesanan tidak dapat ditautkan ke beberapa pelanggan. Oleh karena itu tabel Pesanan akan berisi kunci asing yang cocok dengan kunci utama tabel Pelanggan, sedangkan tabel Pelanggan tidak akan memiliki kunci asing yang menunjuk ke tabel Pesanan.
Banyak-ke-Banyak
Ini adalah hubungan kompleks di mana banyak catatan dalam tabel dapat menautkan ke banyak catatan di tabel lain. Misalnya, bisnis kita mungkin membutuhkan tabel Pelanggan dan Pesanan, dan kemungkinan juga membutuhkan tabel Produk.
Sekali lagi, hubungan antara tabel Pelanggan dan Pesanan adalah satu-ke-banyak, tetapi pertimbangkan hubungan antara tabel Pesanan dan Produk. Pesanan dapat berisi beberapa produk, dan produk dapat ditautkan ke beberapa pesanan karena beberapa pelanggan mungkin mengirimkan pesanan yang berisi beberapa produk yang sama. Hubungan semacam ini membutuhkan minimal tiga tabel.
Mengapa Hubungan Basis Data Penting?
Membangun hubungan yang konsisten antara tabel database membantu memastikan integritas data, berkontribusi pada normalisasi database. Misalnya, bagaimana jika kita tidak menautkan tabel apa pun melalui kunci asing dan malah menggabungkan data di tabel Kursus dan Guru, seperti:
Teacher_ID | Nama_Guru | Kursus |
---|---|---|
Guru_001 | Carmen | Biologi, Matematika |
Guru_002 | Veronica | Matematika |
Guru_003 | Jorge | Bahasa Inggris |
Desain ini tidak fleksibel dan melanggar prinsip pertama normalisasi database, Bentuk Normal Pertama, yang menyatakan bahwa setiap sel tabel harus berisi satu bagian data yang terpisah.
Atau mungkin kami memutuskan untuk menambahkan catatan kedua untuk Carmen, untuk menegakkan 1NF:
Teacher_ID | Nama_Guru | Kursus |
---|---|---|
Guru_001 | Carmen | Biologi |
Guru_001 | Carmen | Matematika |
Guru_002 | Veronica | Matematika |
Guru_003 | Jorge | Bahasa Inggris |
Ini masih merupakan desain yang lemah, memperkenalkan duplikasi yang tidak perlu dan apa yang disebut anomali penyisipan data, yang berarti dapat berkontribusi pada data yang tidak konsisten. Misalnya, jika seorang guru memiliki banyak catatan, bagaimana jika beberapa data perlu diedit, tetapi orang yang melakukan pengeditan data tidak menyadari bahwa ada banyak catatan? Tabel tersebut kemudian akan berisi data yang berbeda untuk individu yang sama, tanpa cara yang jelas untuk mengidentifikasi atau menghindarinya.
Membagi tabel ini menjadi dua tabel, Pengajar dan Kursus, menciptakan hubungan yang tepat antara data dan oleh karena itu membantu memastikan konsistensi dan akurasi data.