Basis Data_04_RelationalAljabar

Download Report

Transcript Basis Data_04_RelationalAljabar

Basis Data

Relational Algebra

Aljabar Relasional

• Aljabar relasional adalah kumpulan operasi terhadap relasi. Setiap operasi menggunakan satu atau lebih relasi untuk menghasilkan satu relasi yang baru.

• Operasi aljabar relasional yang dilakukan pada satu atau lebih relasi untuk mendefinisikan relasi lainnya tanpa mengubah relasi yang asli.

• Operand dan hasilnya merupakan relasi, sehingga output suatu operasi dapat menjadi input bagi operasi yang lain.

• Memungkinkan suatu operasi bertingkat (nested) (seperti aritmatika), hal ini disebut closure.

• terdapat 5 operasi dasar pada aljabar relasional: Selection, Projection, Cartesian product, Union, dan Set Difference. Menampilkan seluruh operasi pemanggilan data yang dibutuhkan.

• Operasi lainnya : Join, Intersection, dan Division operations, yang juga dapat diekspresikan dengan menggunakan operasi dasar.

Operasi aljabar Relasional

Operasi Kompleks dalam Aljabar Relasional

Selection (or Restriction)

•  predicate (R) – Operasi pada relasi tunggal, dan menghasilkan relasi yang berisikan baris (tuple) yang sesuai dengan syarat yang telah ditentukan (predicate).

• Contoh : Buatlah daftar staf dengan gaji > £10,000.

 salary > 10000 (Staff)

Projection

•  col1, . . . , coln(R) • Operasi pada relasi tunggal R dan menghasilkan relasi yang berisikan subset vertical (kolom) dari R, Menampilkan isi atribut dan menghilangkan duplikasi.

– Contoh : Buatlah daftar gaji seluruh staff, yang terdiri dari staffNo, fName, lName, dan salary.

staffNo, fName, lName, salary(Staff)

Union

• R J).

 S – Penggabungan (Union) dua relasi, R dan S, menghasilkan relasi yang berisikan semua tuple dari R, dan/atau S, dan duplikasi akan dieliminasi/dihilangkan. – Atribut ( R ) = Atribut ( S ) .

• Jika R dan S memiliki sejumlah tuple I dan J , maka hasil tupel dari union keduanya max (I + • Contoh : Tampilkan seluruh kota dimana terdapat kantor cabang dan property untuk disewakan 

city(Branch)

 

city(PropertyForRent)

Set Difference

• R – S – Menghasilkan relasi yang terdiri dari tuple pada relasi R,yang tidak ada pada relasi S. – Atribut ( R ) = Atribut ( S ) • Contoh : Tampilkan seluruh kota dimana terdapat kantor cabang tetapi tidak terdapat property untuk disewakan. 

city(Branch) –

city(PropertyForRent)

Intersection

• R  S – Menghasilkan relasi yang terdiri dari kumpulan seluruh tuple yang ada pada relasi R maupun S. – Atribut ( R ) = Atribut ( S ) • Dapat dihasilkan dengan menggunakan operasi dasar: R  S = R – (R – S) • Contoh : Tampilkan seluruh kota yang mempunyai kantor cabang dan sedikitnya 1 property untuk disewakan. 

city(Branch)

 

city(PropertyForRent)

Cartesian product

• R X S – Menghasilkan relasi yang merupakan urutan (concatenation) dari setiap tuple pada relasi R dengan setiap tuple pada relasi S. • Contoh : Tampilkan nama dan komentar seluruh klien yang telah melihat property yang disewakan.

(

clientNo, fName, lName(Client)) X (

clientNo, propertyNo, comment (Viewing))

• Contoh Cartesian Product dan Selection: – Gunakan operasi selection untuk menampilkan tuple klien dimana, Client.clientNo = Viewing.clientNo.

Client.clientNo = Viewing.clientNo((

clientNo, fName, lName(Client))

(

clientNo, propertyNo, comment(Viewing)))

• Cartesian product dan Selection dapat diganti dengan operasi tunggal, Join.

Join Operation

• Join merupakan turunan dari operasi Cartesian product.

• Equivalen dengan fungsi

Selection

, menggunakan predikat join sebagai fungsi

selection

pada Cartesian product dari dua buah relasi.

• Merupakan operasi tersulit untuk diimplementasikan secara efisien pada RDBMS dan merupakan salah satu alasan mengapa RDBMS memiliki masalah-masalah.

• Jenis-jenis operasi

join

.

– Theta join – Equijoin (a particular type of Theta join) – Natural join – Outer join – Semijoin

Theta join (

-join)

• R F S • Mendefinisikan relasi yang terdiri dari tuple-tuple yang memenuhi syarat predikat F dari Cartesian product relasi R dan S. • Predikat F yaitu bentuk dari R.ai  S.bi dimana  dapat berupa operator pembanding (<,  , >,  , =,  ).

• Theta join dapat dituliskan dengan menggunakan operasi dasar

Selection

dan operasi Cartesian product.

R FS =  F(R  S)

Contoh -

Equijoin

• Tampilkan nama dan komentar semua klien yang telah melihat property untuk disewakan. (  clientNo,fName,lName(Client)) Client.clientNo=Viewing.clientNo(  clientNo,propertyNo, comment(Viewing))

Natural join

• R S • Equijoin dari dua relasi R dan S untuk seluruh atribut

x

. Perulangan akan dieliminasi dari hasil akhir. • Contoh -

Natural join

Tampilkan nama dan komentar seluruh klien yang telah melihat property untuk disewakan.

(

clientNo, fName, lName(Client)) (

clientNo, propertyNo, comment(Viewing))

Outer join

• Untuk menampilkan baris pada relasi yang dihasilkan, dimana baris tersebut tidak memiliki nilai yang cocok (matching values) dengan kolom yang di-join. • R S • (Left) outer join adalah join, dimana tuple dari R yang tidak memiliki nilai yang cocok (matching values) pada kolom dari S, yang ditampilkan dalam relasi yang dihasilkan.

Contoh -

Left Outer join

• Buatlah laporan status dari

property viewings

Viewing  propertyNo, street, city (PropertyForRent)

Semijoin

• R F S • Mendefinisikan relasi yang berisikan tuple tuple dari relasi R yang ada pada join R dengan S.

• Semijoin dapat dituliskan dengan menggunakan • R F S

Projection

=  A (R F S) dan join:

Contoh -

Semijoin

• Tampilkan detail lengkap semua staff yang bekerja pada kantor cabang di Glasgow.

Staff Staff.branchNo

= Branch.branchNo and Branch.city = ‘Glasgow’ Branch

Division

• R  S • Mendefinisikan relasi antara atribut-atribut C yang terdiri dari himpunan tuple R yang merupakan kombinasi yang cocok/sesuai (match) dengan setiap tuple S.

• Ekpresi dengan menggunakan operasi dasar: – T1   C(R) – T2   C((S X T1) – R) – T  T1 – T2

Contoh Division

• Identifikasi seluruh klien yang telah melihat seluruh properti dengan 3 buah ruang/kamar. (  clientNo, propertyNo(Viewing))  (  propertyNo(  rooms = 3 (PropertyForRent)))