bab 04a - rel algebra

23
DBMS – Arif Djunaidy – FTIF ITS Bab 4A - 1/23 Database Management Systems Bab 4 Bagian A Aljabar Relasional (Chap. 4 Ramakrishnan)

Upload: oksya

Post on 22-Jul-2015

94 views

Category:

Documents


5 download

TRANSCRIPT

DBMS Arif Djunaidy FTIF ITS Bab 4A - 1/23 Database Management Systems Bab 4 Bagian A Aljabar Relasional (Chap. 4 Ramakrishnan) DBMS Arif Djunaidy FTIF ITS Bab 4A - 2/23 Pokok Bahasan Apa yang menjadi dasar dari relational query languages, seperti SQL? Apa perbedaan antara procedural & declarative languages? Apa yang dimaksud dengan aljabar relasional (relational algebra), dan mengapa ia dianggap penting? Apa operasi-operasi dasar dari aljabar relasional, dan bagaimana operasi-operasi tersebut dapat dikombinasikan untuk menuliskan queries yang komplek? Apa yang dimaksud dengan kalkulus relasiona (relational calculus), dan mengapa ia dianggap penting? Apa subset dari logika matematika yang digunakan dalam kalkulus relasional, dan bagaimana ia dapat digunakan untuk menuliskan queries? DBMS Arif Djunaidy FTIF ITS Bab 4A - 3/23 Relational Query Languages Query languages(QLs):Memungkinkan utk melakukan manipulasi data dan retrieval data dari suatu basis data. Model relasional menyediakan QLs yang sederhana dan ampuh: Pondasi formal yang kuat berbasis lojik Memungkinkan utk melakukan banyak optimasi Query Languages != Programming Languages! QLs tidak diharapkan menjadi bahasa yang lengkap QLs tidak diharapkan utk digunakan dalam proses kalkulasi yang komplek QLs menyediakan akses ke data yang besar secara mudah dan efisien DBMS Arif Djunaidy FTIF ITS Bab 4A - 4/23 Formal Relational Query Languages Terdapat dua mathematical Query Languages yang menjadi basis dari real languages (sperti SQL) dan menjadi basis utk implementasi: Aljabar Relasional (Relational Algebra):Bersifat lebih operasional, dan sangat bermanfaat utk menyajikan rencana eksekusi (execution plans). Kalkuluas Relasional (Relational Calculus): Memungkinkan pengguna utk mendiskripsikan apa yang diinginkan, BUKAN bagaimana melakukannya.(lebih bersifat Non-operasional dan deklaratif) DBMS Arif Djunaidy FTIF ITS Bab 4A - 5/23 Pengantar Suatu query diaplikasikan pada relation instances, hasilnya juga berupa suatu relation instances. Schemas dari relasi-relasi yang dijadikan masukan untuk suatu query bersifat tetap (tetapi query akan dijalankan tanpa memperhatikan jumlah instance!) Schema hasil dari suatu query juga bersifat tetap! dan ditentukan oleh definisi dari bentukan-bentukan query language yang digunakan. Notasi posisional v.s. notasi yang didasarkan pada nama field: Notasi posisional lebih mudah utk definisi-definisi formal, sedang notasi yang didasarkan pada nama field lebih mudah utk dibaca (readable). Keduanya digunakan dalam SQL DBMS Arif Djunaidy FTIF ITS Bab 4A - 6/23 Contoh Instances sidsnameratingage 28yuppy935.0 31lubber855.5 44guppy535.0 58rusty1035.0 sidbidday 2210110/10/96 5810311/12/96 R1 sidsnameratingage 22dustin745.0 31lubber855.5 58rusty1035.0 S1 S2 Relasi yang digunakan sebagai contoh adalah : Sailors (S1 dan S2) dan Reserves (R1). Kedua notasi, yaitu posisional dan nama field akan digunakan, dengan asumsi bahwa nama-nama field dalam hasil query diturunkan dari nama-nama field dalam relasi-relasi query masukan. DBMS Arif Djunaidy FTIF ITS Bab 4A - 7/23 Aljabar Relasional Operasi-operasi dasar: Selection(o)Memilih subset dari baris-baris relasi Projection(t)Memilih sejumlah kolom dari relasi Cross-product() Mengombinasikan dua relasi Set-difference(-) Operasi set difference antara 2 relasi Union()Operasi set union antara 2 relasi Operasi-operasi tambahan: Intersection (), join (), division(/), renaming:tidak essensial, tetapi (sangat) berguna Oleh karena setiap operasi menghasilkan sebuah relasi, maka dimungkinkan utkmembentuk sebuah query yang komplek yang tersusun dari sejumlah operasi! DBMS Arif Djunaidy FTIF ITS Bab 4A - 8/23 Projection snamerating yuppy9 lubber 8 guppy5 rusty10 ) (,2 Srating snametage 35.0 55.5 ) ( 2 Saget Menghapus attributes yang tidak ada dalam projection list Schema dari hasil query secara tepat hanya berisikan fields yang ada dalam projection list, dengan nama yang sama seperti yang dimiliki oleh relasi masukan Operator dari operasi projection hrs mengeliminasi duplikasi!(Mengapa ?) Catatan: Secara tipikal, keadaan riil tdk melakukan eliminasi duplikasi tuples kecuali jika secara eksplisit pengguna memintanya.(Mengapa tidak ?) sidsnameratingage 28yuppy935.0 31lubber855.5 44guppy535.0 58rusty1035.0 S2 DBMS Arif Djunaidy FTIF ITS Bab 4A - 9/23 Selection ) ( 28Srating >osidsnameratingage 28yuppy935.0 58rusty1035.0 snamerating yuppy9 rusty10 )) ( (,28Sratingrating sname>o t Memiliah baris-baris yang memenuhi kondisi selection Tdk ada duplikasi dlm hasil!(Mengapa ?) Schema yang dihasilkan sama dengan skema relasi masukan Relasi yang dihasilkan dpt dijadikan sbg masukan pada operasi aljabar relasional lainnya! (Komposisi operator) sidsnameratingage 28yuppy935.0 31lubber855.5 44guppy535.0 58rusty1035.0 S2 DBMS Arif Djunaidy FTIF ITS Bab 4A - 10/23 Union, Intersection, Set-Difference Semua operasi-operasi ini memerlukan masukan dua relasi, yang keduanya harus union-compatible: Jumlah fields sama, dan Fields yang bersesuaian hrs mempunyai domain yang sama Bagaimana schema yang dihasilkan oleh operasi-operasi ini ? sidsnameratingage 22dustin745.0 31lubber855.5 58rusty1035.0 44guppy535.0 28yuppy935.0 2 1 S S sidsnameratingage 31lubber855.5 58rusty1035.0 2 1 S S sidsnameratingage 22dustin745.0 2 1 S S sidsnameratingage 28yuppy935.0 31lubber855.5 44guppy535.0 58rusty1035.0 S2 sidsnameratingage 22dustin745.0 31lubber855.5 58rusty1035.0 S1 DBMS Arif Djunaidy FTIF ITS Bab 4A - 11/23 Cross-Product Utk dua relasi S1 dan R1, setiap baris dari S1 dipasangkan dengan setiap baris dari R1, dengan S1 dan R1 tidak harus union-compatible Schema yang dihasilkan mempunyai satu field utk setiap field dari S1 dan R1, dengan nama-nama field diturunkan jika memungkinkan Conflict:S1 dan R1 mempunyai field dengan nama sama sid (sid)snameratingage(sid)bidday 22dustin745.02210110/10/96 22dustin745.05810311/12/96 31lubber855.52210110/10/96 31lubber855.55810311/12/96 58rusty1035.02210110/10/96 58rusty1035.05810311/12/96 ) ), , ( ( 1 1 2 5 1 1 R S sid sid C Renaming operator:sidbidday 2210110/10/96 5810311/12/96 R1 sidsnameratingage 22dustin745.0 31lubber855.5 58rusty1035.0 S1 DBMS Arif Djunaidy FTIF ITS Bab 4A - 12/23 Joins Condition Join: Schema hasil sama dengan utk operasi cross-product Jumlah tuples lebih sedikit dari pada cross-product, sehingga lebih efisien Disebut juga dengan operasi theta-join) ( S RcScR =o (sid)snameratingage(sid)bidday 22dustin745.05810311/12/96 31lubber855.55810311/12/96 1 11 1R Ssid R sid S . . < sidsnameratingage 22dustin745.0 31lubber855.5 58rusty1035.0 S1sidbidday 2210110/10/96 5810311/12/96 R1 DBMS Arif Djunaidy FTIF ITS Bab 4A - 13/23 Joins (Contd) Equi-Join:Kasus spesial dari condition join dimana kondisi c hanya terdiri dari equalities. Schema hasil sama dengan utk cross-product, tetapi hanya satu copy dari fields yang dinyatakan dalam equality Natural Join:Equijoin pada semua fields yang sama sidsnameratingagebidday 22dustin745.010110/10/96 58rusty1035.010311/12/96 1 1 R Ssid sidsnameratingage 22dustin745.0 31lubber855.5 58rusty1035.0 S1sidbidday 2210110/10/96 5810311/12/96 R1 DBMS Arif Djunaidy FTIF ITS Bab 4A - 14/23 Division Tidak didukung sbg primitive operator, tetapi berguna utk menyatakan query seperti:Find sailors who have reserved all boats. Jika A mempunyai 2 fields x dan y, dan B hanya mempunyai 1 field y, maka A/B = yaitu, A/B berisikan semua tuples x (sailors) sedemikian rupa sehingga setiap tuple y (boat) dalam B, terdapat satu tuple xy dalam A. Atau:Jika set dari nilai-nilai y (boats) yang diasosiasikan dengan sebuah nilai x (sailor) dlm A berisikan semua nilai-nilai y dlm B, maka nilai-nilai x ada dalam A/B. Secara umum, x dan y dpt berupa sembarang list dari fields, dimana y adalah list dari fields dlm B, dan xy adalah list dari fields relasi A. { }x x y A y B | , - e eDBMS Arif Djunaidy FTIF ITS Bab 4A - 15/23 Contoh: Division A/B snopno s1p1 s1p2 s1p3 s1p4 s2p1 s2p2 s3p2 s4p2 s4p4 pno p2 pno p2 p4 pno p1 p2 p4 sno s1 s2 s3 s4 sno s1 s4 sno s1 A B1 B2 B3 A/B1 A/B2 A/B3 DBMS Arif Djunaidy FTIF ITS Bab 4A - 16/23 Menyatakan A/B Menggunakan Operator-operator Dasar Division bukan merupakan operator essensial, melainkan hanya merupakan shorthand yang berguna. (Demikian juga joins, hanya saja joins lebih umum sehingga banyak sistem yang mengimplementasikannya secara khusus) Idea:Utk A/B, hitung semua nilai x yang tidak `disqualified oleh beberapa nilai y dlm B. Nilai x disebut disqualified jika digandengkan dengan nilai y dari B, dapat diperoleh tuple xy yang tidak ada dlm A Disqualified x values: A/B: ) ) ) ( (( A B Ax x t tt xA ( ) all disqualified tuples DBMS Arif Djunaidy FTIF ITS Bab 4A - 17/23 Beberapa Contoh Algebra Queries Skema relasi yang digunakan: Sailors (sid: integer, sname: string, rating: integer, age: real) Boats (bid: integer, bname: string, color: string) Reserves (sid: integer, bid: integer, day: date) DBMS Arif Djunaidy FTIF ITS Bab 4A - 18/23 Dapatkan nama-nama sailors yang telah melakukan reservasi boat bernomor 103 Solusi 1:) ) ( ( Sailors Reservesbidsname 103 =o t Solusi 2: ) , ( Reserves Tempbid 1031=o ( , ) Temp Temp Sailors 2 1 t snameTemp ( ) 2 Solusi 3: )) ( ( Sailors Reservesbidsname 103 =o tDBMS Arif Djunaidy FTIF ITS Bab 4A - 19/23 Dapatkan nama-nama sailors yang telah melakukan reservasi red boat Informasi mengenai boat color hanya tersedia dlm Boats; sehingga memerlukan extra join: ) )' '(( Sailors Reserves Boatsred colorsname =o t Solusi yang lebih efisien: ) ) Reserves )' '((( Sailors Boatsred color bidsname =o t tA query optimizer can find this, given the first solution! DBMS Arif Djunaidy FTIF ITS Bab 4A - 20/23 Dapatkan nama-nama sailors yang telah melakukan reservasi red boat atau green boat Pertama identifikasi semua red boats atau green boats, kemudian cari sailors yang telah melakukan reservasi salah satu dari boats tersebut: o ( , (' ' ' ')) Tempboatscolor red color greenBoats= v =) ( Sailors Reserves Tempboatssname t Dapat juga dilakukan dengan mendefinisikan Tempboats menggunakan union!(Bgm caranya?) DBMS Arif Djunaidy FTIF ITS Bab 4A - 21/23 Dapatkan nama-nama sailors yang telah melakukan reservasi red boat dan green boat Cara dlm contoh sebelumnya tidak dpt digunakan utk query ini!Harus mengidentifikasi sailors yang telah melakukan reservasi red boats dan sailors yang telah melakukan reservasi green boats, kemudian lakukan interseksi dari keduanya. (Ingat bahwa sid adalah key dari relasi Sailors): t o ( , ((' ') Re )) Tempredsid color redBoats serves=

tsnameTempred Tempgreen Sailors (( ) ) t o ( , ((' ') Re )) Tempgreensid color green Boats serves=DBMS Arif Djunaidy FTIF ITS Bab 4A - 22/23 Dapatkan nama-nama sailors yang telah melakukan reservasi semua boats Gunakan division; skema relasi yang digunakan dalam operator / hrs dipilih secara cermat: t t ( , (,Re ) / ( )) Tempsidssid bidservesbid Boatst snameTempsids Sailors ( ) Untuk mendapatkan sailors yang telah melakukan reservasi semuaboats dengan nama Interlake/ (' ') t obid bname InterlakeBoats=.. DBMS Arif Djunaidy FTIF ITS Bab 4A - 23/23 Rangkuman Model relasional telah menunjukkan kemampuannya dalam mendefinisikan query languages yang sederhana dan ampuh. Aljabar relasional lebih bersifat operasional; berguna sebagai representasi internal untuk melakukan rencana evaluasi query. Terdapat berbagai cara dalam menyatakan sebuah query; tetapi suatu query optimizer harus memilih versi yang paling efisien.