36

02. Aljabar & Kalkulus Relasional

Embed Size (px)

DESCRIPTION

sistem manajemen basis data

Citation preview

  • Bahasa query formal basis data relasional adalah bahasa untuk meminta informasi dari basis data. Sebelum basis data relasional, query terhadap basis data merupakan tugas yang sangat sulit. Pemogram harus berurusan dengan skema fisik internal dari basis data. Di SQL, kita menspesifikasikan properti properti informasi yang hendak diambil tapi tidak mencantumkan rincian algoritma pengambilan. SQL adalah deklaratif, yaitu pada query dideklarasikan informasi yang merupakan jawaban yang dikehendaki bukan cara komputasi

  • Bahasa query relasional formal merupakan bahasa antara yang digunakan basis data, yaitu SQL dikonversi menjadi bahasa relasional formal sehingga dapat diterapkan sekumpulan informasi untuk memperoleh query paling efisien. SQL adalah deklaratif, yaitu pada query dideklarasikan informasi yang merupakan jawaban yang dikehendaki bukan cara komputasiTerdapat dua jenis bahasa query relasional formal yang utama, yaitu: 1. Aljabar relasional. 2. Kalkulus relasional.

  • Merupakan kumpulan operasi terhadap relasi dimana setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru dan termasuk kategori prosedural dan juga menyediakan seperangkat operator untuk memanipulasi data.Terdapat 6 (enam) operasi dasar dalam aljabar relasional, yaitu: 1. Selection ( ) 2. Projection ( ) 3. Cartesian product ( X, juga disebut sebagai cross product ) 4. Union ( ) 5. Set difference ( - ) 6. Rename ( )

  • Operasi operasi turunan dari operasi operasi dasar tersebut adalah: 1. Set intersection ( ) 2. Theta join ( ) 3. Natural-join ( ) 4. Outer-join ( ) 5. Division ( ) Semua operasi tersebut menghasilkan relasi baru. Bahasa disebut aljabar relasional karena bahasa berdasar sejumlah operator yang beroperasi pada relasi relasi (tabel tabel)

  • Masing - masing operator beroperasi pada satu relasi atau lebih atau menghasilkan relasi relasi lain sebagai hasilQuery adalah sekedar ekspresi yang melibatkan operator operator itu. Hasil ekspresi adalah relasi yaitu jawaban terhadap querySQL adalah bahasa yang deklaratif yang berarti tidak menspesifikasikan algoritma yang digunakan untuk pengolahan query. Ekspresi relasional dapat dipandang sebagai spesifikasi algoritma (meskipun dalam level lebih tinggi dibanding algoritma untuk bahasa pemrograman konvensional).

  • Pemrogram menggunakan query SQL, DBMS menggunakan aljabar relasional sebagai bahasa antara dalam spesifikasi algoritma queryAljabar relasional merupakan kunci pemahaman kerja internal DBMS relasional, pemahaman aljabar relasional merupakan hal yang esensi dlam merancang query SQL yang diolah secara efisien. Aljabar relasional banyak digunakan pada optimasi query dan pengolahan query tersebar. Aljabar relasional mendefinisikan sekumpulan operator dan rumus untuk memanipulasi himpunan data

  • Untuk mengimplementasikan kedalam operasi aljabar relasional, berikut ini diberikan relasi relasi dari database Penjadwalan_mengajar_dosen Dosen = {nid,nama_d,tempat_lhr,tgl_lahir,jkelamin,alamat,kota,kodepos,gpokok} Matakuliah = {kdmk,nama_mk,sks,semester}Jurusan = {kode_jur,nama_jur,sjenjang,nama_kajur} Mengajar = {nid, thn_akademik, smt, hari, jam_ke, kdmk,waktu,kelas,kode_jur}

  • Operasi Selection ( )Selection / Select (), adalah operasi untuk menyeleksi tupel tupel yang memenuhi suatu predikat, kita dapat menggunakan operator perbandingan (,>=,
  • Operasi Selection ( )Contoh 2 :Tampilkan daftar dosen yang tempat lahirnya di Jakarta atau Bogor tempat_lhr=Jakarta tempat_lhr=Bogor

    Contoh 3 :Tampilkan daftar dosen yang tempat lahirnya di Bogor dan jenis kelaminnya Pria tempat_lhr=Bogor jkelamin=Pria

  • Operasi Projection ()Projection / Project ( ), adalah operasi untuk memperoleh kolom kolom tertentu. Operasi project adalah operasi unary yang mengirim relasi argumen dengan kolom kolom tertentu. Karena relasi adalah himpunan, maka baris baris duplikasi dihilangkanContoh 1 :Tampilkan nid,nama_d,alamat,kota dari relasi Dosen nid, nama_d, alamat, kota

  • Operasi Projection ()Contoh 2 :Tampilkan nid,nama_d,alamat,kota,gajipokok dari relasi Dosen, dimana gaji pokoknya lebih besar dari Rp.1.200.000 nid, nama_d, alamat, kota, gajipokok (gajipokok>1200000)

    Contoh 3 :Tampilkan nid,nama_d,alamat,kota,gajipokok dari relasi Dosen, dimana kota alamatnya Cibitung dan gaji pokoknya lebih besar dari Rp.1.000.000 nid, nama_d, alamat, kota, gajipokok (kota=Cibitung gajipokok>100000)

  • Operasi Cartesian product ( X )Cartesian-product ( X ), adalah operasi untuk menghasilkan table hasil perkalian kartesianOperasi cartesian-product memungkinkan kita mengkombinasikan informasi beberapa relasi, operasi ini adalah operasi binerSebagaimana telah dinyatakan bahwa relasi adalah subset hasil cartesian-product dan himpunan domain relasi relasi tersebut. Kita harus memilih atribut atribut untuk relasi yang dihasilkan dari cartesian-product

  • Operasi Cartesian product ( X )Contoh 1 :Tampilkan nid,nama_d (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 nid,nama_d,nama_mk, thn_akademik,smt,hari,jam_ke,waktu,kelas (smt=1 Dosen.nid=Mengajar.nid Mengjar.kdmk = Matakuliah.kdmkatau(Mengajar.nid=Dosen.nid Mengajar.kdmk=Matakuliah.kdmk) smt=1 ((( nid,nama_d ) X ( nama_mk (Matakuliah)) X (thn_akademik,smt,hari,jam_ke,waktu,kelas (Mengajar)))))

  • Operasi Cartesian product ( X )Contoh 1 :Tampilkan nid,nama_d (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 nid,nama_d,nama_mk, thn_akademik,smt,hari,jam_ke,waktu,kelas (smt=1 Dosen.nid=Mengajar.nid Mengjar.kdmk = Matakuliah.kdmkatau(Mengajar.nid=Dosen.nid Mengajar.kdmk=Matakuliah.kdmk) smt=1 ((( nid,nama_d ) X ( nama_mk (Matakuliah)) X (thn_akademik,smt,hari,jam_ke,waktu,kelas (Mengajar)))))

  • Operasi Cartesian product ( X )Contoh 2 :Tampilkan nama_d (dari relasi Dosen), nama_mk,sks (dari relasi Matakuliah), hari,jam_ke,waktu (dari relasi Mengajar) dimana sks matakuliah >3 atau hari mengajar = Jumat nama_d,nama_mk,sks,hari,jam_ke,waktu ( sks>3 hari=Jumat Mengajar.nid=Dosen.nid Mengajar.kdmk=Matakuliah.kdmk)atau (Mengajar.nid=Dosen.nid Mengajar.kdmk=Matakuliah.kdmk) (sks>3 hari=Jumat ((( nama_d ) X (nama_mk,sks ) X (hari,jam_ke,waktu ))))

  • Operasi Cartesian product ( X )Contoh 3 :Tampilkan kdmk,nama_mk,sks (dari relasi Matakuliah), smt,hari,jam_ke,waktu (dari relasi Mengajar) dimana semester (smt) yang diajar dosen pada semester 1 dan jam_ke 1 kdmk,nama_mk,sks,smt,hari,jam_ke,waktu ( smt=1 jam_ke=1 Mengajar.kdmk=Matakuliah.kdmk)atau Mengajar.kdmk=Matakuliah.kdmk smt=1 jam_ke=1 (( kdmk,nama_mk,sks ) X ( hari,jam_ke,waktu ))

  • Operasi Union ( )Union ( ), adalah operasi untuk menghasilkan gabungan table degan syarat kedua table memiliki atribut yang sama, yaitu domain atribut ke-i masing masing table harus samaOperasi ini dapat dilaksanakan apabila T1 dan T2 mempunyai atribut yang sama sehingga jumlah komponennya samaContoh 1 : Tampilkan nid (dari relasi Dosen) Union dari nid (dari relasi Mengajar) nid nid

  • Operasi Set-difference ( - )Set-difference ( -- ), adalah operasi untuk mendapatkan table pada suatu relasi, tapi tidak ada pada relasi yang lainnyaOperasi ini dapat dilaksanakan apabila T1 dan T2 mempunyai atribut yang tidak sama yang akan ditampilkan, artinya adalah atribut T1 yang tidak ada di T2 akan ditampilkan, sedangkan atribut yang sama tidak ditampilkanContoh 1 : Tampilkan nid (dari relasi Dosen) Set-difference dari nid (dari relasi Mengajar) nid -- nid

  • Operasi Rename ( )Rename ( ), adalah operasi untuk menyalin table lama kedalam table yang baruContoh 1 :Salinlah table baru dengan nama DosenNew dari table Dosen, dimana jenis kelaminnya adalah Pria DosenNew (jkelamin=Pria)

    Untuk operasi rename ini hasil dari perintah tersebut adalah membentuk table baru dengan nama DosenNew beserta datanya dimana jenis kelaminnya adalah Pria

  • Operasi Set-intersection ( )Set-intersection / Intersection ( ) termasuk kedalam operator tambahan, karena operator ini dapat diderivikasi dari operator dasarOperasi ini merupakan operasi binary, yang digunakan untuk membentuk sebuah relasi baru dengan tuple yang berasal dari kedua relasi yang dihubungkanContoh 1 :Tampilkan nid (dari relasi Dosen) Set-intersection dari nid (dari relasi Mengajar) nid nid

  • Operasi Theta-join ( )Theta-join ( ) adalah operasi untuk menggabungkan operasi selection dan cartesian-product dengan suatu kriteriaContoh 1 :Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi Mengajar Matakuliah Mengajar.kdmk=Matakuliah.kdmk Mengajar

  • Operasi Natural-join ( ) Natural-join () sama seperti operasi equi-join adalah operasi untuk menggabungkan operasi selection dan cartesian-product dengan suatu kriteria pada kolom yang samaContoh 1 : Tampilkan seluruh data yang ada pada relasi Matakuliah dan relasi Mengajar Matakuliah Mengajar.kdmk=Matakuliah.kdmk Mengajar

  • Operasi Outer-join ( )Outer-join adalah operasi untuk menggabungkan operasi selection dan cartesian-product dengan suatu kriteria pada kolom yang sama.Contoh 1 :Tampilkan nid_nama_d (dari relasi Dosen) dan thn_akademik,smt,hari, jam_ke,waktu (dari relasi Mengajar) dengan outer join, artinya adalah pada kolom nid,nama_d pada relasi Dosen akan ditampilkan walaupun dosen tersebut tidak melakukan transaksi mengajar nid,nama_d thn_akademik,smt,hari,jam_ke,waktu

  • Operasi Devision ( )Devision ( ) adalah operasi yang banyak digunakan dalam query yang mencakup frase setiap atau untuk semua, operasi ini juga merupakan pembagian atas tuple tuple dari dua relasiContoh 1 :Tampilkan nid,hari, waktu (dari relasi Mengajar) dan nid (dari relasi Dosen) dimana dosen yang jenis kelaminnya Pria dan lakukan devision pada kedua relasi tersebut nid,hari,waktu ( nid (jkelamin=Pria))

  • Merupakan alternatif untuk aljabar relasional.Memungkinkan kita menggambarkan himpunan jawaban tanpa menyatakan secara eksplisit bagaimana jawaban tersebut dihitung.Memiliki pengaruh yang besar pada desain bahasa query komersial seperti SQL.Varian kalkulus yang disajikan secara detil disebut Tuple Relational Calculus (TRC) dimana pada TRC mengambil instan (tuple) sebagai nilainya.

  • Variabel Tuple merupakan variabel yang nilainya diambil dari tuple skema relasi tertentu, sehingga nilai yang ditentukan untuk satu variabel tuple tertentu, punya jumlah dan tipe field yang sama.Bentuk tuple dari query kalkulus relasional :{ T | p ( T ) }dimana T adalah sebuah variabel tuple dan p(T) adalah sebuah formula yang menggambarkan T.Hasil dari query adalah himpunan dari semua tuple t dimana formula p(T) mengevaluasi true dengan T = t.Penulisan formula p(T) adalah inti dari TRC dan pada dasarnya merupakan satu subset sederhana dari First Order Logic.

  • Syntax TRC :Rel adalah nama relasi.R dan S adalah variabel tuple.a adalah atribut dari R.b adalah atribut dari S.op adalah operator pada himpunan { , =, , , }Atomic formula adalah salah satu dari formula berikut :- R Rel- R.a op S.b- R.a op constant, atau constant op R.a

  • Syntax TRC :Formula didefinisikan secara rekursif untuk menjadi salah satu dari daftar berikut ini, dimana p dan q adalah formula dan p(R) menggambarkan formula dimana variabel R muncul :Semua atomic formula p, p q, p q, atau p q R ( p ( R ) ), dimana R adalah variabel tuple R ( p ( R ) ), dimana R adalah variebel tuple

  • Semantik TRC Query:Setiap variabel bebas pada sebuah formula F terikat pada nilai tuple. Untuk penetapan tuple tertentu ke variabel, dengan memperhatikan contoh database, F dievaluasi ke true jika salah satu hal berikut terpenuhi :F adalah formula atomic R Rel, dan R adalah tuple di dalam instance relation RelF adalah komparasi R.a op S.b, R.a op constant, atau constant op R.a, dan tuple yang ditentukan untuk R dan S mempunyai nilai nilai field R.a dan S.b yang menghasilkan komparasi true.F adalah form p dan p bukan true, atau form p q, dan baik p dan q adalah true, atau p q dan salah satunya adalah true, atau form p q dan q adalah true kapan saja p adalah true.

  • Semantik TRC Query:F adalah form R(p(R)), dan ada beberapa tuple untuk variabel bebas pada p(R), termasuk variabel R yang membuat formula p(R) menjadi true.F adalah form R(p(R)), dan ada beberapa tuple untuk variabel bebas pada p(R) yang membuat formula p(R) true tidak peduli tuple apa yang ditentukan untuk R.

  • Contoh TRC Query:Cari nama barang yang stoknya masih ada.{ A | P Products (A.ProductName = P.ProductName = P.UnitInStock > 0) }Cari nama barang dan harga per unit untuk barang yang stoknya masih ada.{ A | P Products (A.ProductName = P.ProductName = A.UnitPrice = P.UnitPrice = P.UnitInStock > 0) }Cari nama pelanggan yang pernah memesan barang pada tanggal xx / xx / xxxx { A | C Customers O Orders (C.CustomerID =O.CustomerID A.ContactName = C.ContactName O.OrderDate = xx / xx / xxxx) }

  • Contoh TRC Query:Cari nama pelanggan yang pernah memesan barang dengan kode barang = xxx.{ A | C Customers O Orders D (Order Detail)(C.CustomerID = O.CustomerID O.OrderID = D.OrderID A.ContactName = C.ContactName D.ProductID = xxx) }Cari negara yang pernah memesan barang yang berdiskon dan jumlah barang yang dipesan diatas 10 unit.{ A | C Customers O Orders D (Order Detail)(C.CustomerID = O.CustomerID O.OrderID = D.OrderID A.Country = C.Country D.Discount > 0 D.Quantity > 10) }

  • Contoh TRC Query:Cari nama pelanggan yang pernah memesan barang dengan kode barang = xxx.{ A | C Customers O Orders D (Order Detail)(C.CustomerID = O.CustomerID O.OrderID = D.OrderID A.ContactName = C.ContactName D.ProductID = xxx) }Cari negara yang pernah memesan barang yang berdiskon dan jumlah barang yang dipesan diatas 10 unit.{ A | C Customers O Orders D (Order Detail)(C.CustomerID = O.CustomerID O.OrderID = D.OrderID A.Country = C.Country D.Discount > 0 D.Quantity > 10) }

  • Contoh TRC Query:Cari nama barang dan sisa stok yang ada untuk barang yang tidak memiliki diskon atau harga barang / unitnya dibawah Rp. 50.000,-.{ A | P Products O (Order Detail) (P.ProductID =O.ProductID A.ProductName = P.ProductName A.UnitInStock = P.UnitInStock (O.Discount = 0 O.UnitPrice