Hubungan Database

Hubungan basis data adalah tulang punggung semua basis data relasional

Suatu hubungan dibuat antara dua tabel basis data ketika satu tabel memiliki kunci asing yang merujuk kunci primer dari tabel lain. Ini adalah konsep dasar di balik istilah database relasional.

Bagaimana Kunci Asing Bekerja untuk Membangun Hubungan

Mari kita tinjau dasar-dasar kunci primer dan asing. Kunci utama secara unik mengidentifikasi setiap catatan dalam tabel. Ini adalah jenis kunci kandidat yang biasanya merupakan kolom pertama dalam tabel dan dapat secara otomatis dihasilkan oleh database untuk memastikan bahwa itu unik.

Kunci asing adalah kunci kandidat lain (bukan kunci utama) yang digunakan untuk menghubungkan catatan ke data di tabel lain.

Sebagai contoh, pertimbangkan dua tabel ini yang mengidentifikasi guru mana yang mengajar kursus mana.

Di sini, kunci utama tabel Kursus adalah Course_ID. Kunci asingnya adalah Teacher_ID:

Kursus
Course_ID Nama kursus Teacher_ID
Course_001 Biologi Teacher_001
Course_002 Matematika Teacher_001
Course_003 Inggris Teacher_003

Anda dapat melihat bahwa kunci asing di Kursus sesuai dengan kunci utama di Pengajar:

Guru
Teacher_ID Nama guru
Teacher_001 Carmen
Teacher_002 Veronica
Teacher_003 Jorge

Kita dapat mengatakan bahwa kunci asing Teacher_ID telah membantu membangun hubungan antara tabel Kursus dan Guru.

Jenis Hubungan Database

Dengan menggunakan kunci asing, atau kunci kandidat lainnya, Anda dapat mengimplementasikan tiga jenis hubungan antar tabel:

Satu-ke-satu : Jenis hubungan ini memungkinkan hanya satu catatan di setiap sisi hubungan.

Kunci utama berhubungan dengan hanya satu catatan - atau tidak ada - di tabel lain. Misalnya, dalam sebuah pernikahan, setiap pasangan hanya memiliki satu pasangan lain. 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 catatan dalam satu tabel terkait dengan beberapa catatan 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 dari tabel Pelanggan, sementara tabel Pelanggan tidak akan memiliki kunci asing yang menunjuk ke tabel Pesanan.

Banyak-ke-banyak : Ini adalah hubungan yang kompleks di mana banyak catatan dalam tabel dapat terhubung ke banyak catatan di tabel lain. Misalnya, bisnis kami mungkin tidak hanya membutuhkan tabel Pelanggan dan Pesanan, tetapi 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: beberapa pelanggan mungkin mengirimkan pesanan yang berisi beberapa produk yang sama. Hubungan semacam ini membutuhkan minimal tiga tabel.

Apa Hubungan Database Penting?

Menetapkan hubungan yang konsisten antara tabel database membantu memastikan integritas data, berkontribusi terhadap normalisasi database. Misalnya, bagaimana jika kita tidak menghubungkan tabel apa pun melalui kunci asing dan sebagai gantinya hanya menggabungkan data dalam tabel Kursus dan Pengajar, seperti:

Guru dan Kursus
Teacher_ID Nama guru Tentu saja
Teacher_001 Carmen Biologi, Matematika
Teacher_002 Veronica Matematika
Teacher_003 Jorge Inggris

Desain ini tidak fleksibel dan melanggar prinsip pertama normalisasi database, First Normal Form (1NF), 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:

Guru dan Kursus
Teacher_ID Nama guru Tentu saja
Teacher_001 Carmen Biologi
Teacher_001 Carmen Matematika
Teacher_002 Veronica Matematika
Teacher_003 Jorge Inggris

Ini masih merupakan desain yang lemah, memperkenalkan duplikasi yang tidak perlu dan apa yang disebut anomali penyisipan data , yang artinya itu dapat berkontribusi pada data yang tidak konsisten.

Misalnya, jika seorang guru memiliki beberapa 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.

Memecah tabel ini menjadi dua tabel, Guru dan Kursus (seperti yang divisualisasikan di atas), menciptakan hubungan yang tepat antara data dan karena itu membantu memastikan konsistensi dan akurasi data.