4.1 Pendahuluan

Dengan mengonversi tabel database menjadi tabel biasa, kini Anda dapat menganalisis hubungan di antara tabel tersebut. Jumlah elemen yang berinteraksi antara dua tabel yang berhubungan disebut kardinalitas. Kardinalitas membantu Anda mengontrol seberapa efisien Anda mempartisi data ke dalam tabel.

Secara teoritis, semua entitas dapat mempertahankan hubungan satu sama lain, tetapi dalam praktiknya, ada tiga jenis hubungan antar entitas:

  • Satu ke satu
  • Satu ke banyak
  • banyak ke banyak

4.2 Komunikasi satu-ke-satu

Jika hanya ada satu turunan dari entitas A untuk setiap turunan dari entitas B, mereka dikatakan memiliki hubungan satu-ke-satu (sering dinotasikan sebagai "1:1"). Pada diagram ER, hubungan seperti itu ditunjukkan oleh garis dengan palang kecil di setiap ujungnya:

Hubungan 1:1 umumnya menunjukkan bahwa, kecuali jika Anda memiliki alasan kuat untuk memisahkannya, data kedua tabel paling baik digabungkan menjadi satu.

Namun, dalam beberapa keadaan, wajar untuk menggunakan tabel dengan hubungan 1:1. Jika tabel Anda memiliki bidang dengan data opsional, seperti deskripsi, dan dalam banyak kasus kosong, masuk akal untuk memindahkan semua deskripsi ke tabel terpisah, yang akan memungkinkan Anda untuk menghilangkan celah yang sering dan meningkatkan efisiensi database Anda .

Kemudian, untuk memetakan data dengan benar, Anda harus menyertakan setidaknya satu kolom identik di setiap tabel (sebaiknya pilih kunci utama untuk ini).

4.3 Hubungan satu-ke-banyak

Tipe relasi ini terjadi ketika rekaman dalam satu tabel diasosiasikan dengan beberapa entitas di tabel lainnya. Misalnya, pelanggan yang sama dapat memesan banyak, atau pengunjung perpustakaan dapat meminjam banyak buku dalam satu kunjungan. Hubungan satu-ke-banyak (atau disingkat 1:M) dinyatakan dalam diagram menggunakan notasi kaki gagak, seperti yang ditunjukkan pada contoh di bawah ini:

Untuk menerapkan hubungan 1:M saat merencanakan database, cukup tambahkan kunci primer dari tabel "satu" sebagai atribut ke tabel "banyak". Jika kunci utama ada di tabel lain, itu disebut "kunci asing". Tabel "satu" dianggap sebagai tabel induk, sedangkan tabel "banyak" dianggap sebagai tabel anak.

4.4 Relasi banyak-ke-banyak

Ketika beberapa entitas dalam satu tabel dapat dihubungkan ke beberapa entitas lain, mereka dianggap memiliki hubungan banyak-ke-banyak (atau M:M). Misalnya, ada hubungan seperti itu antara siswa dan kelas, karena setiap siswa dapat menghadiri beberapa kelas yang berbeda, dan karenanya, banyak siswa dapat datang ke setiap kelas.

Pada diagram ER, jenis hubungan ini ditampilkan sebagai berikut:

Sayangnya, tidak mungkin untuk secara langsung mengimplementasikan hubungan seperti itu di database. Oleh karena itu, itu harus dipecah menjadi dua hubungan satu-ke-banyak.

Untuk melakukannya, Anda perlu membuat entitas baru di antara kedua tabel. Jika hubungan M:M dibuat antara penjualan dan produk, entitas baru dapat disebut "produk yang dijual" karena entitas tersebut akan mewakili isi dari setiap penjualan.

Dengan "barang terjual" dan tabel "penjualan" dan tabel "barang" akan dihubungkan dengan tipe 1:M. Dalam model yang berbeda, entitas perantara seperti itu disebut berbeda - "tabel penghubung", "entitas asosiatif", atau "tabel simpul".

Setiap entri tabel tautan menghubungkan dua entitas berbeda dari tabel yang berdekatan (dan mungkin juga berisi informasi tambahan). Misalnya, tabel tautan antara siswa dan kelas mungkin terlihat seperti ini:

4.5 Wajib atau tidak?

Pendekatan lain untuk analisis tautan adalah menentukan entitas terhubung mana yang merupakan prasyarat untuk keberadaan entitas lain. Sisi tautan opsional ditandai dengan lingkaran di bagasi.

Misalnya, agar suatu negara memiliki perwakilannya sendiri di PBB, ia harus ada di peta dunia, tetapi pernyataan sebaliknya akan salah:

Dua entitas dapat saling bergantung (yaitu, yang satu tidak dapat ada tanpa yang lain).

Tautan rekursif

Terkadang sebuah tabel bisa merujuk ke dirinya sendiri. Misalnya, tabel karyawan mungkin memiliki atribut "manajer" yang akan mengarahkan kita ke karyawan lain di tabel yang sama. Ini adalah hubungan rekursif.

Koneksi ekstra

Tautan dianggap mubazir jika diekspresikan lebih dari satu kali. Biasanya, salah satunya dapat dihapus tanpa kehilangan informasi penting. Misalnya, jika entitas "siswa" terhubung ke entitas "guru" tidak hanya secara langsung, tetapi juga secara tidak langsung melalui "kelas", masuk akal untuk menghapus hubungan antara entitas "siswa" dan "guru". Keputusan ini dibenarkan oleh fakta bahwa dimungkinkan untuk menugaskan siswa kepada guru hanya melalui kelas.

4.6 Integritas data referensial

Saat mengubah kunci primer dan asing, seseorang harus memperhatikan aspek seperti integritas referensial data . Ide utamanya adalah menyimpan dua tabel dalam database yang menyimpan data yang sama secara konsisten.

Integritas data mewakili hubungan yang dibangun dengan benar antara tabel dengan tautan yang benar di antara mereka. Dalam kasus apa integritas data dapat dilanggar:

  • Anomali penghapusan . Terjadi ketika sebuah baris dihapus dari tabel utama. Dalam hal ini, kunci asing dari tabel dependen terus merujuk ke baris yang dihapus dari tabel master.
  • Anomali penyisipan . Terjadi ketika sebuah baris dimasukkan ke dalam tabel dependen. Dalam hal ini, kunci asing dari tabel dependen tidak cocok dengan kunci utama baris mana pun dari tabel master.
  • Perbarui anomali. Dengan anomali seperti itu, beberapa baris dari satu tabel mungkin berisi data milik objek yang sama. Jika Anda mengubah data dalam satu baris, data tersebut dapat bertentangan dengan data dari baris lain.

Anomali penghapusan

Untuk mengatasi anomali penghapusan, kunci asing harus diatur ke salah satu dari dua kendala:

Jika baris dari tabel dependen memerlukan baris dari tabel master, maka kunci asing disetel ke penghapusan kaskade. Artinya, ketika sebuah baris dihapus dari tabel master, baris terkait dihapus dari tabel dependen.

Jika baris dari tabel dependen tidak memperbolehkan relasi ke baris dari tabel utama (yaitu, hubungan seperti itu bersifat opsional), maka kunci asing disetel ke NULL saat baris terkait dihapus dari tabel utama. Kolom kunci asing harus dapat dibatalkan.

Anomali penyisipan

Untuk mengatasi anomali penyisipan saat menambahkan ke tabel data dependen, kolom yang mewakili kunci asing harus dapat dibatalkan. Dan dengan demikian, jika objek yang ditambahkan tidak memiliki koneksi dengan tabel utama, maka kolom kunci asing akan memiliki nilai NULL.

Perbarui anomali

Untuk mengatasi masalah anomali update, diterapkan normalisasi yang telah dibahas sebelumnya.