Relasi Aljabar Dan Kalkulus - Repository UNIKOM

  Relasi Aljabar dan

Kalkulus

  

P e r t e m u a n 9

Topik Bahasan

  1. Relasi Aljabar

  2. Relasi Kalkulus

  3. Relasi Aljabar lanjutan

  

Bahasa Query

  • Bahasa Query formal basis data relasional adalah Bahasa yang digunakan user untuk melakukan request informasi dari basis data
  • Kategori Bahasa :
    • – Prosedural – Non-prosedural

  conto h

  • Bahasa “Murni” (“Pure” languages) :
    • – Aljabar Relasional – Tuple Relational CalculusDomain Relational Calculus

  • Pure languages membentuk dasar bahasa query yang digunakan user.

  

Sedikit Mengingatkan tentang

Bahasa Pemograman

  • Bahasa pemrograman adalah software bahasa komputer yang digunakan dengan cara merancang atau membuat program sesuai dengan struktur dan metode yang dimiliki oleh bahasa program itu sendiri.

Prosedural vs Non Prosedural

  Bahasa Non Prosedural  Bahasa pemrograman generasi keempat yang dikenal dengan sebutan 4GL dapat dipakai oleh pemakai yang kurang mengetahui hal-hal teknis tentang pemrograman tanpa bantuan pemrogram profesional. Sebagai Bahasa Prosedural  Program ditulis dengan contoh pemrogram menggunakan kata-kata yang biasa dipakai manusia, dapat membuat seperti WRITE untuk menampilkan sesuatu di layar dan program dengan READ untuk membaca data dari keyboard. Microsoft Access di lingkungan PC dengan mudah.

  

Relasi Formal dari Bahasa Query

  • Terdapat dua macam bentuk bahasa Query :
    • Aljabar Relasional : lebih bersifat operasional, sangat berguna untuk merepresentasikan eksekusi perencanaan.
    • Kalkulus Relasional : Memungkinkan user menggambarkan apa yang mereka inginkan, tidak pada bagaimana cara melakukan komputasi terhadap apa yang mereka inginkan tersebut. (tidak bersifat operasional, tapi bersifat deklaratif).

  • Memahami Aljabar dan Kalkulus Relasional

  adalah kunci dalam memahami SQL (Structured Query Language ).

  

Aljabar Relasional

  • Relational Algebra (aljabar 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 enam operasi dasar dalam aljabar relasional, yaitu:

  1. Selection ( ) σ

  2. Projection ( π )

  3. Union ( ) ∪

  4. Set – difference ( - )

  5. Cartesian – product ( X, atau cross product )

  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 ( ÷ )

  

Jenis Operasi

  • Operasi Unary terdiri dari selection,

  

projection. Disebut operasi unary, karena

dapat digunakan hanya pada satu tabel.

  • Operasi Binary terdiri dari union,

  intersection, set difference, cartesian product, join dan division. Disebut operasi

binary, karena memerlukan sepasang tabel.

Istilah dalam Model Data Relasional

  • Relasi: Sebuah tabel yang terdiri dari beberapa kolom dan beberapa baris.
  • Atribut: Kolom pada sebuah relasi (field).
  • Tupel Baris pada

  

Operasi Dasar

  1. Selection ( ) σ

  2. Projection ( π ) Operasi turunan :

  3. Union ( ) ∪ Intersection ( ) ∩

  4. Set – difference ( - )

  

5. Cartesian – product ( X, atau cross

product )

  6. Rename ( ) ρ

Operasi Selection ( ) σ

  • Operasi yang digunakan untuk memilih subset dari tuple-tuple pada suatu tabel. p

  (t)

  • Notasi : σ
  • p disebut selection predicate (yang menentukan pemilihan)
  • p merupakan formula dari kalkulus perbandingan (proportional

  calculus) yang berisi terms yang dihubungkan oleh : ^ (and), v (or), ~ (not) setiap term salah satu dari : <atribut> op <atribut> or <konstanta> atau <atribut> op <atribut> dengan op salah satu dari : =, ≠, >, ≥, <, ≤

Operasi Selection (lanj)

  • Contoh : dilakukan operasi σ jenis=“action”

  (film) pada tabel film sebagai berikut :

  2

  5

  2

  3 A02 action Spiderman 2

  2

  A01 action Spiderman

  kode_film jenis judul jml_keping jml_film

  3

  kode_film jenis judul jml_keping jml_film

  1

  5 D01 drama Love Story

  2

  3 A02 action Spiderman 2

  2

  A01 action Spiderman

  3 H01 horor Evil Death

  • Hasilnya : suatu relasi dengan tuple-tuple yang memiliki jenis sama dengan action.

  

Operasi Projection (p)

  • Operasi yang digunakan untuk memilih subset dari kolom-kolom pada suatu tabel
  • Notasi : p (t), dimana A , A , , A

  A1,A2,,An

  1 2 n adalah daftar nama atribut dan t adalah nama suatu tabel.

  • Hasilnya : suatu tabel dengan atribut yang tercantum pada daftar nama atribut pada operasi.

Operasi Projection (lanj)

  • Contoh : dilakukan operasi p kode_film, jenis, judul

  (film) pada tabel film sbb:

  kode_film jenis judul jml_keping jml_film

  A01 action Spiderman

  2

  3 A02 action Spiderman 2

  2

  5 D01 drama Love Story

  2

  3 H01 horor Evil Death

  2

  2

  • Hasilnya :

  kode_film jenis judul

  A01 action Spiderman A02 action Spiderman 2 D01 drama Love Story H01 horor Evil Death

  

Operasi Union/Gabungan

()

  • Operasi yang digunakan untuk menggabungkan hasil dari beberapa query.
  • Notasi : r s, menghasilkan suatu tabel baru yang elemen barisnya merupakan elemen dari r dan s, tidak ada duplikasi data.
  • Untuk r s harus valid : r, s harus memiliki jumlah atribut yang sama.

Operasi Union/Gabungan (lanj)

  

  • tabel r

  tabel s A B C A B C

  aa

  1

  7 aa

  5

  7 bb

  5

  7 cc

  4

  4 bb

  12

  7 dd

  10

  7 dd

  23

  10 aa

  6

  10 A

  A A

  • p (r) (s)  p

  aa bb dd cc

Operasi Intersection/ Irisan ( )

  • Notasi : r s, menghasilkan suatu tabel baru dengan elemen barisnya merupakan elemen yang

    terdapat pada tabel r dan elemen tersebut juga

    terdapat pada tabel s, tidak ada duplikasi data. r

    dan s harus memiliki jumlah atribut yang sama.

  • tabel r tabel s

  A B A B

  a

  1 a 2 a

  2 b 3 b

  1 A B

  • r s

  a

  2

  • • Notasi r s, hasilnya tabel yang elemen barisnya

    terdapat pada r tetapi tidak terdapat di s. r dan s harus memiliki jumlah atribut yang sama.
  • tabel r
  • p
  • tabel s

  A

  6

  7 aa

  10

  4 dd

  4

  7 cc

  5

  aa

  A B C

  bb

  10

  Operasi Set Difference

(–)

  23

  7 dd

  12

  7 bb

  5

  7 bb

  1

  aa

  A B C

  A (s)

  A (r) - p

  10

  

Operasi Cross/Cartesian-Product

  • Notasi r x s, menghasilkan semua kombinasi baris/tuple dari 2 buah tabel, yaitu tabel r dan s. Jumlah atribut tidak harus sama. Contoh :
  • tabel r :

   maka r x s :

  A B

  a

  1 b

  3 C D a 6 b 5 c

  • tabel s :

  12 A B C D a 1 a

  6 a 1 b

  5 a 1 c

  12 b 3 a

  6 b 3 b

  5 b 3 c

  12

  

Operasi Rename

  • Memungkinkan untuk memberi nama dan mengacu hasil dari operasi ekspresi aljabar relasional.
  • Memungkinkan untuk mengacu sebuah relasi dengan lebih dari satu nama. Contoh :

  x ρ (E) mengembalikan ekspresi E dengan nama

  Jika ekspresi aljabar relasional E mempunyai arity n, maka x

  1 2 n ρ (A , A , …, A ) (E) mengembalikan hasil ekspresi E dengan nama X,

  

Komposisi Operasi-Operasi

Relasional

  • Operasi-operasi aljabar relasional dapat

    digabungkan dengan ekspresi aljabar relasional

    lainnya.
  • Contoh : terdapat tabel film sebagai berikut :

  

kode_film jenis judul jml_keping jml_film

  A01 action Spiderman

  2

  3 A02 action Spiderman 2

  2

  5 D01 drama Kabayan

  2

  3 H01 horor Scream

  2

  2

  

Komposisi Operasi-Operasi Relasional

  • Tampilkan kode_film, judul dan jml_film

  dengan jml_film > 3, maka operasi komposisinya sebagai berikut : p

  (σ (film)) kode_film, judul, jml_film jml_film > 3 hasilnya : kode_film judul jml_film

  A02 Spiderman 2

  5

  

Operasi Join ( )

  • • Digunakan untuk menggabungkan dua tabel atau

    lebih dengan hasil berupa gabungan dari kolom-

    kolom yang berasal dari tabel-tabel tersebut.
  • tabel R tabel S

  sid sname rating age

  22 dustin

  7

  45.0 31 lubber

  8

  55.5 58 rusty

  10

  35.0

  sid bid day

  22 101 10/10/96 58 103 11/12/96

  

Operasi Join (lanj)

  • Operasinya : R S sama dengan operasi (RxS), disebut σ juga Full Join.
  • Hasilnya :

  sid sname rating age sid bid day

  22 dustin

  7

  45.0 22 101 10/10/96 22 dustin

  7

  45.0 58 103 11/12/96 31 lubber

  8

  55.5 22 101 10/10/96 31 lubber

  8

  55.5 58 103 11/12/96 58 rusty

  10

  35.0 22 101 10/10/96 58 rusty

  10

  35.0 58 103 11/12/96

  

Condition Join/Theta Join

  • Menghasilkan suatu relasi gabungan yang memiliki tupel-tupel sesuai dengan kondisi kondisi yang telah ditentukan.

  S sama dengan operasi σ (RxS), dengan c c

  • R c=condition.

  sid snam rating age sid bid day

  • Kondisi join : =, >, <, <>, >=, <=

  e

  22 10 10/10/9

  Relasi S

  22 dustin

  7 45.

  1

  6

  • Relasi R

  58 10 11/12/9 31 lubber 8 55.

  3

  6

  Condition Join/Theta Join

(lanj)

  • Operasinya : R S

  

R.sid<S.sid

  • Hasilnya :

  sid snam rating age sid bid day e

  • Kondisi join untuk operator = disebut juga Equi

  22 dustin

  7 45. 58 103 11/12/9 Join.

  6 31 lubber 8 55. 58 103 11/12/9

  5

  6

  

Left Join

  • Menghasilkan relasi dengan atribut terdiri dari gabungan atribut dari dua relasi (misalnya relasi A dan B) yang meliputi semua tupel yang ada pada

    relasi A dan juga hanya tupel-tupel

    pada relasi B yang sesuai dengan tupel-tupel pada relasi A.

  

Right Join

  • Menghasilkan relasi dengan atribut terdiri dari gabungan atribut dari dua relasi (misalnya relasi A dan B) yang meliputi semua tupel yang ada pada

    relasi B dan juga hanya tupel-tupel

    pada relasi A yang sesuai dengan tupel-tupel pada relasi B.

  natural left join dan natural right join.

  

Natural Join

  • Merupakan Equi Join dengan menghilangkan duplikasi atribut.
  • • Natural join dapat dibagi lagi menjadi

  

Natural Left Join

  • Menghasilkan relasi dengan atribut terdiri dari gabungan atribut dari dua relasi (misalnya relasi A dan B) yang meliputi semua tupel yang ada pada

    relasi A dan juga hanya tupel-tupel

    pada relasi B yang sesuai dengan tupel-tupel pada relasi A serta menghilangkan duplikasi atribut.

  

Natural Right Join

  • Menghasilkan relasi dengan atribut terdiri dari gabungan atribut dari dua relasi (misalnya relasi A dan B) yang meliputi semua tupel yang ada pada

    relasi B dan juga hanya tupel-tupel

    pada relasi A yang sesuai dengan tupel-tupel pada relasi B serta menghilangkan duplikasi atribut.

Outer Join

  • Outer Join adalah operasi untuk menggabungkan

    operasi selection dan cartesian product dengan suatu

    kriteria pada kolom yang sama
  • Contoh

  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 mengajar Aljabar Relasional: (dosen) Π nid, nama_d thn_akademik, smt, hari, jam_ke, Π (mengajar) waktu Dosen Mengajar

  Π nid, nama_d (dosen) thn_akademik, smt, hari, Π jam_ke, waktu (mengajar)

  

Operasi Division (/)

• Notasi : R/S.

  • • Menghasilkan suatu tabel dari dua buah tabel

    yang terdiri dari atribut dari tabel R yang tidak terdapat pada tabel S dengan tupel- tupel dari tabel R yang memiliki kesamaan dengan tupel-tupel yang ada pada tabel A secara keseluruhan dan tidak terdapat duplikasi data.

  

Operasi Division (lanj)

  • tabel R tabel S1 tabel S2

  sno pno

  s1 p1 s1 p2 s1 p3 s1 p4 s2 p1 s2 p2 s3 p2 s4 p2 s4 p4

  pno

  p2

  sno

  s1 s2 s3 s4

  pno

  p2 p4

  sno

  s1 s4 Dosen = {nid, nama_d, tempat_lhr, tgl_lhr, jkelamin, alamat, kota, kodepos, gajipokok}

  Matakuliah={kdmk, nama, sks, semester} Jurusan={kode_jur, nama_jur, jenjang, nama_kajur} Mengajar={nid, thn_akademik, smt, hari, jam_ke, kd_mk, waktu, kelas, kode_jur}

Pekerjaan Rumah nonasabah namanasabah namacabang jumlah

  L-001 Anggi Peunayong 3000 L-052 Priyanto PekanBada 4500 L-125 Susillo Lamdingin 7000

  nonasabah namanasabah jumlah

  L-081 Abidin 7500 L-052 Priyanto 5000 L-175 Suryo 1200

  Tabel Peminjam Tabel Penabung

Kerjakan!

  • Tampilkan semua dengan jumlah uang pinjaman di bawah 5000
  • • Tampilkan namanasabah dan namacabang daari tabel

    peminjam
  • Tampilkan nonasabah untuk setiap jumlah peminjaman lebih besar dari 4000
  • Tampilkan semua namanasabah yang memiliki pinjaman atau tabungan dari bank
  • Tampilkan semua namanasabah yang memiliki pinjaman dan tabungan dari bank
  • • Tampilkan nonasabah, namanasabah, dan jumlah dari

    tabel peminjam dan penabung dimana jumlah dari pinjaman dan tabungan lebih besar dari 2500

Kalkulus Relasional • 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.

  

Tuple Relational Calculus

(TRC)

  • • Kalkulus Relasional Tupel mendeskripsikan informasi tanpa

    perlu memberikan prosedur/cara spesifik untuk memperoleh informasi tersebut.
  • • Konsep dasar dari kalkulus relasional tupel adalah konsep

    variabel tupel
  • 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
  • Bentuk umum dari kalkulus relasional tupel adalah:

TupelVariabel1 Operator {TupelVariabel2 | constant}

  Dimana:

TupelVariabel adalah variabel tupel dimana

i=1 sampai n variabel tupel Operator adalah {+, <, >, =,

  , ,  } Constant adalah sembarang nilai atau string

  • Kontsrain yang berlaku adalah variabel-variabel tupel dan konstanta harus mempunyai domain yang sama antara bagian kiri operator dan bagian kanan operator
  • Rumus dapat dikoneksikan operator boolean AND, OR dan NOT sehingga bentuk umumnya adalah:

  TupelVariabel1 operator [TupelVariabel2 | constant3] AND TupelVariabel4 operator [TupelVariabel5 | constant5] AND . . OR TupelVariabelm operator [TupelVariabeln | constantp]

  • Bentukan tersebut digunakan pada klausa SELECT serta WHERE. Dengan

    demikian dapat disimpulkan bahwa

    SQL juga dikembangkan berbasis pada kalkulus relasional tupel.
  • Rumus kalkulus relasional tupel dibentuk dari atom- atom, atom mempunyai salah satu bentuk berikut:

  • – S  R, dimana s adalah variabel tupel dari R adalah relasi,

   kita tidak menginginkan operasi

  • – S[x] op u[y], dimana s dan u adalah variabel tupel, x adalah atribut yang didefinisikan di s, y adalah atribut didefinisikan di u. op adalah operator perbandingan <, (>, =, , , ). Kita perlu atribut x dan y yang mempunyai domain-domain yang anggota nya dapat dibandingkan dengan op.
  • – S[x] op c, dimana s variabel tupel, x adalah atribut yang didefinisikan di s,. op adalah operator perbandingan <, (>, =, , , ). Dan c adalah konstanta dari domain atribut x.

  • Rumus dapat dibangun menggunakan aturan-aturan berikut:
    • – Atom adalah rumus
    • – Jika P1 adalah rumus, maka
      • P1, dan (P1)

    • – Jika P1 dan P2 adalah rumus maka P1

P2, P1  P2, atau P1  P2

  • Jika P1(x) adalah rumus di x, dimana x

  adalah variabel tupel x, maka r R s S (r[a]=s[a])

  

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) }

Contoh TRC Query (Lanjutan)

  • • 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’) }
  • • 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’) }

  

Contoh TRC Query (Lanjutan)

  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 (Lanjutan)

  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 <

  Rp. 50.000,-)) }

Kalkulus Relasional Domain

  • Kalkulus Relasional Domain menggunakan variabel-

    variabel pada nilai-nilai domain atribut, bukan nilai-

    nilai untuk sebuah tupel
  • Ekspresi pada kalkulus relasional domain berbentuk: {<X1, X2, …., Xn >| P(X1, X2, …, Xn)} Dimana X1, X2, …, Xn menyatakan variabel-variabel domain P menyatakan rumus-rumus yang disusun dari atom- atom sebagaimana pada kalkulus relasional tupel

  • Atom pada kalkulus relasional domain adalah salah satu dari:

  Є

  • – <X1, X2, …, Xn> r, dimana r adalah relasi dengan n atribut dan X1, X2, …Xn adalah variabel-variabel domain atau konstanta domain
  • – X op y, dimana x dan y adalah variabel domain, op adalah operasi pembandingan (<, >, =, , , ).

  

Variabel x dan y harus merupakan domain-domain

yang dapat membandingkan dengan op

  • – X op c, dimana x adalah variabel domain, op adalah

    operasi pembandingan (<, >, =, , , ) dan c adalah konstanta
  • Contoh:

    Cari nip, nama_d, gajipokok dari dosen, dimana

    jenis kelaminnya adalah Pria dan gaji pokoknya

    lebih besar 1200000 {nip|  nama_d |  gajipokok (Dosen(nid, nama_d, gajipokok) AND jkelamin=‘Pria’ AND gajipokok>1200000)}

Contoh kalkulus relasional yang diterapkan pada SQL

  SELECT Dosen.nid,Dosen.nama_d,Dosen.gajipokok FROM Dosen WHERE

  Dosen.jkelamin=‘Pria’AND Dosen.gajipokok>10000000

Operasi SUM, AVERAGE, MIN, MAX, COUNT

  • SUM – digunakan untuk menghitung jumlah nilai pada suatu kolom.
  • AVERAGE – digunakan untuk menghitung rata-rata dari suatu kolom.
  • MIN – digunakan untuk mencari nilai minimal