Nama : Faisal Yudo Hernawan NIM : 14102019 Kelas : 3 IF A UAS BASIS DATA 1. Lakukan analisis terhadap CV Ayo Baca dan buatlah CDM dan PDM pada studi kasus tersebut. Beri penjelasan untuk setiap langkah pembuatan CDM dan PDM nya. 2. Tampilkan query untuk memasukkan 3 data pada masing-masing tabel yg telah dibuat. 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 CDM : Membuka apliasi PowerDesigner, kemudian klick new, pilih Conceptual Data Models, kemudian klick Conceptual Diagram.
Kemudian langkah selanjutnya yaitu pembuatan entitas, caranya yaitu dengan memilih icon table jika disorot kursor maka akan muncul tulisan entity, kemudian drag and drop sesuai entitas yang dibutuhkan. Pada kasus ini saya membutuhkan 5 entitas.
Setelah dibubuat maka akan tampil seperti pada gambar dibawah ini, terdapat 6 entitas.
Setelah entitas dibuat, maka langkah selanjutnya member nama entitas dan mengisi attribute apa saja yang dibutuhkan, dengan cara mengklik 2 kali setiap entitas, kemudian pada tab general terdapat name maka isikan nama apa yang digunakan pada entitas tersebut. Pada kasus ini saya beri nama komik. Kemudian pada tab attributes isikan attribute apa saja yang terdapat pada entitas komik. Pada kasus ini di entitas komik terdapat attribute kode_komik, judul_komik, pengarang, issn_isbn, penerbit, jumlah_halaman, tahun_terbit, resume. Dimana kode_komik sebagai primary key dan mandatory. Setelah itu klick apply dan ok.
Setelah entitas 1 diisi, maka selanjutnya entitas yang kedua diisi dengan cara melakukan klick 2 kali pada entitas 2. Pada kolom name isikan kategori, kemudian pada tab attributes isikan id_kategori dan deskripsi. Dimana id_ketegori sebagai primary key dan mandatory. Setelah itu klick apply dan ok.
Setelah entitas 2 diisi, selanjutnya entitas ke 3 diisi dengan cara melakukan klik 2 kali pada entitas ke 3 selanjutnya isikan name dengan value peminjaman, kemudian pada tab attributes tambahkan kode_peminjaman, tanggal_peminjaman, tanggal_kembali, dan denda. Dimana kode_peminjaman sebagai primary key dan mandatory. Setelah itu klick apply dan ok.
Setelah entitas 3 diisi, selanjutnya entitas ke 4 diisi dengan cara melakukan klik 2 kali pada entitas ke 4 selanjutnya isikan name dengan value anggota, kemudian pada tab attributes tambahkan kode_anggota, nama_anggota, alamat_anggota, nohp_anggota, email_anggota, no_ktp_atau_kartu_pelajar. Kode_anggota sebagai primary key dan mandatory. Setelah itu klick apply dan ok.
Setelah entitas 4 diisi, selanjutnya entitas ke 5 diisi dengan cara melakukan klik 2 kali pada entitas ke 5 selanjutnya isikan name dengan value karyawan, kemudian pada tab attributes tambahkan kode_karyawan, nama_karyawan, alamat_karyawan, nohp_karyawan, email_karyawan. Kode_karyawan sebagai primary key dan mandatory. Setelah itu klick apply dan ok.
.
Mengisi entitas ke 6 diisi dengan cara melakukan klik 2 kali pada entitas ke 6 selanjutnya isikan name dengan value pengembalian, kemudian pada tab attributes tambahkan kode_kembali, tanggal_jadwal_kembali, tanggal_dikembalikan, jumlah_hari_setelah_2_hari, denda_perhari, total_denda. Kode_kembali sebagai primary key dan mandatory. Setelah itu klick apply dan ok
Setelah semuanya terisi maka akan tampil seperti pada gambar dibawah ini.
Selanjutnya yaitu dengan membuat relasi antar entity, dengan cara melakukan klick pada icon relationship kemudian arahkan pada entity 1 dengan yang lainnnya.
Menghubungkan entity komik dengan kategori, diberi nama memiliki, kemudian pada tab cardinalities dipilih many to one. Kemudian centang mandatory pada komik to kategori dan kategori to komik. Klick apply dan ok.
Menghubungkan entity peminjaman dengan komik, diberi nama meminjam, kemudian pada tab cardinalities dipilih many to one. Kemudian centang mandatory pada peminjaman to komik dan komik to peminjaman. Klick apply dan ok.
Menghubungkan entity karyawan dengan peminjaman, diberi nama melayani, kemudian pada tab cardinalities dipilih one to many. Kemudian centang mandatory pada karyawan to peminjaman dan peminjaman to karyawan. Klick apply dan ok.
Menghubungkan entity peminjaman dengan anggota, diberi nama digunakan, kemudian pada tab cardinalities dipilih many to one. Kemudian centang mandatory pada peminjaman to anggota dan anggota to peminjaman. Klick apply dan ok.
Menghubungkan entity anggota dengan pengembalian, diberi nama melakukan, kemudian pada tab cardinalities dipilih one to many. Kemudian centang mandatory pada anggota to pengembalian dan pengembalian to anggota. Klick apply dan ok.
Menghubungkan entity pengembalian dengan karyawan, diberi nama menanggapi, kemudian pada tab cardinalities dipilih many to one. Kemudian centang mandatory pada pengembalian to karyawan dan karyawan to pengembalian. Klick apply dan ok.
Menghubungkan entity komik dengan pengembalian, diberi nama mengembalikan, kemudian pada tab cardinalities dipilih one to many. Kemudian centang mandatory pada pengembalian to komik dan komik to pengembalian. Klick apply dan ok.
Setelah semua disambungkan dengan relationship maka akan tampil CDM seperti pada gambar dibawah ini.
Untuk memastikan kesalahan atau tidak dalam pembuatan CDM, dengan cara F4 dan klick ok.
Tidak terdapat error dan warning pada pengecekan, berarti pembuatan CDM benar. Pembuatan PDM : Setelah pembuatan CDM selesai, maka langkah selanjutnya pembuatan PDM dengan cara klick tools kemudian generate physical data model.
Setelah itu akan tampil kotak dialog seperti pada gambar dibawah ini. Pada kolom form name isikan PDM_UAS_BASDAT, pada DBMS pilih MYSQL 5.0. 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 klick apply dan ok.
Kemudian akan tampil PDM seperti pada gambar dibawah ini.
2. Memasukan data pada table tbl_kategori. QUERY : INSERT INTO tbl_kategori (ID_KATEGORI, DESKRIPSI) VALUES (1, 'Komedi'); PENJELASAN : Melakukan insert data pada tabel tbl_kategori, dimana ID_KATEGORI diisi 1 dan DESKRIPSI diisi Komedi. QUERY : INSERT INTO tbl_kategori (ID_KATEGORI, DESKRIPSI) VALUES (2, 'Romantis'); PENJELASAN : Melakukan insert data pada tabel tbl_kategori, dimana ID_KATEGORI diisi 2 dan DESKRIPSI diisi Romantis. QUERY : INSERT INTO tbl_kategori (ID_KATEGORI, DESKRIPSI) VALUES (3, 'Super Hero'); PENJELASAN : Melakukan insert data pada tabel tbl_kategori, dimana ID_KATEGORI diisi 3 dan DESKRIPSI diisi Super Hero. QUERY : INSERT INTO tbl_kategori (ID_KATEGORI, DESKRIPSI) VALUES (4, 'Drama'); PENJELASAN : Melakukan insert data pada tabel tbl_kategori, dimana ID_KATEGORI diisi 4 dan DESKRIPSI diisi Drama.
Memasukan data pada table tbl_komik. QUERY : INSERT INTO tbl_komik (KODE_KOMIK, ID_KATEGORI, JUDUL_KOMIK, PENGARANG, ISSN_ISBN, PENERBIT, JUMLAH_HALAMAN, TAHUN_TERBIT, RESUME) VALUES ('111', 1, 'Abdel & Temon', 'Tompel', '112144141', 'Yudhistira', '100', '2014', 'Cerita hummor persahabatan'); PENJELASAN : Melakukan insert data pada tabel tbl_komik, dimana KODE_KOMIK diisi 111, ID_KATEGORI diisi 1, JUDUL_KOMIK diisi Abdel & Temon, PENGARAN diisi Tompel, ISSN_ISBN diisi 112144141, PENERBIT diisi Yudhistirta, JUMLAH_HALAMAN diisi 100, TAHUN_TERBIT diisi 2014 dan RESUME diisi Cerita humor persahabatan. QUERY : INSERT INTO tbl_komik (KODE_KOMIK, ID_KATEGORI, JUDUL_KOMIK, PENGARANG, ISSN_ISBN, PENERBIT, JUMLAH_HALAMAN, TAHUN_TERBIT, RESUME) VALUES ('222', 2, 'Romeo & Juliet', 'Tukijo', '371874194', 'Air Langga', '200', '2015', 'Cerita cinta antara romeo dan juliet'); PENJELASAN : Melakukan insert data pada tabel tbl_komik, dimana KODE_KOMIK diisi 222, ID_KATEGORI diisi 2, JUDUL_KOMIK diisi Romeo & Juliet, PENGARAN diisi Tukijo, ISSN_ISBN diisi 371874194, PENERBIT diisi Air Langga, JUMLAH_HALAMAN diisi 200, TAHUN_TERBIT diisi 2015 dan RESUME diisi Cerita cinta antara romeo dan juliet.
QUERY : INSERT INTO tbl_komik (KODE_KOMIK, ID_KATEGORI, JUDUL_KOMIK, PENGARANG, ISSN_ISBN, PENERBIT, JUMLAH_HALAMAN, TAHUN_TERBIT, RESUME) VALUES ('333', 3, 'Superman', 'Paijo', '4545394', 'Air Langga', '240', '2012', 'Cerita perjuangan supermen'); PENJELASAN : Melakukan insert data pada tabel tbl_komik, dimana KODE_KOMIK diisi 333, ID_KATEGORI diisi 3, JUDUL_KOMIK diisi Superman, PENGARAN diisi Paijo, ISSN_ISBN diisi 4545394 , PENERBIT diisi Air Langga, JUMLAH_HALAMAN diisi 240, TAHUN_TERBIT diisi 2012 dan RESUME diisi Cerita perjuangan supermen.
Memasukan data pada table tbl_karyawan. QUERY : INSERT INTO tbl_karyawan (KODE_KARYAWAN, NAMA_KARYAWAN, ALAMAT_KARYAWAN, NOHP_KARYAWAN, EMAIL_KARYAWAN) VALUE (123, 'Paiman', 'Jl. Maju Mundur No 123', '08222222', '
[email protected]'); PENJELASAN : Melakukan insert data pada tabel tbl_karyawan, dimana KODE_KARYAWAN diisi 123, NAMA_KARYAWAN diisi Paiman, ALAMAT_KARYAWAN diisi Jl. Maju Mundur No 123, NOHP_KARYAWAN diisi 08222222, EMAIL_KARYAWAN diisi
[email protected]. QUERY : INSERT INTO tbl_karyawan (KODE_KARYAWAN, NAMA_KARYAWAN, ALAMAT_KARYAWAN, NOHP_KARYAWAN, EMAIL_KARYAWAN) VALUE (234, 'Dono', 'Jl. Maju Mundur No 234', '08444422', '
[email protected]'); PENJELASAN : Melakukan insert data pada tabel tbl_karyawan, dimana KODE_KARYAWAN diisi 234, NAMA_KARYAWAN diisi Dono, ALAMAT_KARYAWAN diisi Jl. Maju Mundur No 234, NOHP_KARYAWAN diisi 08444422, EMAIL_KARYAWAN diisi
[email protected]. QUERY : INSERT INTO tbl_karyawan (KODE_KARYAWAN, NAMA_KARYAWAN, ALAMAT_KARYAWAN, NOHP_KARYAWAN, EMAIL_KARYAWAN) VALUE (456, 'Tejo', 'Jl. Maju Mundur No 456', '0834343', '
[email protected]'); PENJELASAN : Melakukan insert data pada tabel tbl_karyawan, dimana KODE_KARYAWAN diisi 456, NAMA_KARYAWAN diisi Tejo,
ALAMAT_KARYAWAN diisi Jl. Maju Mundur No 456, NOHP_KARYAWAN diisi 0834343, EMAIL_KARYAWAN diisi
[email protected].
Memasukan data pada table tbl_anggota. QUERY : INSERT INTO tbl_anggota (KODE_ANGGOTA, NAMA_ANGGOTA, ALAMAT_ANGGOTA, NOHP_ANGGOTA, EMAIL_ANGGOTA, NO_KTP_ATAU_KARTU_PELAJAR) VALUES ('1001', 'Faisal Yudo Hernawan', 'Jl. Maju Jaya Abadi no 3', '82242698', '
[email protected]','33128198391891'); PENJELASAN : Melakukan insert data pada tabel tbl_anggota, dimana KODE_ANGGOTA diisi 1001, NAMA_ANGGOTA diisi Faisal Yudo Hernawan, ALAMAT_ANGGOTA diisi Jl. Maju Jaya Abadi no 3, NOHP_ANGGOTA diisi 82242698, EMAIL_ANGGOTA diisi
[email protected], NO_KTP_ATAU_KARTU_PELAJAR diisi 33128198391891. QUERY : INSERT INTO tbl_anggota (KODE_ANGGOTA, NAMA_ANGGOTA, ALAMAT_ANGGOTA, NOHP_ANGGOTA, EMAIL_ANGGOTA, NO_KTP_ATAU_KARTU_PELAJAR) VALUES ('1005', 'Katrina Larasati Utami', 'Jl. Maju Mundur Abadi no 2', '82224244', '
[email protected]','827582752'); PENJELASAN : Melakukan insert data pada tabel tbl_anggota, dimana KODE_ANGGOTA diisi 1005, NAMA_ANGGOTA diisi Katrina Larasati Utami, ALAMAT_ANGGOTA diisi Jl. Maju Mundur no 2, NOHP_ANGGOTA diisi 82224244, EMAIL_ANGGOTA diisi
[email protected], NO_KTP_ATAU_KARTU_PELAJAR diisi 827582752. QUERY : INSERT INTO tbl_anggota (KODE_ANGGOTA, NAMA_ANGGOTA, ALAMAT_ANGGOTA, NOHP_ANGGOTA, EMAIL_ANGGOTA, NO_KTP_ATAU_KARTU_PELAJAR) VALUES ('1010', 'Hafid Hermansyah', 'Jl. Maju Mundur Abadi no 1', '38438888', '
[email protected]','874327482782'); PENJELASAN : Melakukan insert data pada tabel tbl_anggota, dimana KODE_ANGGOTA diisi 1010, NAMA_ANGGOTA diisi Hafid Hermansyah, ALAMAT_ANGGOTA diisi Jl. Maju Mundur Abadi no 1, NOHP_ANGGOTA diisi
38438888, EMAIL_ANGGOTA diisi NO_KTP_ATAU_KARTU_PELAJAR diisi 874327482782.
[email protected],
Memasukan data pada table tbl_peminjaman QUERY : INSERT INTO tbl_peminjaman (KODE_PEMINJAMAN, KODE_ANGGOTA, KODE_KARYAWAN, KODE_KOMIK, TANGGAL_PEMINJAMAN, TANGGAL_KEMBALI) VALUES ('2001', '1001', '123', '111', '2016-01-01', '2016-0107'); PENJELASAN : Melakukan insert data pada tabel tbl_peminjaman, dimana KODE_PEMINJAMAN diisi 2001, KODE_ANGGOTA diisi 1001, KODE_KARYAWAN diisi 123, KODE_KOMIK diisi 111, TANGGAL_PEMINJAMAN diisi 2016-01-01, TANGGAL_KEMBALI diisi 2016-0107. QUERY : INSERT INTO tbl_peminjaman (KODE_PEMINJAMAN, KODE_ANGGOTA, KODE_KARYAWAN, KODE_KOMIK, TANGGAL_PEMINJAMAN, TANGGAL_KEMBALI) VALUES ('2002', '1005', '456', '222', '2016-01-01', '2016-0107'); PENJELASAN : Melakukan insert data pada tabel tbl_peminjaman, dimana KODE_PEMINJAMAN diisi 2002, KODE_ANGGOTA diisi 1005, KODE_KARYAWAN diisi 456, KODE_KOMIK diisi 222, TANGGAL_PEMINJAMAN diisi 2016-01-01, TANGGAL_KEMBALI diisi 2016-0107..
QUERY : INSERT INTO tbl_peminjaman (KODE_PEMINJAMAN, KODE_ANGGOTA, KODE_KARYAWAN, KODE_KOMIK, TANGGAL_PEMINJAMAN, TANGGAL_KEMBALI) VALUES ('2003', '1010', '234', '333', '2016-01-01', '2016-01-07', '1500'); PENJELASAN : Melakukan insert data pada tabel tbl_peminjaman, dimana KODE_PEMINJAMAN diisi 2003, KODE_ANGGOTA diisi 1010, KODE_KARYAWAN diisi 234, KODE_KOMIK diisi 333, TANGGAL_PEMINJAMAN diisi 2016-01-01, TANGGAL_KEMBALI diisi 2016-0107.
Memasukan data pada table tbl_pengembalian. QUERY : INSERT INTO tbl_pengembalian (KODE_KEMBALI, KODE_KARYAWAN, KODE_KOMIK, KODE_ANGGOTA, TANGGAL_JADWAL_KEMBALI, TANGGAL_DIKEMBALIKAN, JUMLAH_HARI_SETELAH_2_HARI, DENDA, TOTAL_DENDA ) VALUES ('401', '123', '111', '1001', '2016-01-07', '2016-01-07', ‘0’, ‘0’, ‘0’); PENJELASAN : Melakukan insert data pada tabel tbl_pengembalian, dimana KODE_KEMBALI akan diisi dengan 401, KODE_KARYAWAN akan diisi dengan 123, KODE_KOMIK akan diisi dengan 111, KODE_ANGGOTA akan diisi dengan 1001, TANGGAL_JADWAL KEMBALI akan diisi dengan 2016-01-07, TANGGAL_DIKEMBALIKAN akan diisi dengan 2016-01-07, JUMLAH_HARI_SETELAH_2_HARI akan diisi dengan 0, DENDA akan diisi dengan 0 dan terakhir TOTAL_DENDA akan diisi dengan 0.
QUERY : INSERT INTO tbl_pengembalian (KODE_KEMBALI, KODE_KARYAWAN, KODE_KOMIK, KODE_ANGGOTA, TANGGAL_JADWAL_KEMBALI, TANGGAL_DIKEMBALIKAN, JUMLAH_HARI_SETELAH_2_HARI, DENDA, TOTAL_DENDA ) VALUES ('402', '456', '222', '1005', '2016-01-07', '2016-01-10', ‘1’, ‘500’, ‘500’); PENJELASAN : Melakukan insert data pada tabel tbl_pengembalian, dimana KODE_KEMBALI akan diisi dengan 402, KODE_KARYAWAN akan diisi dengan 456, KODE_KOMIK akan diisi dengan 222, KODE_ANGGOTA akan diisi dengan 1005, TANGGAL_JADWAL KEMBALI akan diisi dengan 2016-01-07, TANGGAL_DIKEMBALIKAN akan diisi dengan 2016-01-10, JUMLAH_HARI_SETELAH_2_HARI akan diisi dengan 1, DENDA akan diisi dengan 500 dan terakhir TOTAL_DENDA akan diisi dengan 500. QUERY : INSERT INTO tbl_pengembalian (KODE_KEMBALI, KODE_KARYAWAN, KODE_KOMIK, KODE_ANGGOTA, TANGGAL_JADWAL_KEMBALI, TANGGAL_DIKEMBALIKAN, JUMLAH_HARI_SETELAH_2_HARI, DENDA, TOTAL_DENDA ) VALUES ('403', '234', '333', '1010', '2016-01-07', '2016-01-11', ‘2’, ‘500’, ‘100’); PENJELASAN : Melakukan insert data pada tabel tbl_pengembalian, dimana KODE_KEMBALI akan diisi dengan 403, KODE_KARYAWAN akan diisi dengan 234, KODE_KOMIK akan diisi dengan 222, KODE_ANGGOTA akan diisi dengan 1010, TANGGAL_JADWAL KEMBALI akan diisi dengan 2016-01-07, TANGGAL_DIKEMBALIKAN akan diisi dengan 2016-01-11, JUMLAH_HARI_SETELAH_2_HARI akan diisi dengan 2, DENDA akan diisi dengan 500 dan terakhir TOTAL_DENDA akan diisi dengan 100.
3. QUERY : SELECT * FROM tbl_komik INNER JOIN tbl_kategori ON tbl_komik.ID_KATEGORI=tbl_kategori.ID_KATEGORI; PENJELASAN : Menampilkan semua data dari tbl_komik dan tbl_kategori menggunakan INNER JOIN dimana ID_KATEGORI pada tbl_komik harus sama dengan ID_KATEGORI pada tbl_kategori.
4. Trigger adalah stored procedure jenis khusus yang menempel pada tabel dan dieksekusi otomatis apabila terjadi manipulasi pada table tersebut. Trigger digunakan untuk memanggil satu atau beberapa perintah SQL secara otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE atau DELETE dari suatu tabel. 5. QUERY : CREATE TABLE log_judul_komik (TANGGAL_PERUBAHAN text, JENIS_PERUBAHAN text, JUDUL_KOMIK_LAMA text, JUDUL_KOMIK_BARU text); PENJELASAN : Membuat table yang digunakan untuk menyimpan perubahan yang dilakukan oleh trigger, table ini diberi nama log_judul_komik dimana dalam table ini terdapat field, TANGGAL_PERUBAHAN, JENIS_PERUBAHAN, JUDUL_KOMIK_LAMA dan JUDUL_KOMIK_BARU. QUERY ; CREATE TRIGGER log_tbl_komik AFTER UPDATE ON tbl_komik FOR EACH ROW INSERT INTO log_judul_komik VALUES(NOW(), 'UPDATE', OLD.JUDUL_KOMIK, NEW.JUDUL_KOMIK); PENJELASAN : Membuat trigger bernama log_tbl_komik kemudian aksi trigger akan dilakukan pada setelah aksi update pada tabel tbl_komik, setelah itu akan dimasukan atau disimpan pada table yang telah dibuat tadi yaitu log_judul_komik. Isinya yaitu now() maksutnya adalah waktu sekarang untuk mengisi pada field TANGGL_PERUBAHAN, UPDATE untuk mengisi pada field JENIS_PERUBAHAN, OLD.JUDUL_KOMIK maksutnya judul_komik sebelum diupdate untuk mengisi pada field JUDUL_KOMIK_LAMA, NEW.JUDUL_KOMIK maksutnya judul komik setelah diupdate untuk mengisi pada field JUDUL_KOMIK_BARU.
QUERY : UPDATE tbl_komik set JUDUL_KOMIK='Ada Apa Dengan Cinta 2' WHERE KODE_KOMIK=222; PENJELASAN : Melakukan update pada tbl_komik, dimana JUDUL_KOMIK dirubah menjadi Ada Apa Dengan Cinta 2 pada KODE_KOMIK 222. QUERY : SELECT * FROM log_judul_komik; PENJELASAN : Untuk membuktikan trigger jalan atau tidak, tampilkan data pada table log_judul_komik.