Aljabar Relasional dan Query #3: Produk Cartesian / Cross Join

Disertai dengan contoh penggunaannya

M. Ramadhan
Telematika
6 min readOct 28, 2023

--

Daftar Isi

· Pendahuluan
· Penggunaan Produk Cartesian
· Sintaksis
· Seleksi terhadap Produk Cartesian
· Proyeksi dan Seleksi terhadap Produk Cartesian
· Latihan
· Penutup
· Referensi

Pendahuluan

Produk Cartesian, juga dikenal sebagai “Cross Join” dalam bahasa SQL, adalah operasi untuk mengombinasikan setiap baris dari satu tabel dengan setiap baris dari tabel lainnya. Ini menghasilkan set data baru yang mencakup semua kemungkinan kombinasi antara kedua tabel tersebut. Produk Cartesian adalah salah satu operasi paling sederhana dalam aljabar relasional, tetapi memiliki aplikasi yang kuat dalam pemrosesan data dan kueri.

Dalam konteks aljabar relasional, kita sering kali memiliki beberapa tabel yang berhubungan satu sama lain melalui foreign key atau keterkaitan lainnya. Produk Cartesian memungkinkan kita untuk menjelajahi semua kemungkinan hubungan antara data dalam tabel-tabel ini. Dengan kata lain, jika Anda memiliki Tabel A dengan m baris dan Tabel B dengan n baris, hasil dari produk Cartesian akan menghasilkan m x n baris dalam set data yang dihasilkan.

Produk Cartesian sering digunakan dalam situasi di mana Anda ingin mengombinasikan semua entri dalam satu tabel dengan semua entri dalam tabel lainnya. Meskipun operasi ini dapat sangat bermanfaat, penggunaan yang tidak bijak dapat menghasilkan volume data yang sangat besar dan memakan waktu, oleh karena itu penting untuk memahami kapan dan bagaimana menggunakan produk Cartesian dengan bijak dalam kueri basis data Anda. Artikel ini akan membahas konsep dasar produk Cartesian, manfaatnya, dan bagaimana Anda dapat menggunakannya secara efektif dalam konteks aljabar relasional.

Penggunaan Produk Cartesian

Dalam dunia nyata, ada beberapa situasi di mana produk Cartesian dapat menjadi alat yang berguna untuk mengatasi masalah tertentu. Berikut adalah beberapa contoh di mana penggunaan produk Cartesian diperlukan.

E-commerce dan penyaringanpProduk
Di situs web e-commerce, produk Cartesian dapat digunakan untuk mencocokkan setiap produk dengan berbagai atribut seperti ukuran, warna, dan merek. Ini memungkinkan pelanggan untuk dengan mudah memfilter produk yang sesuai dengan preferensi mereka.

Analisis pasar saham
Ketika melakukan analisis pasar saham, investor mungkin ingin memeriksa semua pasangan saham dalam portofolio mereka untuk melihat bagaimana pergerakan harga satu saham mempengaruhi yang lain. Ini memungkinkan mereka untuk membuat strategi investasi yang lebih baik.

Perencanaan perjalanan dan rute
Dalam sistem perencanaan perjalanan atau navigasi, produk Cartesian dapat digunakan untuk menghasilkan semua kemungkinan rute antara dua titik di peta. Ini membantu dalam perencanaan perjalanan dan menemukan rute alternatif.

Permainan strategi
Dalam permainan komputer atau permainan papan strategi, pemain mungkin perlu mempertimbangkan semua kemungkinan gerakan atau tindakan yang dapat mereka lakukan dalam suatu giliran. Ini membantu pemain mengembangkan strategi yang optimal.

Analisis risiko dan keputusan keuangan
Dalam analisis risiko dan pengambilan keputusan keuangan, produk Cartesian dapat digunakan untuk mempertimbangkan semua kemungkinan kombinasi variabel dan melihat dampaknya pada hasil finansial.

Penjadwalan acara atau pertemuan
Ketika merencanakan acara atau pertemuan yang melibatkan beberapa peserta dan beberapa jadwal yang berbeda, produk Cartesian dapat digunakan untuk menghasilkan semua kemungkinan jadwal pertemuan yang mungkin.

Penelitian ilmiah
Dalam penelitian ilmiah, seperti bidang kimia atau biologi, produk Cartesian dapat digunakan untuk menguji efek dari berbagai kombinasi variabel atau parameter pada hasil eksperimen.

Analisis data sensor
Dalam lingkungan Internet of Things (IoT), produk Cartesian dapat digunakan untuk menganalisis data dari berbagai sensor dan mengidentifikasi korelasi atau hubungan antara data tersebut.

Penting untuk diingat bahwa produk Cartesian dapat menghasilkan jumlah data yang besar, dan penggunaan yang tidak bijak dapat memperlambat sistem atau mengakibatkan overhead yang tidak perlu. Oleh karena itu, penting untuk hanya menggunakan produk Cartesian ketika benar-benar diperlukan dan mempertimbangkan alternatif yang lebih efisien jika mungkin.

Sintaksis

Ekspresi Aljabar Relasional

Produk Cartesian menggunakan simbol ⨉.
RS menghasilkan relasi yang isinya merupakan kombinasi setiap tuple relasi R dengan setiap tuple relasi S.

Query

Pernyataan SQL:

SELECT *
FROM R, S

-- Alternatif lain
SELECT *
FROM R CROSS JOIN S

Contoh

Seorang pemilik hotel akan menomori kamar hotelnya dengan kombinasi antara nomor lantai dengan nomor kamar. Ada empat lantai dengan enam kamar per lantai.

SELECT *
FROM Floor

No
----
1
2
3
4

(4 rows affected)

SELECT *
FROM Number

No
----
1
2
3
4
5
6

(6 rows affected)

Ia dapat menggunakan produk Cartesian, FloorNumber, dengan query:

SELECT Floor.No + Number.No AS No
FROM Floor, Number

-- Alternatif lain
SELECT Floor.No + Number.No AS No
FROM Floor CROSS JOIN Number

No
----
11
12
13
14
15
16
21
22
23
24
25
26
31
32
33
34
35
36
41
42
43
44
45
46

(24 rows affected)

Seleksi terhadap Produk Cartesian

Secara umum, penggunaan produk Cartesian tanpa seleksi dalam query di dunia nyata jarang ditemukan. Operasi produk Cartesian tanpa seleksi akan menghasilkan semua kemungkinan kombinasi antara dua atau lebih set data, yang seringkali menghasilkan jumlah tuple yang sangat besar. Sebagian besar query di dunia nyata biasanya akan memasukkan seleksi untuk mengurangi hasil produk Cartesian menjadi set data yang lebih terkendali dan relevan.

Misalkan sebuah basis data memiliki dua relasi berikut.

Tabel 1 Tabel Mahasiwa dan Dosen

Dengan mudah dapat dilihat bahwa:

  • Kedua relasi terhubung melalui foreign key NrpPA dengan primary key NRP
  • Mahasiswa bernama Mawar dibimbing oleh dosen bernama Rizka
  • Dosen bernama Rizka membimbing dua orang mahasiswa
  • Dosen bernama Budi bukan pembimbing akademik.

Sebetulnya kita tidak tahu persis data yang tersimpan dalam basis data. Kenyataannya data yang ada boleh jadi ribuan sehingga perlu bantuan SQL.

Produk Cartesian kedua relasi, Mahasiswa Dosen, dengan query:

SELECT *
FROM Mahasiswa, Dosen

-- Alternatif lain
SELECT *
FROM Mahasiswa CROSS JOIN Dosen

Menghasilkan relasi:

Tabel 2 Hasil Mahasiswa Dosen

Data yang relevan hanya tuple ke-6 dan ke-8 yaitu dengan kriteria NrpPA = NRP. Data lainnya sampah, tidak diperlukan. Dengan demikian, ekspresi aljabar relasionalnya:

Query-nya:

SELECT *
FROM Mahasiswa, Dosen
WHERE NrpPA=NRP

-- Alternatif lain
SELECT *
FROM Mahasiswa CROSS JOIN Dosen
WHERE NrpPA=NRP

Hasilnya:

Tabel 3 Hasil seleksi terhadap Mahasiswa Dosen

Relasi memberikan informasi daftar mahasiswa dan dosen pembimbing akademiknya

Proyeksi dan Seleksi terhadap Produk Cartesian

Bagaimana kalau yang diminta hanya daftar dosen pembimbing akademik? Anda dapat melakukan proyeksi dan seleksi terhadap produk Cartesian.

Ekspresi aljabar relasional:

Query:

SELECT Dosen.*
FROM Mahasiswa, Dosen
WHERE NrpPA=NRP

-- Alternatif lain
SELECT Dosen.*
FROM Mahasiswa CROSS JOIN Dosen
WHERE NrpPA=NRP

Hasilnya:

Tabel 4 Hasil proyeksi dan seleksi terhadap Mahasiswa Dosen

Data Rizka muncul dua kali karena ia membimbing dua orang mahasiswa. Untuk meniadakan data ganda, tambahkan klausa DISTINCT:

SELECT DISTINCT Dosen.*
FROM Mahasiswa, Dosen
WHERE NrpPA=NRP

-- Alternatif lain
SELECT DISTINCT Dosen.*
FROM Mahasiswa CROSS JOIN Dosen
WHERE NrpPA=NRP

Hasilnya:

Tabel 5 Hasil proyeksi dan seleksi terhadap Mahasiswa Dosen
menggunakan klausa DISTINCT

Latihan

Berdasarkan data Mahasiwa dan Dosen pada Tabel 1, dengan menggunkan produk Cartesian, tuliskan ekspresi aljabar relasional dan query-nya untuk memperoleh:

  1. Daftar mahasiswa dan nama dosen PA-nya
  2. Nama dosen yang membimbing mahasiswa bernama ‘Rizki’
  3. Daftar mahasiswa yang dibimbing oleh dosen bernama ‘Budi’.
  4. Jumlah mahasiswa yang dibimbing oleh dosen benama ‘Rizka’

Penutup

Penggunaan produk Cartesian tanpa seleksi dalam query di dunia nyata jarang ditemukan. Dalam dunia nyata, ada beberapa situasi di mana produk Cartesian dapat menjadi alat yang berguna untuk mengatasi masalah tertentu.

Referensi

--

--

M. Ramadhan
Telematika

I’m a database designer and developer, childhood in Menggala, living in Palembang.