Lewati ke konten utama
  1. Belajar/
  2. Komputer Programming/
  3. Sistem Basis Data/

Bahasa Query Formal

Azriel Fidzlie, S.Kom
Penulis
Azriel Fidzlie, S.Kom
Selalu Belajar Hal Baru
Daftar isi
Database System Chapters - Artikel ini merupakan bagian dari sebuah seri.
Bagian 6: Artikel ini

Dalam bahasa Query Formal, ada dua dasar pembentukan bahasa Query, yaitu:

  1. Aljabar Relasional
  2. Kalkulus Relasional

Dalam pembahasan ini hanya akan membahas tentang Aljabar Relasional karna lebih banyak dijadikan dasar Bahasa Query yang umum digunakan.

Aljabar Relasional
#

Adalah kumpulan operasi terhadap relasi, dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru.

Bahasa Query yang didasarkan pada operasi-operasi dalam Aljabar Relasional merupakan bahasa query yang Prosedural.

Operator Yang Digunakan
#

A. Operator Himpunan
#

  1. Union atau gabungan \((\cup)\)
    Union dari relasi A dan B dinyatakan sebagai \(A \cup B\)

    himpunan
  2. Intersection atau irisan \(( \cap )\)
    Intersection dari relasi A dan B dinyatakan sebagai \(A \cap B\)

    alt text
  3. Difference
    Difference dari relasi A dan B dinyatakan dengan A - B

    alt text
  4. Cartesian product
    Product cartesian dari relasi A dan B dinyatakan dengan A X B

    contoh :
    A = { 1,2,3}
    B = { 5,7 }
    A X B = { ( 1,5), (1,7), ( 2,5), (2,7), (3,5),(3,7) }

B. Operator Relational
#

  1. Restrict \( \sigma \) adalah Pemilihan tupel atau record
  2. Project \( \pi \) adalah pemilihan attribute atau field
  3. Divide \( \div \) adalah membagi
  4. Join \( \theta \) adalah menggabungkan
Aljabar Relational
#

Operator pada aljabar relationaldibagi menjadi 2 kelompok :

  1. Operator dasar untuk fundamental operational
  2. Operator tambahan untuk additional operasional

Tabel dibawah ini adalah contoh untuk mengerjakan perintah – perintah Relation Algebra:

RELASI : MATA KULIAH

KD_MKNAMA_MKSKSNIP
207LOGIKA & ALGO4199910486
310STRUKTUR DATA3200109655
360SISTEM BASIS DATA3200209817
545IMK2200209818
547APSI4200109601
305PEMR. PASCAL4200703073
544DISAIN GRAFIS2200010490

RELASI : MAHASISWA

NIMNAMA_MHSALAMATJ_KEL
1105090222HAFIDZDEPOKLAKI-LAKI
1105091002RAFFADEPOKLAKI-LAKI
1105095000NAIADEPOKPEREMPUAN
1104030885ARIFP.LABULAKI-LAKI
1206090501LENIKMP. MELAYUPEREMPUAN
1206090582WAHYUNITANGERANGPEREMPUAN
1205097589ARISDEPOKLAKI-LAKI
1106094586YANICILEDUGPEREMPUAN
110709BAMBANGSALEMBALAKI-LAKI

RELASI : REGISTRASI

KD_MKNIM
3601105090222
5451206090501
5471105095000

RELASI : DOSEN

NIPNAMA_DOSGAJI
199910486BILLY3500000
200109655MARDIANA4000000
200209817INDRIYANI4500000
200209818SURYANI4250000
200109601DWINITA3500000
200703073MALAU2750000
200010490IRFIANI3500000

Operator Dasar
#

Terdiri dari 2 yaitu :

  1. Operasi Union ->Operasi yang memakai 1 relasi

a. Selection \((\sigma)\) : untuk memilih baris (row) dari suatu relasi

  • \(\sigma\) predicate (R) operasi seleksi bekerja pada 1 relasi R dan mendefinisikan relasi yang berisi hanya tuple R yang memenuhi kondisi (predicate).
  • Untuk predicate yang lebih rumit dapat dibuat menggunakan operator logikal ^(and), v(or) dan ~(not)

Contoh :

  • Mencari tuple-tuple dari MAHASISWA yang memiliki jenis kelamin laki-laki, Ekspresi aljabar relational : \(\sigma\) J_KEL=“LAKI-LAKI” (MAHASISWA)
  • Tampilkan data mata kuliah yang memiliki kode 360 atau yang memilki sks 4 \(\sigma\) KD_MK=“360” V SKS=4 (MATAKULIAH)

\(\sigma\)J_KEL=“LAKI-LAKI” (MAHASISWA)

NIMNAMA_MHSALAMATJ_KEL
1105090222HAFIDZDEPOKLAKI-LAKI
1105091002RAFFADEPOKLAKI-LAKI
1104030885ARIFP.LABULAKI-LAKI
1205097589ARISDEPOKLAKI-LAKI
110709BAMBANGSALEMBALAKI-LAKI

\(\sigma\)KD_MK=“360” V SKS=4 (MATAKULIAH)

KD_MKNAMA_MKSKSNIP
207LOGIKA & ALGO4199910486
360SISTEM BASIS DATA3200209817
547APSI4200109601
305PEMR. PASCAL4200703073

b. Projection \((\pi)\) digunakan untuk merincikan kolom

  • \(\pi\) a1…an (R) operasi projeksi bekerja pada 1 relasi R dan mendefinisikan relasi yang berisi subset R secara vertikal menampilkan nilai untuk atribut tertentu dan menghilangkan nilai atribut ganda.

Contoh : Tampilkan nama beserta gaji dari dosen
\(\pi\) nama_dos,gaji (DOSEN)

NAMA_DOSGAJI
BILLY3500000
MARDIANA4000000
INDRIYANI4500000
SURYANI4250000
DWINITA3500000
MALAU2750000
IRFIANI3500000
  1. Operasi Binary -> Operasi yang memakai 2 atau sepasang relasi
    1. Cartesian product ( X ): Operator dengan dua relasi untuk menghasilkan tabel hasil perkalian kartesian. Dalam cartesia product terdapat kerangkapan nilai pada beberapa tuple/record sehingga diperbaiki dengan join condition : yaitu dengan memberi syarat/ kondisi khusus.

Contoh : Tampilkan nip,nama_dos (dari relasi Dosen), nama_mk (dari relasi Matakuliah), thn_akademik,smt,hari,jam_ke,waktu,kelas (dari relasi Mengajar) dimana semester mengajar adalah pada semester ‘1’.

\(\pi\) nip, nama_dos, nama_mk( \(\sigma\) dosen.nip = matakuliah.nip \(\wedge\) matakuliah.sks=3 \((\text{Dosen} \times \text{Matakuliah}\)) )

Dosen x Matakuliah

NIPNAMA_DOSNAMA_MK
199910486BILLYLOGIKA & ALGO
199910487BILLYSTRUKTUR DATA
199910488BILLYSISTEM BASIS DATA
199910489BILLYIMK
199910490BILLYAPSI
199910491BILLYPEMR. PASCAL
199910492BILLYDISAIN GRAFIS
200109655MARDIANALOGIKA & ALGO
200109656MARDIANASTRUKTUR DATA
200109657MARDIANASISTEM BASIS DATA
200109658MARDIANAIMK
200109659MARDIANAAPSI
200109660MARDIANAPEMR. PASCAL
200109661MARDIANADISAIN GRAFIS
200209817INDRIYANILOGIKA & ALGO
200209818INDRIYANISTRUKTUR DATA
200209819INDRIYANISISTEM BASIS DATA
200209820INDRIYANIIMK
200209821INDRIYANIAPSI
200209822INDRIYANIPEMR. PASCAL
200209823INDRIYANIDISAIN GRAFIS
200209818SURYANILOGIKA & ALGO
200209819SURYANISTRUKTUR DATA
200209820SURYANISISTEM BASIS DATA
200209821SURYANIIMK
200209822SURYANIAPSI
200209823SURYANIPEMR. PASCAL
200209824SURYANIDISAIN GRAFIS
200109601DWINITALOGIKA & ALGO
200109602DWINITASTRUKTUR DATA
200109603DWINITASISTEM BASIS DATA
200109604DWINITAIMK
200109605DWINITAAPSI
200109606DWINITAPEMR. PASCAL
200109607DWINITADISAIN GRAFIS
200703073MALAULOGIKA & ALGO
200703074MALAUSTRUKTUR DATA
200703075MALAUSISTEM BASIS DATA
200703076MALAUIMK
200703077MALAUAPSI
200703078MALAUPEMR. PASCAL
200703079MALAUDISAIN GRAFIS
200010490IRFIANILOGIKA & ALGO
200010491IRFIANISTRUKTUR DATA
200010492IRFIANISISTEM BASIS DATA
200010493IRFIANIIMK
200010494IRFIANIAPSI
200010495IRFIANIPEMR. PASCAL
200010496IRFIANIDISAIN GRAFIS

Dosen x Matakuliah (dosen.nip = matakuliah.nip \(\wedge\) sks=3)

NIPNAMA_DOSNAMA_MK
200109656MARDIANASTRUKTUR DATA
200209819INDRIYANISISTEM BASIS DATA
  1. Union \( (\cup) \)
    Operasi untuk menghasilkan gabungan tabel dengan syarat kedua tabel memiliki atribut yang sama yaitu domain atribut ke-i masing-masing tabel harus sama. Hilangkan nilai atribut yang sama.

    RUS={ X I X E R atau X E S}

Contoh : \(\pi \text{ nim(mhs1)} \cup \pi \text{ nim(mhs2)}\)

MHS1

NIMNAMA_MHSALAMATJ_KEL
1105090222HAFIDZDEPOKLAKI-LAKI
1105091002RAFFADEPOKLAKI-LAKI
1104030885ARIFP.LABULAKI-LAKI
1205097589ARISDEPOKLAKI-LAKI
110709BAMBANGSALEMBALAKI-LAKI

MHS2

NIMNAMA_MHSALAMATJ_KEL
1105095000NAIADEPOKPEREMPUAN
1206090501LENIKMP. MELAYUPEREMPUAN
1206090582WAHYUNITANGERANGPEREMPUAN
1106094586YANICILEDUGPEREMPUAN
NIM
1105090222
1105091002
1104030885
1205097589
110709
1105095000
1206090501
1206090582
1106094586

Hasil : \(\pi \text{ nim(mhs1)} \cup \pi \text{ nim(mhs2)}\)

  1. Set diference ( - )
    Operasi untuk mendapatkan tabel disuatu relasi tapi tidak ada direlasi lainnya.

R – S = { X I X E R dan X E S }

Contoh : Tampilkan nama dari mahasiswa yang tinggal di depok tetapi bukan berjenis kelamin perempuan

Query I : tampilkan nama yang tinggal di depok
\(\pi\) nama_mhs(\(\sigma\) alamat=“DEPOK” (MAHASISWA))

Query II : tampilkan nama yang berjenis kelamin perempuan
\(\pi\) nama(\(\sigma\) j_kel =“PEREMPUAN”)

Tampilkan query I minus query II :
\(\pi\) nama_mhs(\(\sigma\) alamat=“DEPOK”(MAHASISWA)) - \(\pi\) nama(\(\sigma\) j_kel=“PEREMPUAN”)

Query I ( R ) : \(\pi\) nama_mhs(\(\sigma\) alamat=“DEPOK” (MAHASISWA))

NAMA_MHS
HAFIDZ
RAFFA
NAIA
ARIS

Query II (S): \(\pi\) nama(\(\sigma\) j_kel =“PEREMPUAN”)

NAMA_MHS
NAIA
LENI
WAHYUNI
YANI

\(\pi\) nama_mhs(\(\sigma\) alamat=“DEPOK”(MAHASISWA)) - \(\pi\) nama(\(\sigma\) j_kel=“PEREMPUAN”)

NAMA_MHS
HAFIDZ
RAFFA
ARIS
  1. SET INTERSECTION \( (\cap) \)
    Operasi untuk menghasilkan irisan dua tabel dengan syarat kedua tabel memiliki atribut yang sama, domain atribut ke-i kedua tabel tersebut sama.

Contoh: \(\pi\) nama_mhs(\(\sigma\) alamat=“DEPOK”(MAHASISWA)) \( \cap \) \(\pi\) nama(\(\sigma\) j_kel=“PEREMPUAN”)

NAMA_MHS
NAIA

Operator Tambahan
Kondisi kerangkapan nilai pada cartesian product diperbaiki oleh join condition, terdiri dari :

  1. THETA JOIN
    Operasi yang menggabungkan operasi cartesian product dengan operasi selection dengan suatu kriteria. Notasi Theta Join R►◄FS. Predikat F dapat berupa operator pembanding <,≤,>,≥,≠,=

mahasiswa.►◄mahasiswa.nim=registrasi.nim registrasi

NIMNAMA_MHSALAMATJ_KELKD_MKNIM
1105090222HAFIDZDEPOKLAKI-LAKI3601105090222
1105095000NAIADEPOKPEREMPUAN5471105095000
1206090501LENIKMP. MELAYUPEREMPUAN5451206090501
  1. NATURAL JOIN
    Operasi menggabungkan operasi selection dan cartesian product dengan suatu kriteria pada kolom yang sama, dimana setiap atribut muncul 1 x. Notasi Natural Join R►◄S.
NIMNAMA_MHSALAMATJ_KELKD_MK
1105090222HAFIDZDEPOKLAKI-LAKI360
1105095000NAIADEPOKPEREMPUAN547
1206090501LENIKMP. MELAYUPEREMPUAN545
  1. DIVISION
    Merupakan operasi pembagian atas tuple-tuple dari 2 relation. Notasi R:S

A

NIMKD_MK
1105090222360
1105090222545
1105090222547
1105091002360
1105091002545
1105091002547
1105095000360
1105095000545

B

KD_MK
360

A/B

NIM
1105090222
1105091002
1105095000
1104030885
Database System Chapters - Artikel ini merupakan bagian dari sebuah seri.
Bagian 6: Artikel ini

Terkait


 Normalisasi

comments powered by Disqus