BAB 4 PERANCANGAN DAN IMPLEMENTASI 4.1 Perancangan Sistem Setelah melakukan interview dan analisis pada sistem yang sudah berjalan, maka akan dilakukan perubahan sistem yang terdahulu digunakan. Sistem yang ada sudah terkomputerisasi dan berjalan cukup baik, namun hanya ada beberapa fitur yang dilakukan perubahan. Oleh karena itu kan dirancang basis data sesuai dengan kebutuhan perpustakaan. Tahap-tahap perancangan sistem basis data pada Perpustakaan SMA Negeri 2 Jakarta, meliputi: 1. Perancangan Basis Data Konseptual (Conseptual Database Design) 2. Perancangan Basis Data Logikal (Logical Database Design) 3. Perancangan Basis Data Physical (Physical Database Design) 4.1.1 Perancangan Basisdata Konseptual Perancangan Basisdata Konseptual meruapakan suatu proses pembuatan dari suatu entitas dengan menggunakan data yang telah diperoleh dari perpustakaan. Ada beberapa langkah penting dalam menentukan rancangan basisdata secara konseptual, diantaranya : 1. Mengidentifikasi tipe entitas 2. Mengidentifikasi tipe Relasional 3. Mengidentifikasi Atribut 4. Menentukan Domain Atribut 5. Menentukan Candidate Key, Primary Key, dan alternate key 6.Mempertimbangkan penggunaan konsep permodelan tingkat tinggi 90
91 7. Memeriksa redudansi 8. Validasi Model Konseptual dengan Transaksi User 9. Melakukan review model data konseptual dengan user 4.1.1.1 Mengidentifikasi Tipe Entity Table 4.1 Tabel Tipe Entity Nama entitas deskripsi Nama lain Kejadian Staff Berisi informasi Admin Satu staff staff yang melayani satu bekerja di SMA atau banyak Negeri 2 Gajah pengembalian Mada Anggota Buku Peminjaman Berisi informasi mengenai anggota perpustakaan Berisi informasi mengenai buku yang ada di perpustakaan Berisi informasi mengenai transaksi - Satu member dapat melakukan banyak peminjaman atau tidak sama sekali - Satu buku bisa terdapat dalam satu atau banyak penminjaman - Dalam satu peminjaman anggota dapat
92 peminjaman di perpustakaan meminjam satu atau lebih buku Pengembalian HistoryPeminjaman KategoriBuku PenggatianBuku SMA Negeri 2 Berisi informasi mengenai transaksi pengembalian buku di perpustkaan Berisi informasi history peminjaman dari setiap anggota perpustakaan Berisi informasi mengenai jenisjenis buku yang ada di perpustakaan Berisi informasi mengenai buku yang diganti - Dalam satu pengembalian anggota dapat mengembalikan satu atau lebih buku - Dalam satu history memiliki satu atau lebih data peminjaman - Satu buku bisa memiliki banyak kategori - Jika terjadi kehilangan atau kerusakan makan
93 Jabatan Berisi informasi mengenai anggota harus mengganti buku dengan yang sama dan baru - Setiap anggota perpustakaan jabatan anggota setiap memiliki jabatan perpustakaan 4.1.1.2 Menentukan Multiplicity Constraints dari Tipe Relasi Tabel 4.2 Tabel Tipe Relationship Nama Entity Multiplicity Relationship Multiplicity Nama Entity Staff 1..1 Melayani 1..* Pengembalian Anggota 1..1 Memiliki 0..* HistoryPeminjaman 1..1 Melakukan 0..* Peminjaman 1..1 Melakukan 0..* Pengembalian
94 1..* Memiliki 1..1 Jabatan 1..1 Melakukan 0..* PenggantianBuku Buku 1..* Memiliki 1..1 KategoriBuku Peminjaman 1..* Mencakup 1..* Buku 1..1 Mempengaruhi 1..1 HistoryPeminjaman 1..1 Melakukan 0..1 PenggantianBuku Pengembalian 1..* Mencakup 1..* Buku
95 Gambar 4.1 ERD Konseptual awal 4.1.1.3 Mengidentifikasi Tipe dan Menggabungkan Atribut Setiap Entity Table 4.3 Tabel Atribut Entity Nama entitas Attribute Deskripsi Tipe data Nul l Multi value d Staff NIP Berisi kode Int No No nomer induk pegawai / staff
96 perpustakaan Nama Berisi nama staff perpustakaan Varchar(50) No No Alamat Berisi alamat Varchar(10 No No staff 0) perpustakaan NoTelp Berisi nomor telepon staff perpustakaan Varchar(12) No Yes Password Berisi password setiap staff perpustakaan Varchar(10) No No JenisKelamin Berisi jenis kelamin staff (L untuk lakilaki dan P untuk perempuan) Boolean No No
TglLahir Berisi tanggal lahir staff perpustakaan Date No No 97 Anggota NoIndukAnggota Berisi nomor Int No No induk anggota yang dimiliki setiap anggota perpustakaan Nama Berisi nama anggota perpustakaan Varchar(50) No No Alamat Berisi alamat Varchar(10 No No anggota 0) perpustakaan NoTelp Berisi nomor telepon anggota perpustakaan Varchar(12) No Yes Password Berisi password anggota Varchar(10) No No
98 perpustakaan KodeJabatan Berisi kode jabatan setiap anggota Varchar(10) No No JenisKelamin Berisi jenis kelamin anggota perpustakaan (L untuk lakilaki dan P untuk perempuan) Boolean No No TglLahir Berisi tanggal lahir anggota perpustakaan Date No No Peminjaman KodePeminjaman Berisi kode Varchar(10) No No setiap transaksi peminjaman yang terjadi di perpustakaan
NoIndukAnggota Berisi nomor induk anggota yang dimiliki setiap anggota perpustakaan Int No No 99 NoIndukBuku Berisi nomor induk yang terdapat pada setiap buku Varchar(10) No No JumlahPeminjaman Berisi jumlah buku yang dipinjam dalam sebuah transaksi peminjaman Int No No TanggalPeminjaman Berisi tanggal dilakukannya transaksi peminjaman Date No No TanggalHarusKemb ali Berisi tanggal berakhirnya masa Date No No
100 peminjaman Pengembalian KodePengembalian Berisi kode Varchar(10) No No setiap transaksi pengembalian yang terjadi di perpustakaan NoIndukBuku Berisi nomor induk yang terdapat pada setiap buku Varchar(10) No No KodePeminjaman Berisi kode setiap transaksi peminjaman yang terjadi di perpustakaan Varchar(10) No No NoIndukAnggota Berisi nomor induk anggota yang dimiliki setiap anggota Int No No
101 perpustakaan TanggalPengembalia n Berisi tanggal berlangsungny a transaksi pengembalian Date No No NIP Berisi kode nomer induk pegawai / staff perpustakaan Int No No Buku NoIndukBuku Berisi nomor Varchar(10) No No induk yang terdapat pada setiap buku Judul Berisi judul buku perpustakaan Varchar(50) No No Pengarang Berisi nama pengarang yg terdapat pada buku Varchar(50) No No
ISBN/ISSN Berisi kode ISBN/ISSN yang terdapat pada setiap buku 102 Varchar(20) No No Penerbit Berisi nama penerbit buku Varchar(40) No No TahunTerbit Berisi tahun diterbitkannya buku Varchar(4) No No KodeKategori Berisi kode dari setiap kategori buku Varchar(10) No No Sinopsis Berisi Varchar(10 Yes No gambaran 0) singkat tentang isi buku Stok Berisi jumlah stok buku yang terdapat Int No No
103 di perpustakaan KategoriBuku KodeKategori Berisi kode Varchar(10) No No dari setiap kategori buku NamaKategori Berisi nama jenis kategori buku Varchar(20) No No Jabatan KodeJabatan Berisi kode Varchar(10) No No jabatan dari setiap anggota perpustakaan NamaJabatan Berisi nama Varchar(20) No No jabatan setiap anggota perpustakaan HistoryPeminjam KodeHistory Berisi kode Varchar(20) No No an history transaksi peminjaman yang pernah
104 dilakukan KodePeminjaman Berisi kode setiap transaksi peminjaman yang terjadi di perpustakaan Varchar(20) No No NoIndukAnggota Berisi nomor induk anggota yang dimiliki setiap anggota perpustakaan Int No No Status Berisi status peminjaman apakah telah dikembalikan atau belum Varchar(10) No No PenggantianBuku KodePenggantian Berisi kode Varchar(10) No No penggantian buku apabila terjadi kerusakan
105 atau hilang NoIndukAnggota Berisi nomor induk anggota yang dimiliki setiap anggota perpustakaan Int No No KodePeminjaman Berisi kode setiap transaksi peminjaman yang terjadi di perpustakaan Varchar(10) No No TanggalPenggantian Berisi tanggal dilakukannya penggantian buku Date No No
106 4.1.1.4 Menentukan Domain Attribute Tabel 4.4 Tabel Domain Atribut Nama Entity Attribute Data Type and Length Domain attribute Staff NIP Int 0-9 Nama Varchar(50) A - Z Alamat Varchar(50) A - Z, 0-9 No Telp Varchar(12) 0-9 Password Varchar(10) A - Z, 0-9 Jenis Kelamin Char(1) L atau P Anggota No.IndukAnggota int 0-9 Nama Varchar(50) A - Z Alamat Varchar(100) A - Z, 0-9 NoTelp Varchar(12) 0-9 Password Varchar(12) A - Z, 0-9 KodeJabatan Varchar(10) A - Z, 0-9 JenisKelamin Boolean L atau P Peminjaman KodePeminjaman Varchar(10) A - Z, 0-9 NoIndukAnggota Int 0-9 NoIndukBuku Varchar(10) A - Z, 0-9 TanggalPeminjaman Date dd-mm-yyyy
107 TanggalHarusKembali Date dd-mm-yyyy Pengembalian KodePengembalian Varchar(10) A - Z, 0-9 NoIndukBuku Varchar(10) A - Z, 0-9 KodePeminjaman Varchar(10) A - Z, 0-9 NoIndukAnggota Varchar(10) A - Z, 0-9 TanggalPengembalian Date dd-mm-yyyy KodeDenda Varchar(10) A - Z, 0-9 NIP Int 0-9 Buku NoIndukBuku Varchar(10) A - Z, 0-9 Judul Varchar(50) A - Z, 0-9 Pengarang Varchar(50) A - Z, 0-9 ISBN/ISSN Varchar(20) A - Z, 0-9 Penerbit Varchar(40) A - Z, 0-9 TahunTerbit Varchar(4) 0-9 KodeKategori Varchar(10) A - Z, 0-9 Sinopsis Varchar(100) A - Z, 0-9 Stok Integer 0-9 KategoriBuku KodeKategori Varchar(10) A - Z, 0-9 NamaKategori Varchar(20) A - Z, 0-9 Jabatan KodeJabatan Varchar(10) A - Z, 0-9 NamaJabatan Varchar(10) A - Z, 0-9 HistoriPeminjaman KodeHistori Varchar(20) A - Z, 0-9 KodePeminjaman Varchar(20) A - Z, 0-9
108 NoIndukAnggota Int 0-9 Status Varchar(10) A - Z PenggantianBuku KodePenggantian Varchar(10) A - Z, 0-9 NoIndukAnggota Int 0-9 KodePeminjaman Varchar(10) A - Z, 0-9 TanggalPenggantian Datetime dd-mm-yyyy 4.1.1.5 Mengidentifikasi Candidate Key dan Primary Key Pada Setiap Entity Tabel 4.5 Tabel Candidate Key, Primary Key, dan Alternate Key Nama Entity Candidate key Primary Key Alternate key NIP No.telpon Staff No.Telp NIP Alamat Alamat No.IndukAnggota No.Telp No.Telp Anggota Alamat No.IndukAnggota Alamat KodeJabatan Kodejabatan Buku No.indukBuku No.indukBuku ISBN/ISSN
109 ISBN/ISSN KodeKategori KodeKategori KodePeminjaman No.IndukAnggota Peminjaman No.IndukAnggota KodePeminjaman No.indukBuku No.indukBuku KodePengembalian No.indukBuku No.indukBuku KodePeminjaman Pengembalian KodePeminjaman KodePengembalian No.IndukAnggota No.IndukAnggota NIP NIP KodeHistory KodePeminjaman HistoryPeminjaman KodePeminjaman KodeHistory NoIndukAnggota NoIndukAnggota Jabatan KodeJabatan KodeJabatan KategoriBuku KodeKategori KodeKategori PenggantianBuku KodePenggantian KodePenggantian No.IndukAnggota No.IndukAnggota KodePeminjaman
110 KodePeminjaman Gambar 4.2 ERD Konseptual dengan Primary key 4.1.1.6 Mempertimbangkan Penggunaan Konsep Permodelan Tingkat Tinggi (Langkah Opsional) Pada tahap ini, ERD yang kami buat tidak menggunakan konsep spesialisasi/generalisasi, agregasi, maupun komposisi, sehingga tahap ini tidak kami lakukan 4.1.1.7 Memeriksa Redudansi Pada tahap ini, ERD yang kami buat sudah tidak terdapat redudansi pada hubungan antar entitas, sehingga tahap ini tidak kami lakukan
111 4.1.1.8 Memvalidasi Model Data Konseptual Terhadap Transaksi User Tujuan dari langkah ini adalah untuk memastikan bahwa model data konseptual dapat mendukung kebutuhan transaksi. Transaksi user yang terjadi pada model data konseptual adalah sebagai berikut : a) Melihat rincian data anggota perpustakaan b) Mengidentifikasi jumlah anggota c) Melihat rincian data staff perpustakaan d) Mengidentifikasi jumlah staff e) Melihat rincian data buku perpustakaan f) Mengidentifikasi jumlah buku g) Melihat rincian data peminjaman buku h) Melihat rincian data pengembalian buku i) Melihat rincian history peminjaman dari masing-masing anggota j) Melihat rincian data denda yang pernah diberikan kepada anggota perpustakaan k) Memasukkan data peminjaman baru l) Memasukkan data pengembalian baru m) Memasukkan data staff baru n) Memasukkan data buku baru o) Memasukkan data anggota baru
112 p) Mengubah data staff q) Mengubah data anggota r) Menghapus data anggota perpustakaan s) Menghapus data buku yang ada di perpustakaan t) Menghapus data staff perpustakaan u) Menghapus history peminjaman Gambar 4.3 ERD Konseptual dengan transaksi user 4.1.1.9 Melakukan Review Model Data Konseptual Dengan User Tujuan langkah ini adalah untuk memastikan bahwa model data konseptual yang dibuat telah memenuhi kebutuhan data perpustakaan. Setelah melakukan review dengan petugas perpustakaan SMA Negeri 2 Jakarta, model data konseptual yang dibuat telah memenuhi kebutuhan.
113 4.1.2 Perancangan Basisdata Logikal Tujuan dari tahap ini adalah untuk menerjemahkan model data konseptual menjadi sebuah model data logical, lalu memvalidasikan model tersebut untuk memastikan bahwa secara structural sudah tepat dan mampu mendukung kebutuhan transaksi Pada perancangan basisdata logical ini terdapat beberapa langkah, yaitu: 1. Penurunan relasi untuk model data logikal 2. Validasi relasi menggunakan normalisasi 3. Validasi relasi terhadap transaksi user 4. Memeriksa integrity constraints 5. Melakukan review model data logikal dengan user 6. Mempertimbangkan perkembangan di masa depan 7. Pemilihan Database Management System 4.1.2.1 Penurunan Relasi Untuk Model Data Logical Tujuan dari langkah ini adalah membuat relasi bagi model data logical untuk merepresentasikan antitas, relasi, dan atribut yang telah diidentifikasi. 4.1.2.1.1 Strong Entity Types Untuk setiap strong entity pada model data konseptual, dibuat relasi yang mencakup semua simple atribut dari entitas tersebut Staff(NIP, Nama, Alamat, NoTelp, Password, JenisKelamin, TglLahir)
114 Primary Key NIP KategoriBuku(KodeKategori, KategoriBuku) Primary Key KodeKategori Jabatan(KodeJabatan, NamaJabatan) Primary Key KodeJabatan 4.1.2.1.2 Weak Entity Types Anggota(NoIndukAnggota, Nama, Alamat, NoTelp, Password, KodeJabatan, JenisKelamin, TglLahir) Primary Key NoIndukAnggota Foreign Key KodeJabatan references Jabatan(KodeJabatan) Peminjaman(KodePeminjaman, NoIndukAnggota, NoIndukBuku, JumlahPeminjaman, TanggalPeminjaman, TanggalHarusKembali) Primary Key KodePeminjaman Foreign Key NoIndukAnggota references Anggota(NoIndukAnggota) Foreign Key NoIndukBuku references Buku(NoIndukBuku) Pengembalian(KodePengembalian, NoIndukBuku, KodePeminjaman, NoIndukAnggota, NIP, TanggalPengembalian) Primary Key KodePengembalian Foreign Key NoIndukBuku references Buku(NoIndukBuku)
115 Foreign Key KodePeminjaman references Peminjaman(KodePeminjaman) Foreign Key NoIndukAnggota references Anggota(NoIndukAnggota) Foreign Key NIP references Staff(NIP) Buku(NoIndukBuku, Judul, Pengarang, ISBN, Penerbit, TahunTerbit, KodeKategori, Sinopsis, Stok) Primary Key NoIndukBuku Foreign Key KodeKategori references Kategori(KodeKategori) HistoryPeminjaman(KodeHistory, KodePeminjaman, KodePengembalian, NoIndukAnggota, Status) Primary Key KodeHistory Foreign Key KodePeminjaman references Peminjaman(KodePeminjaman) Foreign Key KodePengembalian references Pengembalian(KodePengembalian) Foreign Key NoIndukAnggota references Anggota(NoIndukAnggota) PenggantianBuku(KodePenggantian, NoIndukAnggota, KodePeminjaman,TanggalPenggantian) Primary Key KodePenggantian Foreign Key NoIndukAnggota references Anggota(NoIndukAnggota)
116 Foreign Key KodePeminjaman references Peminjaman(KodePeminjaman) 4.1.2.1.3 One-to-many (1:*) Binary Relationship Types Pada Setiap hubungan one-to-many, entitas yang berada pada one side menjadi parent dan entitas yang berada pada many side menjadi child. Berikut ini relasi one-to-many yang ada pada basis data yang telah dibuat: 1. Hubungan 1:* antara Staff dan Pengembalian Staff(NIP, Nama, Alamat, NoTelp, Password, JenisKelamin, TglLahir) Primary Key NIP Pengembalian(KodePengembalian, NoIndukBuku, KodePeminjaman, NoIndukAnggota, NIP, TanggalPengembalian) Primary Key KodePengembalian Foreign Key NIP references Staff(NIP) 2. Hubungan 1:* antara Anggota dan HistoryPeminjaman
117 Anggota(NoIndukAnggota, Nama, Alamat, NoTelp, Password, KodeJabatan, JenisKelamin, TglLahir) Primary Key NoIndukAnggota HistoryPeminjaman(KodeHistory, KodePeminjaman, KodePengembalian, NoIndukAnggota, Status) Primary Key KodeHistory Foreign Key NoIndukAnggota references Anggota(NoIndukAnggota) 3. Hubungan 1:* antara Anggota dan Peminjaman Anggota(NoIndukAnggota, Nama, Alamat, NoTelp, Password, KodeJabatan, JenisKelamin, TglLahir) Primary Key NoIndukAnggota Peminjaman(KodePeminjaman, NoIndukBuku, NoIndukAnggota, JumlahPeminjaman, TanggalPeminjaman, TanggalHarusKembali) Primary Key KodePeminjaman Foreign Key NoIndukAnggota references Anggota(NoIndukAnggota) 4. Hubungan 1:* antara Anggota dan Pengembalian
118 Anggota(NoIndukAnggota, Nama, Alamat, NoTelp, Password, KodeJabatan, JenisKelamin, TglLahir) Primary Key NoIndukAnggota Pengembalian(KodePengembalian, NoIndukBuku, KodePeminjaman, NoIndukAnggota, NIP, TanggalPengembalian) Primary Key KodePengembalian Foreign Key NoIndukAnggota references Anggota(NoIndukAnggota) 5. Hubungan 1:* antara Jabatan dan Anggota Jabatan(KodeJabatan, NamaJabatan) Primary Key KodeJabatan Anggota(NoIndukAnggota, Nama, Alamat, NoTelp, Password, KodeJabatan, JenisKelamin, TglLahir) Primary Key NoIndukAnggota Foreign key KodeJabatan references Jabatan(KodeJabatan) 6. Hubungan 1:* antara Anggota dan PenggantianBuku
119 Anggota(NoIndukAnggota, Nama, Alamat, NoTelp, Password, KodeJabatan, JenisKelamin, TglLahir) Primary Key NoIndukAnggota PenggantianBuku(KodePenggantian, NoIndukAnggota, KodePeminjaman, TanggalPenggantian) Primary Key KodePenggantian Foreign Key NoIndukAnggota references Anggota(NoIndukAnggota) 7. Hubungan 1:* antara KategoriBuku dan Buku KategoriBuku(KodeKategori, KategoriBuku) Primary Key KodeKategori Buku(NoIndukBuku, Judul, Pengarang, ISBN, Penerbit, TahunTerbit, KodeKategori, Sinopsis, Stok) Primary Key NoIndukBuku Foreign Key KodeKategori references KategoriBuku(KodeKategori) 4.1.2.1.4 One-to-one (1:1) Binary Relationship Types
120 Penentuan parent dan child entity untuk menggambarkan hubungan 1:1 tidak dapat dilakukan dengan melihat cardinality hubungan tersebut.penentuan parent dan child entity dilakukan dengan memperhatikan participation constraint di antara kedua entitas tersebut.terdapat 3 jenis participation constraint yang dapat diperimbangkan: a Mandatory participation pada kedua entitas hubungan 1:1. b. Mandatory participation pada salah satu entitas hubungan 1:1. c. Optional participation pada kedua entitas hubungan 1:1. Pada model konseptual, terdapat 2 hubungan 1:1, yaitu antara Peminjaman-HistoryPeminjaman dan Peminjaman- PenggantianBuku. 1. Hubungan 1:1 antara Peminjaman dan HistoryPeminjaman Peminjaman(KodePeminjaman, NoIndukAnggota, NoIndukBuku, JumlahPeminjaman, TanggalPeminjaman, TanggalHarusKembali) Primary Key KodePeminjaman HistoryPeminjaman(KodeHistory, KodePeminjaman, KodePengembalian, NoIndukAnggota, Status)
121 Primary Key KodeHistory Foreign key KodePeminjaman references Peminjaman(KodePeminjaman). 2. Hubungan 1:1 antara Peminjaman dan PenggantianBuku Peminjaman(KodePeminjaman, NoIndukAnggota, NoIndukBuku, JumlahPeminjaman, TanggalPeminjaman, TanggalHarusKembali) Primary Key KodePeminjaman PenggantianBuku(KodePenggantian, NoIndukAnggota, KodePeminjaman, TanggalPenggantian) Primary Key KodePenggantian Foreign key KodePeminjaman references Peminjaman(KodePeminjaman). 4.1.2.1.5 Many-to-Many Binary Relationship Types Untuk setiap hubungan many-to-many pada model data konseptual dibuat relasi yang menggambarkan hubungan tersebut. Primary key dari masing-masing entitas yang berpartisipasi dalam hubungan tersebut, turut dimasukkan ke dalam relasi yang baru dibentuk sebagai foreign key. Satu atau beberapa foreign key
122 tersebut juga akan berperan sebagai primary key untuk relasi yang baru saja terbentuk. Relasi relasi yang terbentuk antara lain : 1. Hubungan many-to-many antara Peminjaman dan Buku menghasilkan entitas baru bernama DetailPeminjaman Dari Gambar 4.4 Relasi Many-to-Many Antara Peminjaman dan Buku Menjadi Gambar 4.5 Menghilangkan Relasi Many-to-Many Antara Peminjaman dan Buku DetailPeminjaman(KodePeminjaman, NoIndukBuku, JumlahPeminjaman) Primary key KodePeminjaman, NoIndukBuku.
123 Foreign key KodePeminjaman references Peminjaman(KodePeminjaman) Foreign key NoIndukBuku references Buku(NoIndukBuku) 2. Hubungan many-to-many antara Pengembalian dan Buku menghasilkan entitas baru bernama DetailPengembalian Dari Gambar 4.6 Relasi Many-to-Many Antara Pengembalian dan Buku Menjadi Gambar 4.7 Menghilangkan Relasi Many-to-Many Antara Pengembalian dan Buku DetailPengembalian(KodePengembalian, NoIndukBuku, Jumlah) Primary Key KodePengembalian, NoIndukBuku.
124 Foreign Key KodePengembalian references Pengembalian(KodePengembalian) Foreign Key NoIndukBuku references Buku(NoIndukBuku) Gambar 4.8 ERD Logikal 4.1.2.2 Validasi Relasi Menggunakan Normalisasi Tujuan dari normalisasi ini adalah untuk memastikan bahwa setiap relasi memiliki jumlah atribut minimal untuk mendukung kebutuhan data perusahaan.
125 Tahap ini tidak dilakukan karena pada model data logical tidak terdapat redudansi, ketergantungan transitif, dan ketergantungan parsial. 4.1.2.3 Validasi Relasi Terhadap Transaski User Tujuan dari langkah ini adalah untuk memastikan bahwa relasi pada model data logical mendukung kebutuhan transaksi. Transaksi user yang terjadi pada model data konseptual adalah sebagai berikut : a) Melihat rincian data anggota perpustakaan b) Mengidentifikasi jumlah anggota c) Melihat rincian data staff perpustakaan d) Mengidentifikasi jumlah staff e) Melihat rincian data buku perpustakaan f) Mengidentifikasi jumlah buku g) Melihat rincian data peminjaman buku h) Melihat rincian data pengembalian buku i) Melihat rincian history peminjaman dari masing-masing anggota j) Melihat rincian data denda yang pernah diberikan kepada anggota perpustakaan k) Memasukkan data peminjaman baru l) Memasukkan data pengembalian baru m) Memasukkan data staff baru n) Memasukkan data buku baru
126 o) Memasukkan data anggota baru p) Mengubah data staff q) Mengubah data anggota r) Menghapus data anggota perpustakaan s) Menghapus data buku yang ada di perpustakaan t) Menghapus data staff perpustakaan u) Menghapus history peminjaman Gambar 4.9 ERD Logikal Dengan Transaksi User
127 4.1.2.4 Memeriksa Integrity Constraint Tujuan dari langkah ini adalah untuk melindungi database menjadi tidak lengkap, tidak akurat, atau tidak konsisten. Kendala integrity terdiri dari beberapa tipe, yaitu : a. Required data Beberapa atribut harus mengandung nilai yang valid atau tidak boleh mengandung NULL. Constraint ini sudah diidentifikasi pada tahap basis data konseptual. b. Batasan Domain Setiap atribut memiliki domain, yaitu sekumpulan nilai yang sah untuk atribut constraintnya. Domain setiap atribut telah ditentukan pada tahap perancangan basis data konseptual c. Entity integrity Primary key tidak boleh NULL. Constraint ini telah ditetapkan pada tahap perancangan basis data konseptual d. Referential integrity Memastikan bahwa seluruh nilai dari foreign key cocok dengan nilai primary key yang dihubungkan.
128 Tabel 4.6 Tabel Relasi dengan Referential integrity No Relations 1. Staff(NIP, Nama, Alamat, NoTelp, Password, JenisKelamin, TglLahir) Primary Key NIP 2. Jabatan(KodeJabatan, NamaJabatan) Primary Key KodeJabatan 3. Anggota(NoIndukAnggota, Nama, Alamat, NoTelp, Password, KodeJabatan, JenisKelamin, TglLahir) Primary Key NoIndukAnggota Foreign Key KodeJabatan references Jabatan(KodeJabatan) ON UPDATE CASCADE ON DELETE NO ACTION 4. KategoriBuku(KodeKategori, KategoriBuku) Primary Key KodeKategori 5. Buku(NoIndukBuku, Judul, Pengarang, ISBN, Penerbit, TahunTerbit, KodeKategori, Sinopsis,
129 Stok) Primary Key NoIndukBuku Foreign Key KodeKategori references KategoriBuku(KodeKategori) ON UPDATE CASCADE ON DELETE NO ACTION 6. Peminjaman(KodePeminjaman, NoIndukAnggota, NoIndukBuku, JumlahPeminjaman, TanggalPeminjaman, TanggalHarusKembali) Primary Key KodePeminjaman Foreign key NoIndukAnggota references Anggota(NoIndukAnggota) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoIndukBuku references Buku(NoIndukBuku) ON UPDATE CASCADE ON DELETE NO ACTION 7. Pengembalian(KodePengembalian, NoIndukBuku, KodePeminjaman, NoIndukAnggota, NIP, TanggalPengembalian) Primary Key KodePengembalian
130 Foreign Key NoIndukbuku references Buku(NoIndukBuku) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key KodePeminjaman references Peminjaman(KodePeminjaman) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NIP references Staff(NIP) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key KodeAnggota references Anggota(KodeAnggota) ON UPDATE CASCADE ON DELETE NO ACTION 8. HistoryPeminjaman(KodeHistory, KodePeminjaman, KodePengembalian, NoIndukAnggota, Status) Primary Key KodeHistory Foreign Key KodePeminjaman references Peminjaman(KodePeminjaman) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key KodePengembalian references Pengembalian(KodePengembalian) ON UPDATE
131 CASCADE ON DELETE NO ACTION Foreign Key NoIndukAnggota references Anggota(NoIndukAnggota) ON UPDATE CASCADE ON DELETE NO ACTION 9. PenggantianBuku(KodePenggantian, NoIndukAnggota, KodePeminjaman,TanggalPenggantian) Primary Key KodePenggantian Foreign Key NoIndukAnggota references Anggota(NoIndukAnggota) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key KodePeminjaman references Peminjaman(KodePeminjaman) ON UPDATE CASCADE ON DELETE NO ACTION 10. DetailPeminjaman(KodePeminjaman, NoIndukbuku, Jumlah) Primary Key KodePeminjaman, NoIndukBuku Foreign Key KodePeminjaman references Peminjaman(KodePeminjaman) ON UPDATE CASCADE ON DELETE NO ACTION
132 Foreign Key NoIndukBuku references Buku(NoIndukBuku) ON UPDATE CASCADE ON DELETE NO ACTION 11. DetailPengembalian(KodePengembalian, NoIndukBuku, Jumlah) Primary Key KodePengembalian, NoIndukBuku Foreign Key KodePengembalian references Pengembalian(KodePengembalian) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key NoIndukBuku references Buku(NoIndukBuku) ON UPDATE CASCADE ON DELETE NO ACTION 4.1.2.5 Melakukan Review Model Data Logikal Dengan User Tujuan dari langkah ini adalah meninjau kembali model data logical dengan user untuk memastikan bahwa model data tersebut telah menjadi representasi nyata dari kebutuhan data perusahaan. Setelah melakukan review dengan user, model data logical yang telah kami rancang telah sesuai dengan kebutuhan user.
133 4.1.2.6 Menggabungkan Model Data logikal ke Dalam Model Data Global (optional) Tujuan dari langkah ini adalah untuk menggabungkan model data logical ke dalam sebuah model data logical global yang mewakili semua sudut pandang user terhadap database Pada penelitian ini, tidak dilakukan penggabungan model data logikal ke dalam model data global 4.1.2.7 Memeriksa Pertumbuhan di Masa Depan Tujuan dari langkah ini adalah untuk menentukan apakah ada kemungkinan perubahan yang signifikan dan untuk menilai apakah model data logical dapat mengakomodasi perubahan tersebut. Setelah melakukan diskusi dengan petugas perpustakaan, telah disetujui bahwa model data logikal dapat mengakomodasi perubahanperubahan yang mungkin akan terjadi di masa yang akan datang. 4.1.3 Perancangan Basisdata Fisikal Perancangan fisikal database adalah proses menghasilkan deskripsi dari pengimplementasian database ke dalam tempat penyimpanan sekunder. Proses ini mendeskripsikan relasi dasar, organisasi file, dan index yang digunakan untuk mencapai keefisienan dalam mengakses data, dan setiap integritas data terkait, dan langkah langkah keamanan.
134 4.1.3.1 Menerjemahkan Model Data Logikal Untuk DBMS yang Digunakan Tujuan dari langkah ini adalah untuk menghasilkan skema database relasional dari model data logical yang akan diimplementasikan ke dalam DBMS yang dituju. Perancangan Relasi Dasar Tujuan dari langkah ini adalah untuk menentukan bagaimana cara untuk merepresentasikan relasi dasar yang telah teridentifikasi yang ada pada model data logical ke dalam DBMS yang dituju. 1. Staff( NIP Nama Alamat NoTelp Password JenisKelamin TglLahir NOT NULL, NOT NULL, NOT NULL, NOT NULL, NOT NULL, NOT NULL, NOT NULL, PRIMARY KEY (NIP) );
135 2. Jabatan( KodeJabatan NOT NULL, NamaJabatan NOT NULL, PRIMARY KEY (KodeJabatan) ); 3. Anggota( NoIndukAnggota NOT NULL, Nama NOT NULL, Alamat NOT NULL, NoTelp NOT NULL, Password NOT NULL, KodeJabatan NOT NULL, JenisKelamin NOT NULL, TglLahir NOT NULL, PRIMARY KEY (NoIndukAnggota), FOREIGN KEY (KodeJabatan) REFERENCES Jabatan(KodeJabatan) ON UPDATE CASCADE ON DELETE NO ACTION );
136 4. KategoriBuku( KodeKategori NOT NULL, KategoriBuku NOT NULL, PRIMARY KEY (KodeKategori) ); 5. Buku( NoIndukBuku NOT NULL, Judul NOT NULL, Pengarang NOT NULL, ISBN NOT NULL, Penerbit NOT NULL, TahunTerbit NOT NULL, KodeKategori NOT NULL, Sinopsis, Stok NOT NULL, PRIMARY KEY (NoIndukBuku),
137 FOREIGN KEY (KodeKategori) REFERENCES KategoriBuku(KodeKategori) ON UPDATE CASCADE ON DELETE NO ACTION ); 6. Peminjaman( KodePeminjaman NOT NULL, NoIndukAnggota NOT NULL, NoIndukBuku NOT NULL, JumlahPeminjaman NOT NULL, TanggalPeminjaman NOT NULL, TanggalHarusKembali NOT NULL, PRIMARY KEY (KodePeminjaman), FOREIGN KEY NoIndukAnggota REFERENCES Anggota(NoIndukAnggota) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (NoIndukBuku) REFERENCES Buku(NoIndukBuku) ON UPDATE CASCADE ON DELETE NO ACTION );
138 7. Pengembalian( KodePengembalian NOT NULL, NoIndukBuku NOT NULL, KodePeminjaman NOT NULL, NoIndukAnggota NOT NULL, NIP NOT NULL, TanggalPengembalian NOT NULL, PRIMARY KEY (KodePengembalian), FOREIGN KEY (NoIndukbuku) REFERENCES Buku(NoIndukBuku) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (KodePeminjaman) REFERENCES Peminjaman(KodePeminjaman) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (NIP) REFERENCES Staff(NIP) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (KodeAnggota) REFERENCES Anggota(KodeAnggota) ON UPDATE CASCADE ON DELETE NO ACTION
139 ); 8. HistoryPeminjaman( KodeHistory NOT NULL, KodePeminjaman NOT NULL, KodePengembalian NOT NULL, NoIndukAnggota NOT NULL, Status NOT NULL, PRIMARY KEY (KodeHistory), FOREIGN KEY (KodePeminjaman) REFERENCES Peminjaman(KodePeminjaman) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY KodePengembalian REFERENCES Pengembalian(KodePengembalian) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY NoIndukAnggota REFERENCES Anggota(NoIndukAnggota) ON UPDATE CASCADE ON DELETE NO ACTION );
140 9. PenggantianBuku( KodePenggantian NOT NULL, NoIndukAnggota NOT NULL, KodePeminjaman NOT NULL, TanggalPenggantian NOT NULL, PRIMARY KEY (KodePenggantian), FOREIGN KEY (NoIndukAnggota) REFERENCES Anggota(NoIndukAnggota) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (KodePeminjaman) REFERENCES Peminjaman(KodePeminjaman) ON UPDATE CASCADE ON DELETE NO ACTION ); 10. DetailPeminjaman( KodePeminjaman NOT NULL, NoIndukbuku NOT NULL, Jumlah NOT NULL, PRIMARY KEY (KodePeminjaman, NoIndukBuku),
141 FOREIGN KEY (KodePeminjaman) REFERENCES Peminjaman(KodePeminjaman) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (NoIndukBuku) REFERENCES Buku(NoIndukBuku) ON UPDATE CASCADE ON DELETE NO ACTION ); 11. DetailPengembalian( KodePengembalian NOT NULL NoIndukBuku NOT NULL Jumlah NOT NULL PRIMARY KEY (KodePengembalian, NoIndukBuku) FOREIGN KEY (KodePengembalian) REFERENCES Pengembalian(KodePengembalian) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (NoIndukBuku) REFERENCES Buku(NoIndukBuku) ON UPDATE CASCADE ON DELETE NO ACTION );
142 Merancang Representasi Derived Data Tujuan dari langkah ini adalah untuk mengetahui bagaimana cara merepresentasikan derived data apapun yang terdapat di model data logical ke dalam DBMS yang dituju. Atribut LamaKeterlambatan pada relasi Pengembalian diperoleh dengan cara mengurangkan TanggalPengembalian dengan TanngalHarusKembali Atribut denda pada relasi Pengembalian diperoleh dengan melakukan proses (LamaKeterlambatan*100) Merancang General Constraint Tujuan dari langkah ini adalah merancang batasan umum untuk DBMS yang dituju. Berikut ini adalah berberapa general constraint yang terdapat dalam system: a. Jumlah buku yang dipinjam tidak dapat melebihi stok yang ada. b. Tanggal pengembalian tidak dapat kurang dari tanggal peminjaman c. Tanggal lahir tidak dapat melebihi tanggal yang tertera pada desktop computer. d. Dalam 1 peminjaman, tidak dapat meminjam lebih dari 3 buku
143 4.1.3.2 Merancang Organisasi File dan Index Tujuan dari langkah ini adalah menentukan organisasi file untuk menyimpan relasi dasar dan index yang dibutuhkan untuk mencapai performa yang dapat diterima, ini merupakan cara dimana relasi dan tuples juga akan disimpan di dalam tempat penyimpanan sekunder. Menganalisa Transaksi Tujuan dari menganalisa transaksi adalah untuk memahami fungsi dan transaksi yang akan diterapkan pada basis data. Untuk memudahkan menganalisa, makan akan digunakan transaction / relation cross refrences matrix (matrix refrensi silang transaksi/relasi). Transaksi-transaksi yang akan berjalan dalam sistem yaitu: a. Melihat rincian data anggota perpustakaan b. Mengidentifikasi jumlah anggota c. Melihat rincian data staff perpustakaan d. Mengidentifikasi jumlah staff e. Melihat rincian data buku perpustakaan f. Mengidentifikasi jumlah buku g. Melihat rincian data peminjaman buku h. Melihat rincian data pengembalian buku i. Melihat rincian history peminjaman dari masing-masing anggota j. Melihat rincian data denda yang pernah diberikan kepada anggota perpustakaan
144 k. Memasukkan data peminjaman baru l. Memasukkan data pengembalian baru m. Memasukkan data staff baru n. Memasukkan data buku baru o. Memasukkan data anggota baru p. Mengubah data staff q. Mengubah data anggota r. Menghapus data anggota perpustakaan s. Menghapus data buku yang ada di perpustakaan t. Menghapus data staff perpustakaan u. Menghapus history peminjaman Tabel 4.7 Analisa Transaksi Transaksi/relasi A B C D I R U D I R U D I R U D I R U D Staff X X Anggota X X Buku KodeKategori Jabatan X
145 Peminjaman Pengembalian PenggantianBuku HistoryPeminjaman DetailPeminjaman DetailPengembalian Tabel 4.7 Analisa Transaksi(lanjutan) Transaksi/relasi E F G H I R U D I R U D I R U D I R U D Staff X Anggota X X Buku X X X X KategoriBuku X Jabatan Peminjaman X
146 Pengembalian X PenggantianBuku X HistoryPeminjaman DetailPeminjaman X DetailPengembalian X Tabel 4.7 Analisa Transaksi(lanjutan) Transaksi/relasi I J K L I R U D I R U D I R U D I R U D Staff Anggota X X X Buku X KategoriBuku Jabatan Peminjaman X X X Pengembalian X X X PenggantianBuku X
147 HistoryPeminjaman X X X DetailPeminjaman X DetailPengembalian X Tabel 4.7 Analisa Transaksi(lanjutan) Transaksi/relasi M N O P I R U D I R U D I R U D I R U D Staff X X Anggota X Buku X KategoriBuku X Jabatan Peminjaman Pengembalian PenggantianBuku HistoryPeminjaman DetailPeminjaman
148 DetailPengembalian Transaksi/relasi Q R S T I R U D I R U D I R U D I R U D Staff X Anggota X X Buku X KategoriBuku Jabatan Peminjaman X Pengembalian X PenggantianBuku HistoryPeminjaman DetailPeminjaman DetailPengembalian Transaksi/relasi U I R U D
149 Staff Anggota Buku KategoriBuku Jabatan Peminjaman Pengembalian PenggantianBuku HistoryPeminjaman X DetailPeminjaman DetailPengembalian Tabel 4.7 Analisa Transaksi (lanjutan) Memilih Organisasi File Tujuan dari langkah ini adalah untuk menentukan organisasi file yang efisien untuk setiap relasi dasar.
150 Memilih Index Tujuan dari langkah ini adalah untuk memastikan apakah dengan menambah index maka performasystem juga akan meningkat. Tabel 4.8 Pemilihan Index Nama Entity Index Nama Index Staff NIP idxnip Anggota KodeAnggota idxkodeanggota HistoryPeminjaman KodeHistory idxkodehistory Peminjaman KodePeminjaman idxpeminjaman PenggantianBuku KodePenggantian idxkodepenggantian Pengembalian KodePengembalian idxpengembalian Buku NoIndukBuku idxnoindukbuku KategoriBuku KodeKategori idxkodekategori Jabatan KodeJabatan idxkodejabatan Memperkirakan Kebutuhan Disk Space Tujuan dari langkah ini adalah untuk memperkirakan jumlah ruang disk yang akan dibutuhkan oleh database. Berikut ini adalah perhitungan estimasi kebutuhan memory selama 1 tahun ajaran dari setiap table.
151 1. Staff Tabel 4.9 Staff Field Tipe Data Ukuran NIP Int 4 bytes Nama Varchar(50) 50 bytes Alamat Varchar(100) 100 bytes NoTelp Varchar(12) 12 bytes Password Varchar(20) 20 bytes JenisKelamin Boolean 1 bytes TglLahir Date 3 bytes Kapasitas total Staff adalah sebesar 190 bytes. Jumlah data staff untuk 5 tahun diperkirakan sebanyak 4 staff. Kebutuhan memory untuk Staff sebesar 4*195 bytes =760 bytes. 2. Anggota Tabel 4.10 Anggota Field Tipe Data Ukuran NoIndukAnggota Int 4 bytes Nama Varchar(50) 50 bytes Alamat Varchar(100) 100 bytes Password Varchar(20) 20 bytes NoTelp Varchar(12) 12 bytes KodeJabatan Varchar(10) 10 bytes
152 JenisKelamin Boolean 1 bytes TglLahir Date 3 bytes Kapasitas total Anggota adalah sebesar 200 bytes. Jumlah data dari data anggota diperkirakan sebanyak 1000 anggota. Kebutuhan memory untuk Anggota sebesar 1000*200 bytes = 200000 bytes. 3. HistoryPeminjaman Tabel 4.11 HistoryPeminjaman Field Tipe Data Ukuran KodeHistory Varchar(20) 20 bytes Status Varchar(10) 10 bytes KodePeminjaman Varchar(20) 20 bytes KodePengembalian Varchar(20) 20 bytes NoIndukAnggota Int 4 bytes Kapasitas total HistoryPeminjaman adalah sebesar 74bytes. Jumlah history peminjaman 1 bulan diperkirakan sebanyak 500 history. Kebutuhan memory untuk HistoryPeminjaman selama 5 tahun sebesar 500*60*74 bytes = 2220000 bytes. 4. Peminjaman Tabel 4.12 Peminjaman Field Tipe Data Ukuran KodePeminjaman Varchar(10) 10 bytes NoIndukAnggota Int 4 bytes
153 NoIndukBuku Int 4 bytes TglPeminjaman Date 3 bytes TgglHarusKembali Date 3 bytes Kapasitas total Peminjaman adalah sebesar 24 bytes. Jumlah peminjaman dalam 1 bulan diperkirakan sebanyak 500 transaksi peminjaman. Kebutuhan memory untuk 5 tahun sebesar 500*60*24 bytes = 720000 bytes. 5. Pengembalian Tabel 4.13 Pengembalian Field Tipe Data Ukuran KodePengembalian Varchar(10) 10 bytes NoIndukBuku Int 4 bytes TanggalPengembalian Date 3 bytes NoIndukAnggota Int 4 bytes NIP Int 4 bytes KodePeminjaman Varchar(10) 10 bytes Kapasitas total Pengembalian adalah sebesar 35 bytes. Jumlah pengembalian dalam 1 bulan diperkirakan sebanyak 500 transaksi pengembalian. Kebutuhan memory untuk Pengembalian selama 5 tahun sebesar 500*60*35 bytes = 1050000 bytes.
154 6. PenggantianBuku Tabel 4.14 PenggantianBuku Field Tipe Data Ukuran KodePenggantian Varchar(10) 10 bytes NoIndukAnggota Int 4 bytes KodePeminjaman Varchar(10) 10 bytes TanggalPenggantian Date 3 bytes Kapasitas total PenggantianBuku adalah sebesar 27 bytes. Jumlah penggantian dalam 1 bulan diperkirakan sebanyak 1 transaksi penggantian. Kebutuhan memory untuk PenggantianBuku dalam 5 tahun sebesar 1*60*27 bytes = 1620 bytes. 7. Buku Tabel 4.15 Buku Field Tipe Data Ukuran NoIndukBuku Int 4 bytes Judul Varchar(50) 50 bytes Pengarang Varchar(50) 50 bytes ISBN/ISSN Varchar(20) 20 bytes Penerbit Varchar(40) 40 bytes TahunTerbit Varchar(4) 4 bytes KodeKategori Varchar(10) 10 bytes Sinopsis Varchar(100) 100 bytes Stok Int 4 bytes
155 Kapasitas total Buku adalah sebesar 282 bytes. Jumlah buku diperkirakan sebanyak 2000. Kebutuhan memory untuk buku diperkirakan sebesar 2000*282 bytes = 564000 bytes. 8. KategoriBuku Tabel 4.16 KategoriBuku Field Tipe Data Ukuran KodeKategori Varchar(10) 10 bytes NamaKategori Varchar(20) 20 bytes Kapasitas total KategoriBuku adalah sebesar 30bytes. Jumlah kategori buku diperkirakan sebanyak 50 tipe. Kebutuhan memory untuk KategoriBuku diperkirakan sebesar 50*30 bytes = 1500 bytes. 9. Jabatan Tabel 4.17 Jabatan Field Tipe Data Ukuran KodeJabatan Varchar(10) 10 bytes NamaJabatan Varchar(20) 20 bytes Kapasitas total Jabatan adalah sebesar 30bytes. Jumlah Jabatan diperkirakan sebanyak 20 jabatan. Kebutuhan memory untuk jabatan diperkirakan sebesar 20*30 bytes = 600 bytes. 10. DetailPeminjaman 11. Tabel 4.18 DetailPeminjaman Field Tipe Data Ukuran KodePeminjaman Varchar(10) 10 bytes
156 NoIndukBuku Int 4 bytes Jumlah Int 4 bytes Kapasitas total DetailPeminjaman adalah sebesar 18bytes. Jumlah DetailPeminjaman dalam 1 bulan diperkirakan sebanyak 500 transaksi peminjaman. Kebutuhan memory untuk DetailPeminjaman dalam 5 tahun diperkirakan sebesar 500*60*18 bytes = 540000 bytes. 11 DetailPengembalian Tabel 4.19 DetailPengembalian Field Tipe Data Ukuran KodePengembalian Varchar(10) 10 bytes Jumlah Int 4 bytes NoIndukBuku Int 4 bytes Kapasitas total DetailPengembalian adalah sebesar 18bytes. Jumlah DetailPeminjaman dalam 1 bulan diperkirakan sebanyak 500 transaksi pengembalian. Kebutuhan memory untuk DetailPengembalian dalam 5 tahun diperkirakan sebesar 500*60*18 bytes = 540000 bytes. Kapasitas total yang dibutuhkan selama 5 tahun adalah sebagai berikut : 760 + 200000 + 2220000 + 720000 + 1050000 + 1620 + 564000 + 1500 + 600 +540000 + 540000 = 5838480 bytes = 5,6Mb
157 4.1.3.3 Merancang User Views Tujuan dari langkah ini adalah untuk merancang user views yang telah diperoleh pada waktu pengumpulan kebutuhan dan tahap analisa pada siklus pengembagan system database Berikut ini adalah beberapa contoh view pada sistem : CREATE VIEW LapPeminjaman AS SELECT Pengembalian.KodePengembalian, IIF(Pengembalian.NIP = '0', Peminjaman.NoIndukAnggota, Pengembalian.NIP) AS IDPeminjam,Pengembalian.NoIndukBuku,Buku.Judul,Peminjama n.jumlahpeminjaman, TglPengembalian FROM Pengembalian, Peminjaman, buku WHERE Pengembalian.KodePeminjaman = Peminjaman.KodePeminjaman AND Pengembalian.NoIndukBuku = Buku.NoIndukBuku CREATE VIEW LapPengembalian AS SELECT Pengembalian.KodePengembalian, IIF(Pengembalian.NIP = '0', Peminjaman.NoIndukAnggota, Pengembalian.NIP) AS
158 IDPeminjam,Pengembalian.NoIndukBuku,Buku.Judul,Peminjama n.jumlahpeminjaman, TglPengembalian FROM Pengembalian, Peminjaman, buku WHERE Pengembalian.KodePeminjaman = Peminjaman.KodePeminjaman AND Pengembalian.NoIndukBuku = Buku.NoIndukBuku CREATE VIEW LapDenda AS SELECT denda.kodedenda, IIF(Pengembalian.NIP = '0', Peminjaman.NoIndukAnggota, Pengembalian.NIP) AS IDPeminjam, LamaKeterlambatan * 100 AS Denda, TglPengembalian FROM denda, Peminjaman, Pengembalian WHERE denda.kodepeminjaman = Peminjaman.KodePeminjaman AND Peminjaman.KodePeminjaman = Pengembalian.KodePeminjaman AND LamaKeterlambatan > 0p.KodePeminjaman AND p.noindukbuku = b.noindukbuku.
159 4.1.3.4 Merancang Mekanisme Keamanan Tujuan dari langkah ini adalah untuk merancang mekanisme keamanan untuk database seperti yang diinginkan oleh user pada tahap pengumpulan kebutuhan pada siklus pengembangan system database. Relasi \user Staff Anggota R I U D R I U D Staff X X X X Anggota X X X X X Buku X X X X X Peminjaman X X X X X Pengembalian X X X X X HistoryPeminjaman X X X X X KategoriBuku X X X X X Jabatan X X X X X X PenggantianBuku X X X DetailPeminjaman X X X DetailPengembalian X X X Tabel 4.21 Mekanisme Keamanan 4.2 Perancangan Aplikasi Berikut ini merupakan aplikasi yang terdapat rancangan struktur menu. STD (State Transition Diagram) dan dilanjutkan dengan perancangan layar input dan output.
160 4.2.1 Struktur Menu Bagian ini menjelaskan tentang sususan menu yang ada pada rancangan aplikasi yang akan digunakan. Berikut adalah rancangan menu pada aplikasi dari beberapa tampilan user. Gambar 4.10 Struktur Menu Untuk Anggota Gambar 4.11 Struktur Menu Untuk Staff
161 4.2.2 Perancangan Input dan Output Berikut ini merupakan rancangan input/output interface aplikasi yang dirancang pada tahap sebelumnya. Gambar 4.12 Rancangan Layar Login
Gambar 4.13 Rancangan Layar Utama Untuk Staff 162
Gambar 4.14 Rancangan Layar Untuk Staff (klik Lihat Profil) 163
164 Gambar 4.15 Rancangan Layar Untuk Ubah Profil (staff) Gambar 4.16 Rancangan Layar Untuk Lihat Staff (staff)
165 Gambar 4.17 Rancangan Layar Untuk Tambah Staff (Staff) Gambar 4.18 Rancangan Layar Untuk Peminjaman
166 Gambar 4.19 Rancangan Layar Untuk Pengembalian (Staff) Gambar 4.20 Rancangan Layar Untuk Pengembalian (Klik Kembalikan)
167 Gambar 4.21 Rancangan Layar Untuk Histori Peminjaman (staff) Gambar 4.22 Rancangan Layar Untuk Ganti Password
168 Gambar 4.23 Rancangan Layar Untuk Penggantian Buku (klik ganti) Gambar 4.24 Rancangan Layar Utama Untuk Anggota
Gambar 4.25 Rancangan Layar Untuk Laporan Peminjaman (staff) 169
170 Gambar 4.26 Rancangan Layar Untuk Lihat Laporan (staff) 4.2.3 State Transition Diagram State Transition Diagram adalah suatu alat yang digunakan untuk menggambarkan urutan dan variasi screen yang dapat terjadi selama satu sesi pengguna. Berikut adalah STD sesuai dengan aplikasi yang dibuat.
171 Gambar 4.27 State Transition Diagram Login Gambar 4.28 State Transition Diagram Change Password
172 Klik kembali untuk kluar dari edit profil Gambar 4.29 State Transition Diagram Ubah Profil Klik kembali untuk kluar dari laporan denda Gambar 4.30 State Transition Diagram Laporan Denda
173 Klik kembali untuk kluar dari laporan pengembalian Gambar 4.31 State Transition Diagram Laporan Pengembalian Klik kembali untuk kluar dari laporan peminjaman Gambar 4.32 State Transition Diagram Laporan Peminjaman
174 Klik kembali untuk kluar dari lihat buku Gambar 4.33 State Transition Diagram Lihat Buku Gambar 4.34 State Transition Diagram View Profil
175 Gambar 4.35 State Transition Diagram Pengembalian 4.3 Implementasi 4.3.1 Spesifikasi Perangkat Keras Spesifikasi perangkat keras minimum yang diperlukan dalam implementasi apliaksi basisdata pada SMU Negeri 2 Jakarta adalah sebagai berikut: o Server : Processor : Intel Pentium IV 2.4Ghz Memory : 512 MB Harddisk : 1 GB Monitor : SVGA 15
176 o Client : Processor : Intel Pentium IV 2.4Ghz Memory : 512 MB Harddisk : 1 GB Monitor : SVGA 15 4.3.2 Spesifikasi Perangkat Lunak Spesifikasi perangkat lunak minimum yang diperlukan dalam implementasi aplikasi basisdata pada Perpustakaan SMU Negeri 2 adalah : o Server: Microsoft Windows XP Service Pack 2 Database Microsoft SQL Server 2008 o Client : Microsoft Windows XP Service Pack 2 4.3.3 Jadwal Implementasi Untuk memastikan program dapat bekerja dengan baik, perlu dilakukan instalasi DBMS, penerapan program, testing, review program dan training user Jadwal implementasi sistem adalah sebagai berikut : Proses implementasi Hari 1 2 3 4 Instalasi DBMS X Penerapan program X Testing Review program X X
177 Training user X Tabel 4.22 Jadwal Implementasi 4.3.4 Petunjuk Pemakaian Sistem Berikut ini adalah petunjuk pemakaian sistem dari aplikasi Perpustakaan SMU Negeri 2 Gajah Mada. Aplikasi dimulai dengan mengklik library.exe, kemudian akan ditampilkan layar login. Gambar 4.36 Layar Login Pada layar ini user diminta untuk mengisi username dan password. Layar ini berfungsi untuk membatasi akses user ke basisdata sesuai dengan hak akses yang dimiliki. Jika user mengklik tombol Login, maka akan dilakukan validasi untuk mengecek apakah uername dan password sudah sesuai dengan basisdata atau tidak. Jika sesuai maka akan masuk ke layar Main Screen. Tombol digunakan untuk keluar dari aplikasi perpustakaan.exe.
178 Gambar 4.37 Layar Main Screen Layar Main Screen adalah layar parent dari layar-layar yang lain. Pada layar Main Screen ini terdapat menu Logout, menu Profil berisi sub menu (Lihat Profil dan Ubah Profil, menu staff berisi sub menu (Lihat Staff dan Ubah Staff), menu Anggota berisi sub menu (Lihat Anggota dan Tambah Anggota, menu Buku berisi sub menu (Lihat Buku dan Tambah Buku), menu Peminjaman, menu Pengembalian, menu Histori, dan menu Laporan dengan sub menu (Laporan Peminjaman, Laporan Pengembalian, dan Laporan Denda).
179 Gambar 4.38 Layar Ubah Password (Anggota) Jika pada layar Main Screen user menekan Profil makan akan ditampilkan menu Change Password. Klik Ganti Password dan user harus memasukkan password lama, password baru dan ketik ulang password baru untuk konfirmasi. Tekan tombol Ubah untuk melakukan perubahan password dan kembali ke layar Utama. Tekan tombol Keluar untuk kembali ke Main Screen tanpa melakukan perubahan password. Gambar 4.39 Layar Tambah Anggota
180 Pada layar ini user dapat menambahkan anggota baru ke dalam basisdata. Untuk menambah anggota, user bisa mengisi textbox-textbox yang disediakan dengan data anggota yang ingin di-input dan menekan tombol Anggota-Tambah Anggota. Jika data semua sudah diisi maka user bisa mengklik tombol Simpan untuk menyimpan dalam basisdata, jika semua data sudah sesuai dengan kriteria. Dan tombol Kembali untuk kembali ke Main Screen tanpa melakukan perubahan di registrasi anggota. Gambar 4.40 Layar Edit Profile (Anggota) Pada layar ini user dapat menambah,dan mengubah informasi data Anggota (No Induk Anggota, Nama, Alamat, No Telp, Gender, Jabatan, Tanggal Lahir). Untuk menambah data Anggota, user bisa mengisi textbox-textbox yang disediakan dengan data Anggota yang ingin di-input, user terlebih dahulu login
181 menggunakan username dan password anggota kemudian setelah login tekan tombol Anggota kemudian Edit Profile. Untuk mengubah data seorang anggota, user harus memilih anggota yang diingkan. Setelah melakukan perubahan data anggota yang diinginkan user harus mengklik tombol Simpan dan textboxtextbox yang disediakan sudah diisi dengan validasi yang sesuai dengan ketentuan. Gambar 4.41 Layar Histori (Anggota) Halaman ini dapat dimunculkan dengan mengklik menu Histori. Layar ini berfungsi untuk menampilkan status histori peminjaman dan pengembalian Anggota.
182 Gambar 4.42 Layar Edit Profile (Staff) Halaman Edit Profile dapat dimunculkan dengan cara memilih menu Profil > Edit Profil, lalu akan muncul tampilan Edit Profile seperti gambar diatas ini, didalam menu Edit Profile ini user dapat memasukkan, dan memperbaharui data-data Staff seperti No.Induk Pegawai, Nama, Alamat, Gender, No.Telp,Tanggal Lahir, Password dan me-retype kembali password yang telah diinput. Tombol Simpan untuk menyimpan data-data yang telah diinput,,tombol Kembali untuk kembali ke main screen.
183 Gambar 4.43 Layar Lihat Buku (Staff) Halaman Lihat Buku dapat ditampilkan dengan cara memilih menu Buku > Lihat Buku, lalu akan muncul tampilan Lihat Buku seperti gambar diatas ini, didalam menu Lihat Buku ini user hanya dapat melihat daftar-daftar buku dan dapat mencari buku berdasarkan judul, nama pengarang atau nomor induk.
184 Gambar 4.44 Layar Lihat Buku (Anggota) Halaman Lihat Buku dapat ditampilkan dengan cara memilih menu Buku > Lihat Buku, lalu akan muncul tampilan Lihat Buku seperti gambar diatas ini, didalam menu Lihat Buku ini user hanya dapat melihat daftar-daftar buku dan dapat mencari buku berdasarkan judul, nama pengarang atau nomor induk. Gambar 4.45 Layar Lihat Profil Anggota (Anggota)
185 Halaman ini dapat dapat ditampilkan dengan cara login menggunakan username dan password anggota. Jika pada layar main screen user menekan menu peminjaman maka akan ditampilkan layar paminjaman. Gambar 4.46 Layar Peminjaman Buku (Staff) Layar ini berfungsi saat admin ingin melakukan peminjaman buku. Kode peminjaman dan NIP akan terisi secara otomatis ketika login. Admin diharuskan untuk mengisi judul buku yang ingin dipinjam, serta Tanggal kembali akan secara otomatis terisi sesuai dengan tanggal yang tertera pada desktop komputer, dan deadline pengembalian akan otomatis dibuat dengan jangka waktu satu minggu dari tanggal peminjaman.
186 Gambar 4.47 Layar Peminjaman Buku (Anggota) Layar ini berfungsi saat anggota perpustakaan ingin melakukan peminjaman buku. Kode peminjaman dan Kode Anggota akan terisi secara otomatis ketika login. User diharuskan untuk mengisi no induk buku, judul buku, dan jumlah buku yang ingin dipinjam, serta Tanggal kembali akan secara otomatis terisi sesuai dengan tanggal yang tertera pada desktop komputer, dan deadline pengembalian akan otomatis dibuat dengan jangka waktu satu minggu dari tanggal peminjaman. Jika pada layar Pengembalian, user menekan menu Pengembalian, maka akan ditampilkan layar Pengembalian Buku.
187 Gambar 4.48 Layar Pengembalian Buku Layar ini berfungsi untuk menampilkan data buku-buku yang sudah dipinjam oleh staff. Kode pengembalian sudah terisi secara otomatis. User hanya perlu mengklik tombol kembalikan dan klik tombol Ganti apabila buku rusak/hilang. Jika tombol Kembalikan di klik makan akan muncul layar seperti di bawah ini : Gambar 4.49 Layar Kembalikan Buku
188 Layar ini berfungsi untuk menampilkan keterangan rinci mengenai transaksi pengembalian buku yang telah di pilih untuk di kembalikan. Gambar 4.50 Layar Tambah Buku Tampilan layar Tambah Buku dapat dimunculkan dengan cara memilih Buku > Tambah Buku. Dalam menu Tambah Buku ini digunakan untuk meregistrasi buku yang baru masuk ke perpustakaan. Untuk meregistrasi buku baru user harus memasukkan data-data yang dibutuhkan, yaitu No.Induk Buku, Judul, Pengarang, ISBN, Tahun Terbit, Sinopsis, Penerbit dan Stok.
189 Gambar 4.51 Layar Tambah Staff Tampilan layar Tambah Staff dapat dimunculkan dengan cara login dengan username dan password staff kemudian memilih Staff > Tambah Staff. Menu Tambah Staff ini digunakan untuk meregistrasi data-data Pegawai Baru. Data yang dibutuhkan antara lain menginput No.Induk Pegawai, Nama, Alamat, Gender (terdiri dari 2 pilihan yaitu pria atau wanita), No.Telp, Tanggal Lahir, Password, dan Retype Password (menulis ulang Password yang telah kita isi). Gambar 4.52 Layar Tanggal Laporan Peminjaman
190 Tampilan layar laporan peminjaman dimunculkan dengan cara memilih menu laporan dan memilih menu sub laporan, dalam menu laporan peminjaman ini kita dapat memilih jangka waktu tanggal laporan peminjaman yang akan ditampilkan. Gambar 4.53 Layar Laporan Peminjaman Tampilan layar laporan peminjaman berdasarkan jangka waktu yang telah dipilih,laporan peminjaman ini juga dapat dicetak dengan cara memilih tombol print lalu akan muncul popup print preview seperti gambar diatas.
191 Gambar 4.54 Layar Tanggal Laporan Pengembalian Tampilan layar laporan peminjaman dimunculkan dengan cara memilih menu laporan dan memilih menu sub laporan, dalam menu laporan pengembalian ini kita dapatmemilih jangka waktu tanggal laporan pengembalian yang akan ditampilkan. Gambar 4.55 Layar Laporan Pengembalian
192 Tampilan layar laporan pengembalian berdasarkan jangka waktu yang telah dipilih,laporan pengembalian ini juga dapat dicetak dengan cara memilih tombol print lalu akan muncul popup print preview seperti gambar diatas. Gambar 4.56 Layar Tanggal Laporan Denda Tampilan layar laporan denda dimunculkan dengan cara memilih menu laporan laporan dan memilih menu sub laporan, dalam menu laporan denda ini kita dapatmemilih jangka waktu tanggal laporan denda yang akan ditampilkan.
193 Gambar 4.55 Layar Laporan Denda Tampilan layar laporan denda berdasarkan jangka waktu yang telah dipilih,laporan denda ini juga dapat dicetak dengan cara memilih tombol print lalu akan muncul popup print preview seperti gambar diatas. 4.3.5 Evaluasi Sistem Untuk evaluasi sistem ini, dilakukan pengujian terhadap domain integrity, entity integrity, references integrity, dan security pada basis data yang telah dirancang. 1. Domain Integrity Pengujian yang dilakukan adalah apakah nilai atribut yang dihasilkan telah seusai dengan domain yang telah ditetapkan sebelumnya. Contoh hal-hal yang diuji adalah sebagai berikut :
194 Domain atribut yang ditetapkan untuk No.Telp pada tabel Anggota hanya boleh berisi angka Domain atribut yang ditetapkan untuk Alamat pada tabel Staff tidak boleh lebih dari 100 karakter yang terdiri dari huruf dan angka Hasil evaluasi domain integrity menunjukkan bahwa seluruh tabel yang diuji telah memiliki domain integrity yang tepat 2. Entity Integrity Pengujian yang dilakukan adalah memastikan atribut seluruh tabel yang merupakan primary key tidak bernilai NULL dan tidak ada 2 record yang sama pada primary key suatu strong entity Hasil evaluasi entity integrity menunjukkan bahwa tabel yang ada telah memenuhi kriteria lulus uji. 3. References integrity Pengujian yang dilakukan adalah setiap tabel yang berhubungan memiliki foreign key dan nilai foreign key tersebut harus sesuai dengan primary key pada tabel yang terhubung. Sebagai contoh tabel Anggota terhubung dengan tabel Peminjaman. Nilai foreign key pada tabel Peminjaman harus sesuai dengan primary key pada tabel Anggota (No.IndukAnggota). Hasil evaluasi referential integrity membuktikan bahwa nilai foreign key dan primay key pada tabel yang terhubung telah sesuai.
195 4. Security Pengujian yang dilakukan adalah apakah seluruh tabel memiliki mekanisme keamanan yang baik sehingga tidak terjadi penyimpangan atau penyalahgunaan data. Sebagai contoh adalah sebagai berikut : Pengguna tidak dapat mengakses data tanpa melakukan proses login terlebih dahulu. Pengguna tidak dapat melakukan transaksi apabila belum memasukkan data-data yang diperlukan dengan lengkap, dan apabila terjadi ketidaksesuaian data yang dimasukkan maka pengguna akan menerima pesan kesalahan. Hasil evaluasi security menunjukkan menunjukkan bahwa seluruh tabel dapat mengikuti mekanisme keamanan dengan baik. 4.3.6 Evaluasi Interaksi Manusia dan Komputer 1. Berusaha untuk Konsisten Pada aplikasi perpustakaan ini, penggunaan font disesuaikan dengan jenis Times New Roman. setiap halaman memiliki logo jeeves di bagian atas beserta judul header yang bersangkutan. Textbox dan combobox untuk input data berwarna putih, Menu terletak di bagian kiri dengan background biru untuk setiap layar. Contoh dapat dilihat melalui gambar 4.37 Halaman 205 dan gambar 4.38.
196 2. Memiliki Kegunaan yang Universal Pada aplikasi perpustakaan ini, nama Menu di bagian kiri halaman Web didesain dengan fungsi yang sesuai dengan pandangan umum seperti pada gambar 4.37. 3. Memberikan Umpan Balik yang Informatif Pengguna aplikasi perpustakaan diberi suatu feedback untuk setiap aksi yang mereka lakukan atau pemberitahuan konfirmasi dalam bahasa yang mudah. Contoh dapat dilihat pada gambar 4.47. 4. Desain Dialog untuk Memberikan Penutupan (Keadaan Akhir) Aplikasi perpustakaan memberikan kemudahan bagi pengguna untuk mengetahui apa yang sedang dilakukan. Sebagai contoh pada gambar 4.44 ketika pengguna memasukkan nama judul buku yang ingin dicari pada menu search dan menekan tombol search maka akan muncul nama buku sesuai dengan apa yang dicari. 5. Penanganan Kesalahan yang Sederhana Penanganan kesalahan ketika pengguna melakukan kesalahan telah diintegrasikan pada aplikasi perpustakaan ini. Sebagai contoh apabila user salah dalam memasukkan username atau password ketika melakukan proses login, maka akan muncul sebuah error message. 6. Memungkinkan Pembalikan Aksi yang Sederhana Pemberian pembalikan aksi yang sederhana telah diintegrasikan pada aplikasi perpustakaan dengan tombol kembali. Seperti pada gambar 4.42 di mana bila tombol kembali diklik, pengguna akan
197 diredirect ke halaman sebelumnya dan dapat mengedit data yang sudah diinput sebelumnya. 7. Mendukung Pusat Kendali Internal Dalam aplikasi perpustakaan ini, pengguna sepenuhnya menguasai dan mengoperasikan sistem, dan sistem akan memberikan respon yang sesuai. Sebagai contoh dengan peletakan menu di bagian kiri yang bisa digunakan sebagai shortcut bagi pengguna untuk mengakses halaman-halaman yang diinginkan. 8. Mengurangi Beban Ingatan Jangka Pendek Pengguna dapat mengetahui letak atau apa layar yang sedang mereka akses karena ada judul dalam tiap layar yang mereka kunjungi beserta button menu yang menyediakan shortcut yang jelas. Seperti pada gambar 4.44 di mana ada menu di bagian kiri layar yang dapat digunakan kapan saja.