JAWABAN UAS BASDAT 1. Analisis Table CV Ayo Baca dan CDM & PDM. Table yang digunakan sebagai berikut Komik Id_komik Pengarang_komik Penerbit_komik Kategori_komik Judul_komik Karyawan Id_karyawan Nama_karyawan No_hp_karyawan Alamat_karyawan Member Id_member Nama_member Alamat_member KTP_member No_hp_member Email_member Transaksi peminjaman Id_transaksi Tgl_pinjam Tgl_kembali Total_pinjam Total_harga Denda Id_denda Jumlah_komik jumlah_hari_setelah_2_hari 1. Tahap pembuatan CDM dan PDM CV AYO BACA Untuk membuat CDM, 1. Buka Power Designer, kemudian pilih Create Model 2. Pilih Model Types -> Conceptual Data Model -> beri nama CV_AYO_BACA. 3. Buat entitas dengan cara klik icon entitas kemudian klik beberapa kali pada worksheet sesuai dengan analisa table yg telah dibuat sebelumnya. 4. Kemudian pilih mode kursor normal dan double klik pada salah satu entitas sehingga muncul seperti gambar dibawah ini
Pada tabel entitas karyawan pada kolom general isikan Name dengan nama member kemudian pilih tab attribut. 5. Pada tab atribut isikan atribut-atribut yang ada sesuai analisa tabel yang dibuat sebelumnya, pada gambar dibawah terlihat pada kotak M dan P di ceklis, jika M berarti Mandatory atau tidak boleh kosong, jika P berarti atribut tersebut merupakan primary key. Pada gambar di bawah id_member merupakan primary key dan tidak boleh kosong jadi keduanya dicentang. 6. Lakukan juga pengisian pada entitas yang lain sesuai analisa table yang dibuat sebelumnya yaitu karyawan, komik, transaksi_peminjaman, dan denda.
7. Setelah semua entitas dan atribut terisi, relasikan dengan klik tools relationship dan relasikan antar entitas, hingga seperti gambar dibawah ini. 8. Lakukan pengecekkan kebenaran dengan mengklik Tools -> Check Model 9. Setelah membuat CDM selanjutnya kita akan membuat PDM dengan cara klik menu tools kemudian pilih Generate Physical Data Model. 10. Setelah itu akan muncul jendela PDM Generation Options, pada kolom DBMS, pilih sesuai dengan versi yg kita gunakan, saat ini kita menggunakan mysql versi
5.62 jadi kita isi dengan MySQL 5.0 karena sama-sama versi 5, kolom Name diisi dengan nama PDM yang akan kita buat seperti pada gambar dibawah ini. 11. Setelah itu kita masuk Tab detail, pada kolom table prefix isikan dengan tbl_, dan pada delete rules pilih cascade seperti gambar dibawah. Setelah itu klik ok.
12. Hasil PDM 13. Selanjutnya pembuatan query dengan cara klik menu database -> klik generate database, kemudian muncul jendela seperti dibawah ini. 14. Isikan file name seperti gambar diatas kemudian klik OK.
15. Klik edit untuk menampilkan hasil query. 16. Hasil Script
/* DBMS name: MySQL 5.0 */ /* Created on: 09/01/2016 3:29:17 */ drop table if exists TBL_DENDA; drop table if exists TBL_KARYAWAN; drop table if exists TBL_KOMIK; drop table if exists TBL_MEMBER; drop table if exists TBL_TRANSAKSI_PEMINJAMAN; /* Table: TBL_DENDA */ create table TBL_DENDA ( ID_DENDA varchar(255) not null, ID_TRANSAKSI varchar(255), JUMLAH_KOMIK int not null, JUMLAH_HARI_KETERLAMBATAN_PENGEMBALIAN int not null, primary key (ID_DENDA) ); /* Table: TBL_KARYAWAN */ create table TBL_KARYAWAN ( ID_KARYAWAN varchar(255) not null, NAMA_KARYAWAN char(255) not null, NO_HP_KARYAWAN varchar(255) not null, ALAMAT_KARYAWAN varchar(255) not null, primary key (ID_KARYAWAN) ); /* Table: TBL_KOMIK */ create table TBL_KOMIK ( ID_KOMIK varchar(255) not null, ID_MEMBER varchar(255), ID_KARYAWAN varchar(255), JUDUL_KOMIK char(255) not null, KATEGORI_KOMIK char(255) not null, PENGARANG_KOMIK char(255), PENERBIT_KOMIK char(255), primary key (ID_KOMIK) ); /* Table: TBL_MEMBER */ create table TBL_MEMBER ( ID_MEMBER varchar(255) not null, ID_KARYAWAN varchar(255) not null, ID_TRANSAKSI varchar(255), NAMA_MEMBER char(255) not null, ALAMAT_MEMBER varchar(255) not null, KTP_MEMBER varchar(255) not null, KARTU_PELAJAR_MEMBER varchar(255) not null, NO_HP_MEMBER varchar(255) not null, EMAIL_MEMBER varchar(255) not null, primary key (ID_MEMBER) );
/* Table: TBL_TRANSAKSI_PEMINJAMAN */ create table TBL_TRANSAKSI_PEMINJAMAN ( ID_TRANSAKSI varchar(255) not null, ID_KARYAWAN varchar(255) not null, TGL_PINJAM date not null, TGL_KEMBALI date not null, TOTAL_PINJAM int not null, TOTAL_HARGA int not null, primary key (ID_TRANSAKSI) ); alter table TBL_DENDA add constraint FK_MEMBAYAR foreign key (ID_TRANSAKSI) references TBL_TRANSAKSI_PEMINJAMAN (ID_TRANSAKSI) on delete cascade on update restrict; alter table TBL_KOMIK add constraint FK_MEMASUKAN foreign key (ID_KARYAWAN) references TBL_KARYAWAN (ID_KARYAWAN) on delete cascade on update restrict; alter table TBL_KOMIK add constraint FK_MEMILIH foreign key (ID_MEMBER) references TBL_MEMBER (ID_MEMBER) on delete cascade on update restrict; alter table TBL_MEMBER add constraint FK_MELAKUKAN foreign key (ID_TRANSAKSI) references TBL_TRANSAKSI_PEMINJAMAN (ID_TRANSAKSI) on delete cascade on update restrict; alter table TBL_MEMBER add constraint FK_MEMBUATKAN foreign key (ID_KARYAWAN) references TBL_KARYAWAN (ID_KARYAWAN) on delete cascade on update restrict; alter table TBL_TRANSAKSI_PEMINJAMAN add constraint FK_MELAYANI foreign key (ID_KARYAWAN) references TBL_KARYAWAN (ID_KARYAWAN) on delete cascade on update restrict; 17. Import hasil diatas pada my sql, sebelumnya buat terlebih dahulu database baru dengan nama CV_AYO_BACA. 18. klik Import kemudian choose file, pilih file hasil generate database sebelumnya kemudian klik GO.
19. Gambar di bawah ini menunjukkan bahwa database berhasil diimport.
2. Tampilkan query untuk memasukkan 3 data pada masing-masing tabel yg telah dibuat. Jelaskan arti query yg ditulis. a) Pengisian tabel karyawan INSERT INTO `cv_ayo_baca`.`tbl_karyawan` (`ID_KARYAWAN`, `NAMA_KARYAWAN`, `NO_HP_KARYAWAN`, `ALAMAT_KARYAWAN`) VALUES ('K0001', 'Angel', '085727000911', 'JL.DI Panjaitan No:123 Purwokerto'), ('K0002', 'Bejo', '085727000912', 'JL.Kita Masih Panjang No:99 Purwokerto'), ('K0003', 'Celestial', '085727000913', 'Jl.Yang Pernah Dilalui No:09 Purwokerto'); Penjelasan : - INSERT INTO `cv_ayo_baca`. perintah untuk menambahkan data ke dalam database cv_ayo_baca - `tbl_karyawan` tabel yang digunakan dan yang akan dimasukan data. - (`ID_KARYAWAN`, `NAMA_KARYAWAN`, `NO_HP_KARYAWAN`, `ALAMAT_KARYAWAN`) Field yang terdapat pada tabel karyawan serta urutan field yang akan dimasukan data. - VALUES ('K0001', 'Angel', '085727000911', 'JL.DI Panjaitan No:123 Purwokerto'), ('K0002', 'Bejo', '085727000912', 'JL.Kita Masih Panjang No:99 Purwokerto'), ('K0003', 'Celestial', '085727000913', 'Jl.Yang Pernah Dilalui No:09 Purwokerto'); data yang dimasukan kedalam tabel karyawan dan sesuai urutan field yang diatas, data yang dimasukan pada kali ini sebanyak 3 data.
b) Pengisian Tabel Transaksi_Peminjaman INSERT INTO `cv_ayo_baca`.`tbl_transaksi_peminjaman` (`ID_TRANSAKSI`, `ID_KARYAWAN`, `TGL_PINJAM`, `TGL_KEMBALI`, `TOTAL_PINJAM`, `TOTAL_HARGA`) VALUES ('TRANS01', 'K0001', '2016-01-01', '2016-01-03', '3', '3000'), ('TRANS02', 'K0002', '2016-01-04', '2016-01-06', '4', '4000'), ('TRANS03', 'K0003', '2016-01-07', '2016-01-09', '5', '5000'); Penjelasan : - INSERT INTO `cv_ayo_baca`. perintah untuk menambahkan data ke dalam database cv_ayo_baca - `tbl_transaksi_peminjaman` tabel yang digunakan dan yang akan dimasukan data. - (`ID_TRANSAKSI`, `ID_KARYAWAN`, `TGL_PINJAM`, `TGL_KEMBALI`, `TOTAL_PINJAM`, `TOTAL_HARGA`) Field yang terdapat pada tabel transaksi_peminjaman serta urutan field yang akan dimasukan data. - VALUES ('TRANS01', 'K0001', '2016-01-01', '2016-01-03', '3', '3000'), ('TRANS02', 'K0002', '2016-01-04', '2016-01-06', '4', '4000'), ('TRANS03', 'K0003', '2016-01-07', '2016-01-09', '5', '5000') data yang dimasukan kedalam tabel transaksi_peminjaman dan sesuai urutan field yang diatas, data yang dimasukan pada kali ini sebanyak 3 data.
c) Pengisian Tabel Member INSERT INTO `cv_ayo_baca`.`tbl_member` (`ID_MEMBER`, `ID_KARYAWAN`, `ID_TRANSAKSI`, `NAMA_MEMBER`, `ALAMAT_MEMBER`, `KTP_MEMBER`, `KARTU_PELAJAR_MEMBER`, `NO_HP_MEMBER`, `EMAIL_MEMBER`) VALUES ('M0111', 'K0001', 'TRANS01', 'Arjuna', 'JL.Hos Notosuwiryo NO:01 Purwokerto', '14102001', '-', '085626123555', 'arjuna@gmail.com'), ('M0112', 'K0002', 'TRANS02', 'Bella', 'JL. S Parman NO:09 Cilacap', '14102002', '-', '086727889765', 'bella@gmail.com'), ('M0113', 'K0003', 'TRANS03', 'Ciripa', 'Jl Rajawali No:96 Purwokerto', '-', '15102009', '089765223456', 'ciripa@gmail.com'); Penjelasan : - INSERT INTO `cv_ayo_baca`. perintah untuk menambahkan data ke dalam database cv_ayo_baca - `tbl_member` tabel yang digunakan dan yang akan dimasukan data. - (`ID_MEMBER`, `ID_KARYAWAN`, `ID_TRANSAKSI`, `NAMA_MEMBER`, `ALAMAT_MEMBER`, `KTP_MEMBER`, `KARTU_PELAJAR_MEMBER`, `NO_HP_MEMBER`, `EMAIL_MEMBER`) Field yang terdapat pada tabel member serta urutan field yang akan dimasukan data. - VALUES ('M0111', 'K0001', 'TRANS01', 'Arjuna', 'JL.Hos Notosuwiryo NO:01 Purwokerto', '14102001', '-', '085626123555', 'arjuna@gmail.com'), ('M0112', 'K0002', 'TRANS02', 'Bella', 'JL. S Parman NO:09 Cilacap', '14102002', '-', '086727889765', 'bella@gmail.com'), ('M0113', 'K0003', 'TRANS03', 'Ciripa', 'Jl Rajawali No:96 Purwokerto', '-', '15102009', '089765223456', 'ciripa@gmail.com') data yang dimasukan kedalam tabel member dan sesuai urutan field yang diatas, data yang dimasukan pada kali ini sebanyak 3 data.
d) Pengisian Tabel Komik INSERT INTO `cv_ayo_baca`.`tbl_komik` (`ID_KOMIK`, `ID_MEMBER`, `ID_KARYAWAN`, `JUDUL_KOMIK`, `KATEGORI_KOMIK`, `PENGARANG_KOMIK`, `PENERBIT_KOMIK`) VALUES ('KOM01', 'M0111', 'K0001', 'Conan', 'Action', 'SURYAKUN', 'ERLANGGA'), ('KOM02', 'M0112', 'K0002', 'One Puch Man', 'Comedy', 'Surya', 'Erlangga'), ('KOM03', 'M0113', 'K0003', 'Naruto', 'Romance', 'Surya', 'Erlangga'); Penjelasan : - INSERT INTO `cv_ayo_baca`. perintah untuk menambahkan data ke dalam database cv_ayo_baca. - `tbl_komik` tabel yang digunakan dan yang akan dimasukan data. - (`ID_KOMIK`, `ID_MEMBER`, `ID_KARYAWAN`, `JUDUL_KOMIK`, `KATEGORI_KOMIK`, `PENGARANG_KOMIK`, `PENERBIT_KOMIK`) Field yang terdapat pada tabel member serta urutan field yang akan dimasukan data. - VALUES ('KOM01', 'M0111', 'K0001', 'Conan', 'Action', 'SURYAKUN', 'ERLANGGA'), ('KOM02', 'M0112', 'K0002', 'One Puch Man', 'Comedy', 'Surya', 'Erlangga'), ('KOM03', 'M0113', 'K0003', 'Naruto', 'Romance', 'Surya', 'Erlangga'); data yang dimasukan kedalam tabel komik dan sesuai urutan field yang diatas, data yang dimasukan pada kali ini sebanyak 3 data.
e) Pengisian tabel denda INSERT INTO `cv_ayo_baca`.`tbl_denda` (`ID_DENDA`, `ID_TRANSAKSI`, `JUMLAH_KOMIK`, `JUMLAH_HARI_KETERLAMBATAN_PENGEMBALIAN`) VALUES ('D01', 'TRANS01', '2', '2'), ('D02', 'TRANS02', '1', '2'), ('D03', 'TRANS03', '3', '2'); Penjelasan : - INSERT INTO `cv_ayo_baca`. perintah untuk menambahkan data ke dalam database cv_ayo_baca - `tbl_denda` tabel yang digunakan dan yang akan dimasukan data. - (`ID_DENDA`, `ID_TRANSAKSI`, `JUMLAH_KOMIK`, `JUMLAH_HARI_KETERLAMBATAN_PENGEMBALIAN`) Field yang terdapat pada tabel denda serta urutan field yang akan dimasukan data. - VALUES ('D01', 'TRANS01', '2', '2'), ('D02', 'TRANS02', '1', '2'), ('D03', 'TRANS03', '3', '2') data yang dimasukan kedalam tabel komik dan sesuai urutan field yang diatas, data yang dimasukan pada kali ini sebanyak 3 data. 3. Query JOIN (dengan klausa WHERE) untuk 3 Tabel SELECT tbl_transaksi_peminjaman.id_transaksi, tbl_member.nama_member, tbl_komik.judul_komik, tbl_komik.kategori_komik, tbl_transaksi_peminjaman.tgl_pinjam, tbl_transaksi_peminjaman.tgl_kembali FROM tbl_transaksi_peminjaman, tbl_member, tbl_komik WHERE tbl_transaksi_peminjaman.id_transaksi=tbl_member.id_transaksi AND tbl_member.id_member=tbl_komik.id_member
Penjelasan : - SELECT tbl_transaksi_peminjaman.id_transaksi, perintah memilih tabel dan field yang akan ditampilkan, field yang akan ditampilkan ID_TRANSAKSI dari tabel tbl_transaksi_peminjaman. - tbl_member.nama_member, field yang akan ditampilkan NAMA_MEMBER dari tabel tbl_member. - tbl_komik.judul_komik, field yang akan ditampilkan JUDUL_KOMIK dari tabel tbl_komik - tbl_komik.kategori_komik, field yang akan ditampilkan KATEGORI_KOMIK dari tabel tbl_komik. - tbl_transaksi_peminjaman.tgl_pinjam, field yang akan ditampilkan TGL_PINJAM dari tabel tbl_transaksi_peminjaman. - tbl_transaksi_peminjaman.tgl_kembali field yang akan ditampilkan TGL_KEMBALI dari tabel tbl_transaksi_peminjaman. - FROM tbl_transaksi_peminjaman, tbl_member, tbl_komik Asal tabel yang akan ditampilkan datanya. - WHERE tbl_transaksi_peminjaman.id_transaksi=tbl_member.id_transaksi AND tbl_member.id_member=tbl_komik.id_member kondisi dimana antara 2 tabel yang akan dihubungkan dengan menggunakan field yang sama pada kedua tabel tersebut. Pada kondisi diatas tabel tbl_transaksi_peminjaman dengan field ID_TRANSAKSI dihubungkan dengan tabel tbl_member dengan field yang sama seperti pada tabel tbl_transaksi_peminjaman yaitu field ID_TRANSAKSI, begitu pula selanjutnya. 4. TRIGGER Trigger merupakan sekumpulan perintah atau sintaks yang akan secara otomatis dijalankan jika terjadi operasi tertentu dalam tabel atau view. Trigger digunakan untuk memanggil satu atau beberapa perintah SQL secara otomatis sebelum atau sesudah terjadi proses INSERT, UPDATE atau DELETE dari suatu tabel.
5. CREATE TRIGGER insert_tbl_member AFTER INSERT ON tbl_member FOR EACH ROW INSERT INTO log_member VALUES("Tambah data",now()); Penjelasan : - CREATE TRIGGER insert_tbl_member membuat triger dengan nama insert_tbl_member. - AFTER INSERT ON tbl_member Trigger akan dijalankan otomatis setelah ada instruksi insert pada tbl_member. - FOR EACH ROW INSERT INTO log_member VALUES("Tambah data",now()); Secara otomatis akan mengisi tabel log_member dengan Tambah data dan tanggal serta waktu pada saat dilakukan insert di tbl_member.