Tugas #3 SQL.pdf

13
TUGAS #3: SQL Tugas ini bersifat individual Dokumentasi versi cetak pada kertas ukuran A4 (untuk soal nomor 1 s.d. 6) diserahkan pada saat kuliah pada hari Senin (25 November 2013). Soal nomor 7 s.d. 12 dijadikan sebagai bagian dari tugas praktikum dan batas waktunya akan ditentukan oleh Koordiantor Praktikum

description

MBD

Transcript of Tugas #3 SQL.pdf

Page 1: Tugas #3 SQL.pdf

TUGAS #3: SQL

Tugas ini bersifat individual

Dokumentasi versi cetak pada kertas ukuran A4 (untuk soal nomor 1 s.d. 6) diserahkan pada saat kuliah pada hari Senin (25 November 2013).

Soal nomor 7 s.d. 12 dijadikan sebagai bagian dari tugas praktikum dan batas waktunya akan ditentukan oleh Koordiantor Praktikum

Page 2: Tugas #3 SQL.pdf

1. Perhatikan basis data relasional LIBRARY seperti

ditunjukkan dalam Gambar 1. Pilih tindakan yang sesuai

(reject, cascade, set to NULL, atau set to default) untuk

setiap referential integrity constraint yang ada, baik untuk

penghapusan sebuah baris yang sedang diacu maupun

untuk pemutakhiran nilai atribut primary key dalam

sebuah baris yang sedang diacu. Berikan alasan pilihan

yang anda lakukan.

2. Tuliskan SQL statements untuk skema basis data

relasional LIBRARY dalam Gambar 1. Tunjukkan

spesifikasi key yang harus diberlakukan dan juga

tunjukkan spesifikasi referential integraty constraints yang

telah anda pilih dalam jawaban soal nomor 1.

Page 3: Tugas #3 SQL.pdf

Gambar 1: Skema Basis Data LIBRARY

(untuk soal nomor 1 dan 2)

Page 4: Tugas #3 SQL.pdf

3. Perhatikan skema basis data beriktu yang digunakan untuk mencatat

beberapa data akademik di universitas. Atribut atau kombinasi

beberapa atribut yang digarisbawahi adalah primary key dari relasi.

STUDENT(sid, sname, sex, age, year, gpa)DEPARTMENT(dname, numberofstudents)FACULTY_MEMBER(fname, dname)COURSE(cno, dname, cname)MAJOR(sid, dname)SECTION(cno, dname, sectno, fname)ENROLL(sid, cno, dname, sectno, grade)

Referential integrity constraints dari skema basis data di atas

adalah sbb:

• dname (FACULTY_MEMBER) mengacu ke dname (DEPARTMENT)• dname (COURSE) mengacu ke dname (DEPARTMENT)• sid (MAJOR) mengacu ke sid (STUDENT)• dname (MAJOR) mengacu ke dname (DEPARTMENT)• <cno, dname> (SECTION) mengacu ke <cno, dname> (COURSE)• fname (SECTION) mengacu ke fname (FACULTY_MEMBER)• sid (ENROLL) mengacu ke sid (STUDENT)• <cno, dname, sectno> (ENROLL) mengacu ke <cno, dname, sectno> (SECTION)

Page 5: Tugas #3 SQL.pdf

Dengan menggunakan skema basis data di atas, tuliskan spesifikasi

SQL untuk query di bawah ini. (Contoh nilai dari setiap tabel dari skema

basis data untuk soal ini dapat dilihat dalam file excel yang disertakan

bersama tugas ini)

a) Untuk setiap mata kuliah (cname) yang ditawarkan oleh departemen

Computer Science, dapatkan kode mata kuliah (cno), nama mata kuliah

(cname), kode kelas kuliah (sectno), dan rataan IP (gpa) dari semua

mahasiswa yang mengambil (enroll) kelas kuliah tersebut

b) Dapatkan nama-nama mata kuliah (cname), kode mata kuliah (cno)

untuk semua kelas kuliah (SECTION) dengan jumlah peserta kurang dari

5 orang

c) Dapatkan semua nama (sname) dan nomor ID (sid) mahasiswa yang

mengambil (enroll) kelas kuliah (SECTION) terbanyak

d) Dapatkan nama-nama departemen yang mempunyai satu atau lebih

mahasiswa dengan usia kurang dari 18 tahun sebagai departemen

utamanya (MAJOR)

e) Dapatkan nama-nama mahasiswa dan nama departemen utamanya

(MAJOR) yang mengambil (enroll) salah satu dari semua mata kuliah

College Geometry. (Gunakan operator “like” dan string matching

character dalam query anda)

Page 6: Tugas #3 SQL.pdf

f) Untuk departemen (sebagai MAJOR) yang tidak mempunyai

mahasiswa yang mengambil mata kuliah College Geometry, dapatkan

nama departemen dan jumlah mahasiswa dari departemen tersebut

g) Dapatkan nama-nama mahasiswa yang mengambil mata kuliah yang

ditawarkan oleh departemen Computer Sciences maupun oleh

departemen Mathematics

h) Dapatkan perbedaan usia antara mahasiswa tertua dan mahasiswa

termuda dari semua mahasiswa yang terdaftar di departemen

Computer Sciences (sebagai MAJOR)

i) Untuk setiap departemen yang memiliki satu atau lebih mahasiswa

(sebagai MAJOR) dengan IP (gpa) kurang dari 1.0, dapatkan nama

departemen beserta rataan IP dari semua mahasiswa yang terdaftar

pada departemen tersebut

j) Dapatkan ID (sid) dan nama mahasiswa (sname) beserta IP (gpa)

dari semua mahasiswa yang mengambil semua mata kuliah yang

ditawarkan oleh departemen Civil Engineering

Page 7: Tugas #3 SQL.pdf

4. Dengan menggunakan skema basis data COMPANY, tuliskan spesifikasi SQL View di bawah ini.a) Sebuah view yang terdiri dari nama pegawai, nama supervisor,

dan gaji pegawai untuk setiap pegawai yang bekerja di departemen ‘Research’

b) Sebuah view yang terdiri dari nama proyek, nama departemen pengendali proyek, jumlah pegawai, dan total jam per minggunya dari semua pegawai yang bekerja pada proyek tersebut (untuk setiap proyek)

c) Sebuah view yang terdiri dari nama proyek, nama departemen pengendali proyek, jumlah pegawai, dan total jam per minggunya dari semua pegawai yang bekerja pada proyek tersebut (untuk setiap proyek yang mempunyai lebih dari satu pegawai yang bekerja pada proyek tersebut)

Page 8: Tugas #3 SQL.pdf

5. Perhatikan satu set skema relasi berikut:

MAHASISWA (NIM: integer, Nama: string, jurusan: string, tgllahir: date)

KELAS_KULIAH (Nama_kls_kul: string, sks: integer,

jadwal_mulai: time, ruang: string, Kode_dosen: integer)

PESERTA_KULIAH (NIM: integer, Nama_kls_kul: string)

DOSEN (Kode_dosen: integer, Nama_dosen: string, Jurusan: string)

Makna dari relasi-relasi di atas dapat diinterpretasi dengan mudah. Attribut-attribut yang digarisbawahi adalah primary key. Attribut bukan primary key dengan nama attribut yang sama menyatakan kunci tamu.

5.1 Tuliskan SQL statement yang diperlukan untuk membuat relasi-relasi di atas, termasuk spesifikasi semua integrity constraints terkait dengan primary key dan foreign key

Page 9: Tugas #3 SQL.pdf

5.2 Tuliskan spesifikasi SQL untuk general contraint di bawah ini yang harus diberlakukan pada relasi-relasi di atas dengan menggunakan CHECKconstraints (pada attribut dan/atau pada baris) atau ASSERTION constraint. Jika contraint tersebut tidak dapat dinyatakan dengan salah satu dari kedua jenis constraint tersebut, jelaskan mengapa? Untuk setiap constraint, jelaskan operasi apa (insert, delete, dan update) yang harus dikenakan pada relasi-relasi tertentu guna memaksakan constraint?

(a) Jumlah peserta pada setiap kelas kuliah harus minimum terdiri dari 5 mahasiswa dan maksimum 50 mahasiswa

(b) Setiap dosen harus mengajar minimum dua kelas kuliah

(c) Tidak boleh terdapat lebih dari satu kelas kuliah yang dialokasikan pada ruang dan waktu yang sama

(d) Dosen-dosen yang berasal dari jurusan yang berbeda tidak boleh mengajar pada ruang yang sama

Page 10: Tugas #3 SQL.pdf

6. Perhatikan skema relasi di bawah ini (attribut yang digarisbawahi adalah primary keys). Attribut pidmgr menyatakan ID pegawai dari manajer suatu departemen (mengacu ke attribut pid pada relasi Pegawai). Sedang attribut pid dan did pada relasi Bekerja masing-masing mengacu pada attribut pid(relasi Pegawai) dan pada attribut did (relasi Departemen).

Tuliskan SQL trigger untuk mejamin bahwa contraint berikut berlaku dalam basis tersebut: jika gaji seorang manajer dinaikkan menjadi suatu nilai tertentu, maka semua karyawan dari departemen yang dipimpinnya harus dinaikkan sebesar 15% dari kenaikan gaji manajer tersebut. Selain itu, bujet dari departemen yang dipimpinnya harus ditambah dengan besarnya kenaikan gaji si manajer ditambah total kenaikan gaji dari semua pegawai yang dipimpinnya.

Pegawai (pid, nama, usia, gaji)

Bekerja (pid, did, tglbekerja)

Departemen (did, nama, bujet, pidmgr)

Page 11: Tugas #3 SQL.pdf

Soal 7 s.d 12 dkerjakan sebagai bagian dari tugas praktikum

7. Tugas ini harus diimplementasikan di lab dengan menggunakan SQL Server DBMS dan Java. Gunakan basis data di samping untuk membuat sebuah program dengan menggunakan emmbedded SQL (SQLJ) dan Java sebagai bahasa induknya. Program menerima masukan berupa nama mahasiswa dan mencetak IP rata-rata dari mahasiswa tersebut (Asumsikan bahwa nilai A=4, B=3, C=2, D=1, dan E=0)

Page 12: Tugas #3 SQL.pdf

8. Sama seperti soal nomor 4, tetapi gunakan basis data perpustakaan dengan skema seperti pada gambar di bawah. Untuk ini, program yang harus dibuat adalah mencetak kode buku, judul buku, kartu dan nama peminjam, nama cabang perpustakaan di mana buku tersebut dipinjam, serta tanggal pengembaliannya untuk semua koleksi buku yang batas waktu pinjamnya sudah terlewati

Page 13: Tugas #3 SQL.pdf

9. Ulangi soal nomor 4, tetapi gunakan JDBC sebagai pengganti SQLJ

10.Ulangi soal nomor 5, tetapi gunakan JDBC sebagai pengganti SQLJ

11.Ulangi soal nomor 4, tetapi tuliskan sebuah fungsi dalam SQL/PSM

12.Dengan menggunakan basis data COMPANY yang digunakan sebagai contoh dalam kuliah, buat sebuah fungsi dalam SQL/PSM untuk menghitung nilai median dari gaji (salary) untuk semua karyawan