[sist.basis.data|akuntansi|lab.software|pert.3]
Dalam relasi suatu basis data dikenal beragam kardinalitas, antara lain: one-to-one, one-to-many dan many-to-many. Kardinalitas (cardinality) merupakan derajat jumlah suatu hubungan entitas. Entitas sendiri merupakan suatu abstraksi independen dari hal-hal yang terlibat dalam suatu sistem, misalnya dosen, mahasiswa, karyawan, dan lain-lain. Misalnya antara dosen dengan kelas, hubungannya biasanya one-to-many yaitu satu dosen mengajar satu atau lebih kelas dan satu kelas diampu oleh satu dosen (walaupun bisa saja lebih dari satu dosen). Jika dimodelkan konsepnya (conceptual model) akan berbentuk seperti ini (digambar online dengan ini: https://cloud.smartdraw.com/):
Untuk hubungan one-to-many, semua sistem basis data bisa membuat model logikanya beserta implementasi fisiknya. Caranya adalah dengan menambahkan satu Foreign Key di tabel kelas, yaitu nip dosen yang merupakan primary key pada tabel dosen nantinya. Sebaliknya untuk hubungan many-to-many, sistem basis data yang ada saat ini tidak bisa langsung memodelkan model konsep, misalnya atribut kelas dengan mahasiswa yang mengambil kelas tersebut. Di sini many-to-many karena satu kelas lebih dari satu siswa dan satu siswa mengambil lebih dari satu kelas.
Beberapa teknik mengharuskan konversi dari ERD ke Logical Record Structure (LRS). Beberapa alat bantu perancangan basis data, seperti Datanamic Dezign ketika ada hubungan Many-to-Many akan menghasilkan satu tabel baru di tengah-tengahnya (defaultnya bernama mahasiswa-kelas, dalam contoh ini, misalnya kita beri nama tabel perkuliahan. Tabel baru tersebut mengambil kode kelas dan nomor pokok mahasiswa sebagai kunci tamu (Foreign Key).
Biasanya tabel baru tersebut berjenis tabel transaksi, misalnya mahasiswa yang mendaftarkan dalam KRS-nya kuliah apa yang akan diambil. Biasanya kunci utamanya (Primary Key) adalah gabungan npm dan kode_kelas, tapi bisa saja menggunakan kode baru, misalnya generated numbers. Nyambung dengan ERD di atasnya, dalam tabel kelas ada kunci tamu kode dosen (NIP). Jadi kelas yang diambil oleh seorang siswa dapat diketahui dosen yang mengajarnya. Jika ingin melihat list peserta kuliah suatu kode kelas, dapat menggunakan perintah select untuk kode kelas tertentu di tabel perkuliahan tersebut. Tinggal praktekan pembuatan tabel-tabelnya.
Terimakasihh!! ini sangat membantu!!
pak , ma tanya , itukan many to many , kata dosen saya harus pakai tabel bantu , nah untuk querynya dari kass di atas bagaimana ya? pakai inner join kah?
Silahkan baca buku fundamentals of Database Systemnya Elmasri. Teorinya seperti itu, ketika mau ditabelkan barulah masuk ke bab9: ER to Relational Mapping. ER itu masuk Conceptual Schema. Tapi kebanyakan sih programmer langsung menambahkan tabel bantu bahkan di ER nya. Kalau belajar Database Object yg boleh multivalue, misal DB4O tabel bantunya ga perlu: https://rahmadya.com/2019/05/10/membuat-kelas-transaksi-dengan-basis-data-objek/. Tapi kalau dosennya bilang harus ada tabel bantu ya ikutin aja.
izin bertanya pak, apakah ketika derajat relasinya many to many kemudian tidak dibuat tabel baru akan ada masalah kedepannya?
kalau ERD mau diterapkan ke tabel (LRS) ya harus ada tabel baru (biasanya detil transaksi). tapi secara teori ERD yang logical beda dengan pentabelan yg fisik, apalagi kalau diterapkan ke basis data objek yang mengijinkan multi-value. kalau aturan di kampus ERD harus sama dengan fisik dan relasional ya mau tidak mau harus ditambahkan entiti transaksi di ERD.