TUGAS BASIS DATA II KONSEP RELASIONAL BASIS DATA
Oleh: 1. Phie Chyan (631) 2. Rajim Laymond.S. (633) 3. Sherly Jayanti (635)
UNIVERSITAS GADJAH MADA JOGJAKARTA
1
Bab 2. KONSEP DATABASE RELASIONAL SOAL – SOAL SUPPLEMEN DARI BUKU FUNDAMENTALS OF RELATIONAL DATABASES 2.21. Pada tabel-tabel dibawah ini, tentukanlah mana tabel yang dapat mereprenstasikan suatu relasi, jelaskan alasannya Jawaban: Tabel A A 1 25 46 53 16
B 88 45 87 26 23 57
C 80 23 23 39 33 48
D 0 89 43 55 43 48
Tabel A diatas bukan merupakan relasi, karena pada kolom atau attribut A yang menjadi primary key terdapat salah satu row yang NULL atau tidak mempunyai nilai pada kolom A nya, hal ini merupakan suatu pelanggaran disebabkan salah satu syarat dari Primary key adalah tidak boleh bernilai NULL Tabel B A 1 16 25 46 53 16
B 88 57 87 26 23 57
C 80 48 23 39 33 48
D 0 48 43 55 43 48
Tabel B diatas bukan merupakan relasi karena terdapat 2 baris yang identik yaitu baris ke-2 dan baris ke-6, dalam model data Relational Database Management System (RDBMS), setiap record dalam satu tabel harus unik artinya tidak dibolehkan dalam satu tabel mempunyai 2 atau lebih record yang sama 2
Tabel C A 23WEE 16 25WE 46RE 53WT 16E
B 88 57 87 26 23 57
C 80 48 23 39 33 48
D 0 48 43 55 43 48
Tabel C diatas dapat merupakan relasi akan tetapi dapat juga bukan merupakan relasi, hal ini akan tergantung dari pemilihan tipe data untuk attribut A, apabila tipe data yang dimiliki oleh Attribut A merupakan tipe karakter maka tabel diatas merupakan relasi sehingga semua angka diatas pada kolom A akan dianggap sebagai karakter dan tidak dapat digunakan dalam operasi matematis, tetapi apabila tipe data yang dimiliki oleh A bertipe numeric maka tabel C diatas bukan merupakan relasi karena pemasukan data selain angka dalam tipe numerik akan ditolak dalam model data RDBMS.
2.22. Asumsikan sebuah contoh relasi mempunyai derajat 7 dan kardinalitas 15. Berapa banyak attribut yang dimiliki oleh relasi ini dan berapa banyak baris yang berbeda yang ada didalam relasi Jawaban: Derajat dari suatu tabel merupakan jumlah kolom atau attribut yang dimiliki oleh sebuah tabel. Kardinalitas suatu tabel merupakan jumlah baris atau record yang berada dalam satu tabel pada suatu waktu. Dalam soal diatas terdapat sebuah relasi yang memiliki derajat 7 dan kardinalitas 15, maka dapat dikatakan relasi tersebut memiliki 7 attribut dan 15 record yang berbeda
2.23. Asumsikan bahwa anda memiliki sebuah relasi r(R) dan bahwa anda melakukan satu proyeksi terhadap relasi ini melalui himpunan atribut X (X ⊂ R) dari relasi. Jika anda kemudian melakukan Selection terhadap relasi Projection untuk mengambil seluruh tupel yang memenuhi kondisi A = a, bagaimanakah hubungan antara A dan atribut Projection ?
3
Jawaban: R A
B
C
a
b
c
a
d
e
c
e
f
g
e
a
Melakukan poyeksi dengan himpunan attribut X misalnya X={A,B}
πA, B ( R) A
B
a
b
a
d
c
e
g
e
Kemudian melakukan seleksi terhadap relasi proyeksi yang memenuhi kondisi A=a sehingga menghasilkan
σA = a (πA, B ( R )) A
B
a
b
a
d
Kesimpulannya: Atribut A harus merupakan salah satu atribut dari himpunan attribut X pada proyeksi yang dilakukan
4
2.24. Bayangkanlah relasi r(ABC) dan s(ACDE), Asumsikan pula bahwa a ∈ Dom(A), b ∈ Dom(B), c ∈ Dom (C) dan d ∈ Dom(D). Manakah dari pernyataan berikut yang dapat di penuhi ? a. r ∪ s
b. πB (r) ∩ πB(r)
c. σD = d(r)
Jawaban : b b = Operasi ini sah di lakukan jika atribut atribut nilainya kompatibel. Operasi πB (r) ∩ π B(r)menghasilkan suatu relasi yang berisi instan – instan yang terjadi dalam suatu relasi r atau suatu relasi s. r dan s haruslah Union – Compatible dan skema hasil identik dengan skema r. a = Operasi Union tidak sah karena relasi-relasi tidak memiliki jumlah atribut yang sama, di mana jumlah atribut relasi r adalah 3 dan jumlah atribut relasi s adalah 4. c = Operasi ini tidak sah di lakukan karena atribut D bukan merupakan elemen dari skema relasi r, D adalah elemen dari relasi s.
2.25. Carilah key yang tepat untuk skema relasi di bawah ini. Apakah key tersebut berupa key tunggal (single) atau campuran (composite)? Jika himpunan atribut yang sekarang tidak cocok, jelaskan mengapa dan berikanlah solusi. a. ORDER (Order-No, Order-Date, SalesRep, Total-Amount, Discount, Ship-Date). Asumsikan bahwa order number di-reset setiap hari. Masing-masing Customer –Id dapat menempatkan lebih dari satu order perhari. b. STORE (Location, No-of-Employees, Total-Monthly-Sales, Manager, City). Asumsikan bahwa terdapat lebih daripada satu toko (store) yang terletak di kota yang sama. c. PAYMENT (Customer-Id, Account, Amount-Paid, Date-Paid, Type-Payment, Discount). Asumsikan bahwa customer dapat memiliki lebih dari satu account dan ia dapat melakukan beberapa pembayaran (payment) setiap harinya namun tidak dapat lebih daripada satu pembayaran per hari yang bisa di lakukan melalui masing-masing account tersebut. Jawaban : a. Key PK untuk relasi ini adalah key campuran. Atribut key ini adalah : Order-No dan Order-Date. b. Himpunan atribut yang ada sekarang tidak memungkinkan kita untuk memilih sebuah key tanpa menetapkan batasan yang tidak di perlukan terhadap relasi. Solusi terbaik adalah dengan menambahkan atribut baru Store-Id dan menggunakannya untuk mengidentifikasi keunikan setiap toko (Store). Pasangan Location dan Manager-LastName bukan merupakan solusi yang mampu bertahan karena solusi ini menetapkan kondisi yang tidak diperlukan terhadap data. Sebelum merekrut manager baru, 5
database harus di periksa untuk melihat apakah ada manager dengan last-name yang serupa. Ini nampaknya bukan merupakan cara perekrutan yang baik. c. Key untuk relasi ini adalah key campuran yang terbentuk dari atribut-atribut berikut: Customer-Id, Account, dan Date-Paid.
2.26. Perhatikanlah relasi-relasi di bawah ini dan atribut-atribut yang di tentukan sebagai PK untuk relasi-relasi tersebut. Lakukanlah penilaian apakah pilihan untuk PK tersebut tepat atau tidak. a. EMPLOYEE (ID, LAST-NAME, SALARY) b. STUDENT (NAME, ADVISOR, MAJOR). Asumsikan bahwa setiap student memiliki advisor yang unik. Seorang advisor dapat memiliki lebih dari satu orang anak didik. c. STUDENT (ID, NAME, ADVISOR). Asumsikan bahwa setiap student memiliki advisor yang unik. Jawaban: a. Atribut campuran ini bukanlah key yang tepat. Key harus tetap menjadi key tanpa terpengaruh data atau beberapa lama relasi ini akan di gunakan. Dalam kasus ini, dimungkinkan bahwa dua employee yang berbeda dapat memiliki last-name dan salary yang sama. b. Key campuran ini juga bukan merupakan key yang tepat. Seorang advisor dapat memiliki dua anak didik yang berbeda dengan nama yang sama. c. Key campuran ini tidak tepat karena melanggar sifat minimal key. Atribut name dapat di abaikan. Disini tidak dibutuhkan pengidentifikasian yang unik terhadap tupel dari relasi. Jadi cukup atribut ID saja yang jadi PK dalam relasi STUDENT
2.27. Diberikan tabel TRAVELER dan RESORT, carilah nama dari pelanggan yang telah mengunjungi semua resort yang saat ini ada dalam tabel RESORT.operasi apa yang anda gunakan? Traveler Customer
Country
Alton
Meksiko
Russel
Meksiko
Jones
Meksiko
Martin
Meksiko 6
Alton
England
Jones
England
Russel
Brazil
Jones
Brazil
Martin
Brazil
Alton
Spain
Russel
Spain
Jones
Spain
Resort Country
Resort Location
Price
Mexico
Cancun
1200
England
Liverpool
1790
Brazil
Rio de Janeiro
1790
Spain
Marbella
2200
Jawaban: Untuk menjawab pertanyaan diatas kita menggunakan operasi dengan operator division, operator division dapat digunakan untuk mencari tuple yang ada pada satu tabel yang mempunyai setiap nilai yang muncul pada satu kolom tertentu dalam tabel lain, dalam contoh kasus diatas kita ingin mencari nama costumer pada tabel TRAVELER yang memiliki setiap nilai yang terdapat pada kolom ‘Country’ pada tabel RESORT. Berikut ini algoritma untuk mendapatkan hasil dari operasinya: 1.
Karena relasi dividen (Traveller) terdiri dari 2 attribute, maka kita dapat membaginya kedalam 2 grup yaitu attribute dividen (Country) dan attribut non dividen (Customer)
2.
Proyeksi dari relasi Traveller pada attribut non dividen adalah
7
πcustomer (Traveller ) Customer Alton Russel Jones Martin
Operasikan masing masing tuple, dimulai dengan Alton, bentuk tabel baru dengan tuple dari relasi dividen (Traveller) yang mengandung tuple Alton. Sertakan semua attribut dari relasi dividen. Maka menghasilkan tabel baru Customer
Country
Alton
Mexico
Alton
England
Alton
Spain
Kemudian untuk tuple Russel dengan operasi yang sama diatas menghasilkan Customer
Country
Russel
Mexico
Russel
Brazil
Russel
Spain
Lalu untuk tuple jones dengan operasi yang sama menghasilkan Customer
Country
Jones
Mexico
Jones
England
Jones
Brazil 8
Jones
Spain
Dan terakhir untuk tuple Martin menghasilkan Customer
Country
Martin
Mexico
Martin
Brazil
3. Cari proyeksi dari relasi pembagi (Resort) pada attribut pembagi (Country)
πcountry (RESORT ) Country Mexico England Brazil Spain
4. Dari keempat tabel yang dibentuk oleh masing masing tuple dari kolom Customer pada tabel TRAVELLER, maka satu-satunya tuple yang memiliki semua record seperti yang dihasilkan dari proyeksi pada relasi pembagi diatas adalah tuple Jones, maka jawaban dari pertanyaan nama pelanggan yang manakah yang telah mengunjungi semua resort adalah Jones
2.28. Asumsikan anda memiliki 2 relasi seperti pada contoh 2.4. Apa yang akan terjadi jika anda mencoba menghapus tuple dengan id 10 pada tabel DEPARTMENT ? Asumsikan bahwa departemen ini dihapus dan semua karyawan pada departemen tersebut diberhentikan. Bagaimana anda menghindari kesalahan dari sistem ketika anda mencoba menghapus tuple dengan id 10? Jawaban: Apabila tuple dengan id 10 pada tabel DEPARTEMEN akan dihapus sementara beberapa tuple pada table EMPLOYEE merefensi ke tuple tersebut, maka sistem akan menolak aksi ini dan memberikan pesan kesalahan akibat pelanggaran integritas referensial, hal ini bertujuan untuk menjaga integritas data dan menghindari anomali pada basis data. Untuk menghindari kesalahan dalam proses penghapusan tuple diatas beberapa RDBMS mendukung opsi ON DELETE CASCADE untuk diterapkan pada relasi sehingga apabila suatu tuple misalnya tuple pada tabel DEPARMENT dihapus maka semua tuple pada tabel lain misalnya tuple pada tabel EMPLOYEE yang mereferensi ke tuple pada tabel DEPARTMENT yang dihapus tersebut akan ikut dihapus sehingga tidak menyebabkan pelanggaran pada integritas referential, untuk sistem yang tidak mendukung opsi DELETE CASCADE ada cara lain yang meskipun kurang ideal tapi tidak menyebabkan 9
pelanggaran pada integritas referensial adalah dengan menghapus lebih dahulu semua tuple pada tabel EMPLOYEE sebelum menghapus tuple pada tabel DEPARTMENT
2.29. Asumsikan anda mempunyai 2 relasi r dan s yang didefinisikan pada skema yang sama R dan X ∈ R. Menggunakan tabel anda sendiri, tuliskan contoh untuk mengilustrasikan bahwa dalam ekspresi dibawah ini bagian kiri dari ekspresi akan selalu disertakan dalam bagian kanan tetapi tidak untuk sebaliknya Jawaban : Contoh tabel : eskul_basket nis
nama
telepon
namasekolah
100001
Andi
0832322222
smu 1
100002
Budi
0877232233
smu 2
100003
Hendra
0312223458
smu pancasila
100004
Imran
0893299924
smu percobaan
nis
nama
telepon
namasekolah
100004
imran
0893299924
smu percobaan
100008
hermawan
0274593993
smu 1
100009
andres
0274222356
smu 1
100015
ferdy
0876232333
smu percobaan
eskul_futsal
a. πx ( r ∩ s) = πx (r ) ∩ πB ( s ) relasi eskul_basket ∩ eskul_futsal 10
nis
nama
telepon
namasekolah
100004
imran
0893299924
smu percobaan
misalnya kita mengambil set atribut x adalah (nama,telepon) untuk mengerjakan bagian kiri pernyataan maka
πnama , telepon(eskul _ basket ∩ eskul _ futsal ) Hasilnya : nama
telepon
imran
0893299924
Untuk mengerjakan pernyataan bagian kanan kita mengambil set atribut B= (namasekolah, nis) dari relasi eskul_futsal untuk di intersect dengan set atribut X = (nama,telepon) dari relasi eskul_basket, hal ini dapat dilakukan karena kedua attribut yang akan diintersect kan mempunyai derajat yang sama dan tipe data yang kompatibel meskipun kedua attribut tersebut mempunyai nama yang berbeda
πnama , telepon(eskul _ basket ) nama
telepon
Andi
0832322222
Budi
0877232233
Hendra
0312223458
Imran
0893299924
πnamasekolah , nis (eskul _ futsal ) namasekolah
nis
smu percobaan
000004
smu 1
000008
smu 1
000009 11
smu percobaan
000015
Dari pembahasan diatas dapat dilihat bahwa sisi kiri pernyataan akan selalu disertakan pada sisi kanan pernyataan tapi tidak untuk sebaliknya hal ini disebabkan karena sisi kanan pernyataan membuat masing-masing proyeksi untuk setiap tabel sebelum diiriskan satu sama lain, sedangkan sisi kiri pernyataan membuat proyeksi bersama dari kedua tabel tersebut setelah diiriskan terlebih dahulu
b. πx ( r ∪ s) = πx (r ) ∪ πB ( s ) relasi eskul_basket ∪ eskul_futsal nis
nama
telepon
namasekolah
100001
Andi
0832322222
smu 1
100002
Budi
0877232233
smu 2
100003
Hendra
0312223458
smu pancasila
100004
Imran
0893299924
smu percobaan
100008
hermawan
0274593993
smu 1
100009
andres
0274222356
smu 1
100015
ferdy
0876232333
smu percobaan
misalnya kita mengambil set atribut x adalah (nama,telepon) untuk mengerjakan bagian kiri pernyataan maka
πnama , telepon(eskul _ basket ∪ eskul _ futsal ) Hasilnya : nama
telepon
Andi
0832322222
Budi
0877232233
Hendra
0312223458 12
Imran
0893299924
hermawan
0274593993
andres
0274222356
ferdy
0876232333
Untuk mengerjakan pernyataan bagian kanan kita mengambil set atribut b = (namasekolah, nis) dari relasi eskul_futsal untuk di union dengan set atribut x = (nama,telepon) dari relasi eskul_basket, hal ini dapat dilakukan karena kedua attribut yang akan diunionkan mempunyai derajat yang sama dan tipe data yang kompatibel meskipun kedua attribut tersebut mempunyai nama yang berbeda
πnama , telepon(eskul _ basket ) nama
telepon
Andi
0832322222
Budi
0877232233
Hendra
0312223458
Imran
0893299924
πnamasekolah , nis (eskul _ futsal ) namasekolah
nis
smu percobaan
000004
smu 1
000008
smu 1
000009
smu percobaan
000015
Hasil pernyataan sisi kanan πnama , telepon(eskul _ basket ) ∪ πnamasekolah , nis (eskul _ futsal )
13
nama _namasekolah
telepon _nis
Andi
0832322222
Budi
0877232233
Hendra
0312223458
Imran
0893299924
smu percobaan
000004
smu 1
000008
smu 1
000009
smu percobaan
000015
Dari pembahasan diatas dapat dilihat bahwa sisi kiri pernyataan akan selalu disertakan pada sisi kanan pernyataan tapi tidak untuk sebaliknya hal ini disebabkan karena sisi kanan pernyataan membuat masing-masing proyeksi untuk setiap tabel sebelum digabungkan satu sama lain, sedangkan sisi kiri pernyataan membuat proyeksi bersama dari kedua tabel tersebut setelah digabungkan terlebih dahulu. 2.30. Menggunakan relasi dibawah cari hasil dari operasi berikut : r A
B
C
a
1
a
b
1
b
a
1
c
c
2
d
A
B
C
a
1
a
a
3
d
s
14
a. σA = a (r ) Jawaban : Pernyataan diatas dapat diterjemahkan sebagai “Tampilkan semua record yang mempunyai attribut A bernilai a”. operasi selection akan menyeleksi record pada sebuah relasi berdasarkan nilai dari satu atau lebih attribut, dalam soal diatas attribut yang akan digunakan adalah ‘A’ dan nilai yang harus dipenuhi oleh suatu record adalah ‘a’ Maka hasilnya adalah : A
B
C
a
1
a
a
1
c
b. πA, B (r ) Jawaban: Pernyataan diatas dapat diterjemahkan sebagai “Tampilkan semua record yang berbeda pada attribut A dan B pada relasi r” Operasi projection akan menyeleksi attribut pada sebuah relasi, dalam penggunaannya operator ini dipakai untuk menampilkan record pada satu atau lebih attribut yang diinginkan, perlu diingat bahwa relasi hasil dari operator projection akan mengeliminasi record yang sama sehingga tidak akan terjadi duplikasi dalam proses ini. Dalam soal diatas attrribut/kolom yang ingin ditampilkan adalah A dan B pada relasi r. Maka hasilnya adalah:
A
B
a
1
b
1
c
2
c. r ∪ s 15
Jawaban : Pernyataan diatas dapat diterjemahkan sebagai “operasikan relasi r dan s dengan operasi penggabungan (Union)” Operasi Union digunakan untuk menggabungkan record dari 2 relasi atau lebih, dalam soal diatas semua record yang ada pada relasi r atau record yang ada pada relasi s atau record yang berada pada kedua relasi tersebut akan digabungkan sehingga menghasilkan satu relasi hasil yang didalamnya terdapat anggota dari masing-masing relasi r dan s. dalam operasi union record yang sama akan dieliminasi sehingga hasil relasi tidak akan mempunyai record yang terduplikasi, perlu diingat dalam melakukan operasi union, relasi yang terlibat dalam penggabungan harus mempunyai derajat yang sama serta tipe data yang kompatibel untuk tiap atribut yang digabungkan Dalam soal diatas relasi r akan digabungkan dengan relasi s, maka hasilnya adalah: A
B
C
a
1
a
b
1
b
a
1
c
c
2
d
a
3
d
d. r ⊗ s Jawaban : Pernyataan diatas dapat diterjemahkan sebagai “ lakukan operasi cartesian product pada kedua relasi r dan s” Operasi cartesian product digunakan untuk melakukan penggabungan dengan cara menggabung setiap tuple dari satu relasi (yang dinyatakan pada bagian kiri operator) terhadap setiap tuple dari relasi lain ( yang dinyatakan pada sebelah kanan operator). cartesian product menghasilkan jumlah attribut yang merupakan penjumlahan attribut dari kedua relasi yang terlibat operasi serta jumlah record yang merupakan perkalian dari jumlah record pada kedua relasi yang terlibat operasi Dalam soal diatas setiap tuple dari relasi r akan dioperasikan terhadap tuple dari relasi s dengan operasi cartesian product, maka hasilnya : r.A r.B
r.C
s.A
s.B
s.C
a
a
a
1
a
1
16
a
1
a
a
3
d
b
1
b
a
1
a
b
1
b
a
3
d
a
1
c
a
1
a
a
1
c
a
3
d
c
2
d
a
1
a
c
2
d
a
3
d
e. r – s Jawaban: Pernyataan diatas dapat diterjemahkan sebagai “ lakukan operasi difference terhadap relasi r minus s “ Dalam soal diatas, operasi difference pada relasi r dan s menghasilkan record yang pada saat tersebut eksis pada tabel r tetapi tidak eksis pada tabel s. sehingga berdasarkan relasi r dan s pada soal diatas maka akan dihasilkan A
B
C
b
1
b
a
1
c
c
2
d
17