Nama : Bintang Sabda Esa NIM : 14102013 Kelas : 3 IF A UAS BASIS DATA 1. Lakukan analisis terhadap CV Ayo Baca dan buatlah CDM dan PDM pada studi kasus tersebut kemudian beri penjelasan untuk setiap langkah pembuatan CDM dan PDM nya! 2. Tampilkan query untuk memasukkan 3 data pada masing-masing tabel yg telah dibuat dan jelaskan arti query yg ditulis! 3. Tampilkan data dengan menggunakan JOIN untuk minimal 2 tabel. Simpan query dan tampilkan hasilnya. Jelaskan arti query yg ditulis! 4. Apakah yg dimaksud dengan TRIGGER? 5. Buat 1 contoh TRIGGER pada database yg telah dibuat dan jelaskan arti dari query tersebut! Jawab : 1. Pembuatan Conceptual Data Model Membuka apliasi PowerDesigner, kemudian klick new, pilih Conceptual Data Models, kemudian klick Conceptual Diagram. Kemdian buatlah entitas (tabel) dengan menggunakan menu berikut :
Kemudian beri judul/nama pada setiap entita (tabel) dan isikan data atributnya hingga seperti berikut : *Jk = gender, saat di database variable akan diubah menjadi enum Selanjutnya yaitu dengan membuat relasi antar entity, dengan cara melakukan klick pada icon relationship. Kemudian hubungan entity/entitas hingga menjadi seperti berikut :
Sebelum ke tahap selanjutnya periksa terlebih dahulu CDM yang telah kita buat, apakah ada error/ tidak dengan cara menekan tombol F4 lalu klik ok. * Tidak terdapat error dan warning pada pengecekan, berarti pembuatan CDM benar.
Pembuatan Physical Data Model Setelah selesai membuat CDM selanjutnya adalah pembuatan PDM dengan cara klick tools kemudian pilih generate physical data model, Kemudian akan tampil pop-up seperti gambar dibawah ini,
Pada kolom name isikan PDM_Rental_Komik, pada DBMS pilih MYSQL 5.0 (menyesuaikan versi DBMS masing masing). Kemudian pada tab detail, form prefix diisikan tbl_, pada update rule dipilih cascade agar bisa melakukan update pada relationship. Pada delete rule dipilih cascade agar bisa melakukan delete pada relationship. Kemudian klik apply dan ok. Kemudian hasilnya akan seperti gambar berikut, *PDM_rental_komik
2. Memasukan Data a. Tbl_komik QUERY : INSERT INTO `rental_komik`.`tbl_komik` (`KD_KOMIK`,`ID_KATEGORI`,`JUDUL_KOMIK`,`PENGARANG`,`ISSN_ISBN`,`PENERBIT`,`TAHUN_TERBIT`,`RESUME`)VALUES ('1011', '1', 'Saitama The Raid Man', 'Khisimoto', '13131313', 'Japan station', '2011', 'Seorang anak muda yang selama hidupnya bercita - cita menjadi ESPER.'); Keterangan: Memasukan data ke tabel tbl_komik QUERY : INSERT INTO `rental_komik`.`tbl_komik` (`KD_KOMIK`, `ID_KATEGORI`, `JUDUL_KOMIK`, `PENGARANG`, `ISSN_ISBN`, `PENERBIT`, `TAHUN_TERBIT`, `RESUME`) VALUES ('1012', '3', 'Kyokai no Kanata', 'Mashasi.K', '13131414', 'Japan station', '2012', 'Sekumpulan remaja dengan kekuatan astral membasmi kedengkian manusia.'); Keterangan: Memasukan data ke tabel tbl_komik QUERY : INSERT INTO `rental_komik`.`tbl_komik` (`KD_KOMIK`, `ID_KATEGORI`, `JUDUL_KOMIK`, `PENGARANG`, `ISSN_ISBN`, `PENERBIT`, `TAHUN_TERBIT`, `RESUME`) VALUES ('1013', '2', 'Plastic Memori', 'Sugiwara', '13131515', 'Tokyo CN', '2012', 'Kisah seorang pencari kerja yang menyukai partner kerjanya'); Keterangan: Memasukan data ke tabel tbl_komik Berikut hasilnya: b. Tbl_kategori QUERY : INSERT INTO tbl_kategori (ID_KATEGORI, DESKRIPSI) VALUES (1, 'Komedi'); Keterangan: Memasukan data ke tabel tbl_kategori. QUERY : INSERT INTO tbl_kategori (ID_KATEGORI, DESKRIPSI) VALUES (2, 'Romantis'); Keterangan: Memasukan data ke tabel tbl_kategori. QUERY : INSERT INTO tbl_kategori (ID_KATEGORI, DESKRIPSI) VALUES (3, 'Super Hero'); Keterangan: Memasukan data ke tabel tbl_kategori.
QUERY : INSERT INTO tbl_kategori (ID_KATEGORI, DESKRIPSI) VALUES (4, 'Drama'); Keterangan: Memasukan data ke tabel tbl_kategori. Berikut hasilnya: c. Tbl_anggota QUERY : INSERT INTO `rental_komik`.`tbl_anggota` (`KD_ANGGOTA`, `NAMA_ANGGOTA`, `JK_ANGGOTA`, `ALAMAT_ANGGOTA`, `NO_HP_ANGGOTA`, `EMAIL_ANGGOTA`, `NO_KTP`, `NO_KARTU_PELAJAR`) VALUES ('1231', 'Bintang', 'L', 'Lengkong Rt4/Rw2 Jln. Cikura No. 03', '62818612433', 'bintangsabdaesa@gmail.com', '111144442211', '14102013'); Keterangan: Memasukan data ke tabel tbl_anggota. QUERY : INSERT INTO `rental_komik`.`tbl_anggota` (`KD_ANGGOTA`, `NAMA_ANGGOTA`, `JK_ANGGOTA`, `ALAMAT_ANGGOTA`, `NO_HP_ANGGOTA`, `EMAIL_ANGGOTA`, `NO_KTP`, `NO_KARTU_PELAJAR`) VALUES ('1232', 'Bagus', 'L', 'Depok Rt16/Rw2 Jln. Cindrawasih No. 123', '628122451312', 'bagus@gmail.com', '111155666611', '14102011'); Keterangan: Memasukan data ke tabel tbl_anggota. QUERY : INSERT INTO `rental_komik`.`tbl_anggota` (`KD_ANGGOTA`, `NAMA_ANGGOTA`, `JK_ANGGOTA`, `ALAMAT_ANGGOTA`, `NO_HP_ANGGOTA`, `EMAIL_ANGGOTA`, `NO_KTP`, `NO_KARTU_PELAJAR`) VALUES ('1233', 'Putri', 'P', 'Bekasi Rt1/Rw14 Jln. Perdana No. 57', '62822456332', 'utiaylin@gmail.com', '111155888822', '14102033'); Keterangan: Memasukan data ke tabel tbl_anggota. Berikut Hasilnya:
d. Tbl_karyawan QUERY : INSERT INTO `rental_komik`.`tbl_karyawan` (`NIK`, `NAMA_KARYAWAN`, `JK_KARYAWAN`, `BAGIAN_KARYAWAN`, `ALAMAT_KARYAWAN`, `NO_HP_KARYAWAN`, `EMAIL_KARYAWAN`) VALUES ('9123', 'Aylin', 'P', 'OP Peminjaman', 'Jln. Karanganyar No.123', '628224292439', 'aylin@gmail.com'); Keterangan: Memasukan data ke tabel tbl_karyawan. QUERY : INSERT INTO `rental_komik`.`tbl_karyawan` (`NIK`, `NAMA_KARYAWAN`, `JK_KARYAWAN`, `BAGIAN_KARYAWAN`, `ALAMAT_KARYAWAN`, `NO_HP_KARYAWAN`, `EMAIL_KARYAWAN`) VALUES ('9124', 'Rahmat', 'L', 'OP Pengembalian', 'Jln. Karanganyar No.07', '6282244561', 'rahmat@gmail.com'); Keterangan: Memasukan data ke tabel tbl_karyawan. QUERY : INSERT INTO `rental_komik`.`tbl_karyawan` (`NIK`, `NAMA_KARYAWAN`, `JK_KARYAWAN`, `BAGIAN_KARYAWAN`, `ALAMAT_KARYAWAN`, `NO_HP_KARYAWAN`, `EMAIL_KARYAWAN`) VALUES ('9125', 'Zuddin', 'L', 'Keamanan dan Tatatertib', 'Jln. Batuagung No.13', '6282255231', 'zuddin@gmail.com'); Keterangan: Memasukan data ke tabel tbl_karyawan. Berikut hasilnya : e. Tbl_peminjaman QUERY : INSERT INTO `rental_komik`.`tbl_peminjaman` (`KD_PINJAM`, `NIK`, `KD_KOMIK`, `KD_ANGGOTA`, `TGL_PINJAM`, `TGL_KEMBALI`) VALUES ('67001', '9123', '1011', '1231', '2016-01-01', '2016-01-04'), ('67002', '9123', '1012', '1232', '2016-01-01', '2016-01-04'), ('67003', '9123', '1013', '1233', '2016-01-01', '2016-01-04'); Keterangan: Memasukan data ke tbl_peminjaman dimana data data diwakili oleh kd_ primary key masing- masing. *saya menginputkan melalui localhost mysql. Berikut harilnya : f. Tbl_pengembalian QUERY : INSERT INTO `rental_komik`.`tbl_pengembalian` (`KD_KEMBALI`, `KD_KOMIK`, `KD_ANGGOTA`,
`TGL_JADWAL_KEMBALI`, `TGL_DIKEMBALIKAN`, `JML_HARI_TERLAMBAT`, `DENDA`, `TOTAL_DENDA`) VALUES ('76001', '1011', '1231', '2016-01-04', '2016-01-04', '0', '0', '0'), ('76002', '1012', '1232', '2016-01-04', '2016-01-06', '2', '500', '1000'), ('76003', '1013', '1233', '2016-01-04', '2016-01-04', '0', '0', '0'); Keterangan: Memasukan data ke tbl_peminjaman dimana data data diwakili oleh kd_ primary key masing- masing. *saya menginputkan melalui localhost mysql. 3. QUERY : SELECT * FROM tbl_komik INNER JOIN tbl_kategori ON tbl_komik.id_kategori = tbl_kategori.id_kategori; Keterangan: Menapilkan data dengan kondisi ID_KATEGORI dari tbl_komik dan tbl_kategori sama. Berikut hasilnya: 4. Triggermerupakan kode prosedural yang akan dieksekusi secara otomatis karena dipicu suatu kejadian/event (INSERT, UPDATE atau DELETE), baik itu sebelum atau sesudah event terjadi pada tabel. 5. Buat tabel log_judul_komik untuk mencatat log perubahan dari tbl_komik CREATE TABLE tbl_log_perubahan (TANGGAL_PERUBAHAN text, KETERANGAN text); Kemudian buat trigger LOG UPDATE dengan QUERY : CREATE TRIGGER update_tbl_komik AFTER UPDATE ON tbl_komik FOR EACH ROW INSERT INTO tbl_log_perubahan VALUES("Telah Diubah",NOW()); Keterangan : Membuat trigger bernama update_tbl_komik kemudian trigger akan otomatis berjalan setelah aksi update pada tabel tbl_komik, setelah itu akan dimasukan atau disimpan pada table yang telah dibuat tadi yaitu tbl_log_perubahan. Isinya yaitu now() - adalah waktu sekarang untuk mengisi pada field TANGGL_PERUBAHAN dan akan mengisi Telah Diubah pada kolom KETERANGAN.
Buat trigger LOG NEWdengan QUERY : CREATE TRIGGER new_tbl_komik AFTER INSERT ON tbl_komik FOR EACH ROW INSERT INTO tbl_log_perubahan VALUES("Komik Baru!",NOW()); Keterangan : Membuat trigger bernama new_tbl_komik kemudian trigger akan otomatis berjalan setelah aksi update pada tabel tbl_komik, setelah itu akan dimasukan atau disimpan pada table yang telah dibuat tadi yaitu tbl_log_perubahan. Isinya yaitu now() - adalah waktu sekarang untuk mengisi pada field TANGGL_PERUBAHAN dan akan mengisi Komik Baru! pada kolom KETERANGAN. Berikut Hasilnya : *Sebelumnya saya sudah melakukan perubahan dan penambahan judul komik