MongoDB adalah database dokumen dan tidak memelihara hubungan antar dokumen seperti database relasional seperti PostgreSQL.

Namun, MongoDB memungkinkan Anda untuk membuat hubungan antar dokumen. Hubungan ini dapat dimodelkan melalui pendekatan yang disematkan atau direferensikan. Mari kita lihat lebih dekat.

Hubungan Tertanam vs. Hubungan Referensi

Dalam pendekatan tertanam, dokumen langsung dimasukkan ke dalam dokumen lain, menghasilkan data bersarang. Proses ini juga disebut "denormalisasi".

Pendekatan referensi, di sisi lain, menggunakan referensi dokumen untuk menunjuk dari satu dokumen ke dokumen lain. Pendekatan ini juga disebut "normalisasi".

MongoDB: Hubungan Satu-ke-Satu Dengan Dokumen Tersemat

Anda dapat membuat hubungan satu-ke-satu antara dokumen menggunakan pendekatan yang disematkan. Hubungan ini terjadi ketika satu objek dokumen hanya dapat berhubungan dengan satu dokumen lainnya.

Pertimbangkan database siswa. Basis data ini berisi koleksi siswa dan alamat dengan dokumen-dokumen berikut.

instagram viewer
// Dokumen Siswa
{
"namasiswa": "Frodo Baggins",
"nomor telepon": "987654321",
};
// Alamat Dokumen
{
"namasiswa": "Frodo Baggins",
"jalan": "Baris Bagshot",
"kota": "Hobiton",
}

Dalam database ini, seorang siswa hanya diperbolehkan memiliki satu alamat. Untuk mengambil alamat, Anda harus menanyakan koleksi alamat menggunakan nama siswa.

Terkait: Cara Membuat Database dan Koleksi di MongoDB

Dalam kasus di mana alamat digunakan bersama dengan detail lain seperti a nama siswa, Anda harus menanyakan database beberapa kali. Kelemahan dari ini adalah tingginya jumlah operasi baca dan akibatnya kinerja kueri rendah.

Menggunakan pendekatan tertanam, Anda dapat memasukkan data alamat langsung ke dalam dokumen siswa dan hanya menggunakan satu kueri untuk mendapatkan data.

{
"namasiswa": "Frodo Baggins",
"nomor telepon": "987654321",
"alamat": [{
"jalan": "Baris Bagshot",
"kota": "Hobiton"
}],
};

Untuk mengambil alamat melalui nama siswa, gunakan kueri ini.

db.student.findOne({"studentName":"Frodo Baggins"}, {"address":1})

Hubungan Satu-ke-Banyak Dengan Dokumen Tersemat di MongoDB

Pertimbangkan situasi di mana seorang siswa memiliki beberapa alamat. Hubungan antara siswa dan alamat menjadi satu-ke-banyak.

Model tersemat memungkinkan Anda menambahkan beberapa alamat ke dokumen siswa. Seperti dalam hubungan satu-ke-satu menggunakan dokumen yang disematkan, pendekatan ini memiliki kinerja kueri yang relatif tinggi.

{
"namasiswa": "Frodo Baggins",
"nomor telepon": "987654321",
"alamat": [
{
"jalan": "Baris Bagshot",
"kota": "Hobiton"
},
{
"jalan": "Lain Bagshot Baris",
"kota": "Hobiton2"
},
]
};

Kueri di bawah ini akan mengembalikan alamat nama siswa yang ditentukan.

db.student.findOne({namasiswa: “Frodo Baggins”}, {alamat: 1})

Terkait: Cara Membuat Dokumen di MongoDB

Sekarang, jika Anda memiliki lebih banyak alamat dan terus menambahkannya ke bidang alamat, dokumen dapat menjadi berantakan dengan cepat. Salah satu solusinya adalah dengan menggunakan referensi dokumen.

MongoDB: Hubungan Satu-ke-Banyak Dengan Referensi Dokumen

Anda juga dapat memodelkan hubungan satu-ke-banyak menggunakan pendekatan referensi. Dalam model data ini, data siswa dan alamat akan disimpan dalam koleksi terpisah. Untuk menghubungkan siswa ke alamat mereka, tambahkan bidang yang berisi ID alamat ke dokumen siswa.

{
"namasiswa": "Frodo Baggins",
"nomor telepon": "987654321",
"alamat": [
ObjectId("61fa7bfeebdadf8ac71427ea"),
ObjectId("61fa7d19ebdadf8ac71427eb")
]
};

Mendapatkan detail alamat siswa melibatkan pengambilan ID alamat dari dokumen siswa dan menggunakan ID tersebut untuk mengambil alamat sebenarnya dari koleksi.

const student = db.users.findOne({"name":"Frodo Baggins"},{"address":1})
const address = db.address.find({"_id":{"$in":student["address_ids"]}})

Memilih Antara Pendekatan Tertanam dan Referensi

Baik model penyematan dan referensi memiliki pro dan kontra, dan Anda harus mempertimbangkan beberapa hal sebelum membuat pilihan.. Sebagai permulaan, Anda harus mempertimbangkan kasus penggunaan. Jika data hanya akan terkait dengan satu dokumen, penyematan bisa menjadi pilihan terbaik Anda.

Untuk membuat hubungan satu-ke-banyak, Anda dapat menggunakan model referensi atau model yang disematkan. Referensi menghasilkan dokumen yang bersih dan konsisten karena Anda hanya menambahkan ID referensi dari dokumen yang ingin Anda kaitkan.

Namun, jumlah operasi baca yang diperlukan untuk mengambil data yang terhubung relatif tinggi dan dapat memengaruhi kinerja. Menyematkan dokumen dapat meningkatkan kinerja, tetapi dengan banyak dokumen bersarang, Anda mungkin berakhir dengan koleksi yang padat.

Oleh karena itu, memilih bagaimana menerapkan hubungan data dalam dokumen Anda sepenuhnya terserah Anda. Pertimbangkan bagaimana Anda akan menggunakan dokumen, tingkat kinerja kueri yang Anda tuju, dan pertukaran yang ingin Anda lakukan.

Bagaimana Pemodelan Data Berbeda Di MongoDB?

Mempertimbangkan pendekatan yang berbeda untuk database? Berikut cara kerja pemodelan data di MongoDB.

Baca Selanjutnya

MembagikanMenciakSurel
Topik-topik terkait
  • Pemrograman
  • Pemrograman
  • basis data
Tentang Penulis
Mary Gathoni (4 Artikel Diterbitkan)

Mary Gathoni adalah pengembang perangkat lunak dengan hasrat untuk membuat konten teknis yang tidak hanya informatif tetapi juga menarik. Ketika dia tidak coding atau menulis, dia senang bergaul dengan teman-teman dan berada di luar ruangan.

More From Mary Gathoni

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan