Anda di halaman 1dari 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

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.

Gambar 1: Skema Basis Data LIBRARY (untuk soal nomor 1 dan 2)

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)

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 Dapatkan nama-nama mata kuliah (cname), kode mata kuliah (cno) untuk semua kelas kuliah (SECTION) dengan jumlah peserta kurang dari 5 orang
Dapatkan semua nama (sname) dan nomor ID (sid) mahasiswa yang mengambil (enroll) kelas kuliah (SECTION) terbanyak Dapatkan nama-nama departemen yang mempunyai satu atau lebih mahasiswa dengan usia kurang dari 18 tahun sebagai departemen utamanya (MAJOR)

b)

c) d)

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)

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

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)

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 relasirelasi di atas, termasuk spesifikasi semua integrity constraints terkait dengan primary key dan foreign key

5.2 Tuliskan spesifikasi SQL untuk general contraint di bawah ini yang harus

diberlakukan pada relasi-relasi di atas dengan menggunakan CHECK constraints (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

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)

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)

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

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

Anda mungkin juga menyukai