BAB 3 ANALISIS DAN PERANCANGAN SISTEM
3.1 Analisa Sistem yang Sedang Berjalan 3.1.1 Sejarah Perusahaan Pada awalnya Universitas Bina Nusantara merupakan sebuah kursus jangka pendek, yang berdiri tanggal 21 Oktober 1974 dengan nama Modern Computer Course. Berkat landasan yang kuat dan visi yang jelas, lembaga ini terus berkembang. Pada tanggal 1 Juli 1981, karena banyaknya peminat dan pesatnya pertumbuhan, berkembang menjadi Akademi Tehnik Komputer (ATK) dengan Jurusan Manajemen Informatika. Pada tanggal 13 Juli 1984, ATK mendapat Status terdaftar dan berubah menjadi AMIK Jakarta. Setahun kemudian, tepatnya tanggal 1 Juli 1985, dibuka Jurusan Komputerisasi Akuntansi, dan pada tanggal 21 September 1985, AMIK Jakarta berganti nama menjadi AMIK Bina Nusantara. Dalam usia mudanya, sebuah prestasi emas ditoreh AMIK Bina Nusantara dengan terpilih sebagai Akademi Komputer terbaik oleh Depdikbud melalui Kopertis Wilayah III Jakarta pada tanggal 17 Maret 1986. Peningkatan kebutuhan masyarakat akan tenaga-tenaga andal dalam bidang teknologi informasi mendorong dikembangkan AMIK menjadi STMIK (Sekolah Tinggi Manajemen Informatika dan Komputer) Bina Nusantara sejak tanggal 1 Juli 1986, STMIK (Sekolah Tinggi Manajemen Informatika dan
39
40 Komputer) Bina Nusantara didirikan dengan Program Strata-1 (S1) Jurusan Manajemen Informatika dan Teknik Informatika. Bersamaan dengan itu dibuka juga Jurusan Teknik Komputer (S1). Pada tanggal 9 November 1987, AMIK Bina Nusantara dilebur ke dalam STMIK Bina Nusantara hingga terbentuk sebuah lembaga yang menyelenggarakan Program Diploma III (DIII) dan Strata-1 (S1). STMIK Bina Nusantara berhasil memperoleh status Disamakan untuk semua Jurusan dan Jenjang pada tanggal 18 Maret 1992, dan pada tanggal 10 Mei 1993 mendapat kepercayaan untuk membuka Program Pascasarjana Magister Manajemen Sistem Informasi, salah satu program pascasarjana pertama di Indonesia dalam bidang ini. Pada tanggal 8 Agustus 1996, Universitas Bina Nusantara (UBiNus) berdiri dan secara sah diakui oleh Pemerintah. STMIK Bina Nusantara kemudian melebur ke dalam Universitas Bina Nusantara pada tanggal 20 Desember 1998, sehingga UbiNus memiliki: Fakultas Ilmu Komputer; Fakultas Ekonomi; Fakultas Teknik; Fakultas Sastra; Fakultas MIPA; dan Program Pascasarjana.
41 3.1.2 Struktur Organisasi
Board of Advisor
Yayasan BiNus / CEO
Senat U BiNus
Rektor WR I
WR II
Dibawah koor WAREK IBidang Akademik 1. PDC 2. BDP 3. BDA 4. LRC 5. CRP 6. Digital Library 7. CBDC 8. Pengabdian Masy
Unit Rektorat: - Staff Rektor/ Ass Rektor - QAC - Sekretariat Rektorat
Dibawah koor WAREK II – Bidang Operasional: 1. LRI 2. LOA 3. Dev IT 4. Opr IT 5. Div Lab S/W 6. Div Lab H/W 7. Div Lab Akun 8. Kemahasiswaan 9. Building Management 10.Keuangan 11. TM
Fasilkom
F. MIPA
F. Teknik
WR III
Dibawah koor WAREK III – Bidang Kerjasama dan Pemasaran: 1. C for B dan Kerja Sama 2. Pemasaran 3. Public Relation 4. Alumni Relationship 5. Binus Career 6. C for E
F. Ekonomi
F. Sastra
IUP
Gambar 3.1 Struktur Organisasi Universitas Bina Nusantara
42
Dekan
Kajur
Sekjur
KBI
Gambar 3.2 Struktur Organisasi Jurusan
3.1.3 Wewenang dan Tanggung Jawab •
Dekan Tanggung Jawab: o Tercapainya sasaran mutu Jurusan / Program Studi (PS) dibawah fakultas yang dipimpin. o Tercapainya sasaran mutu Jurusan dan PS dalam upaya pencapaian sasaran mutu Universitas Bina Nusantara. o Tercapainya sasaran mutu dosen binaan dalam fakultasnya. o Terciptanya iklim akademis yang kondusif yang mendukung kegiatan belajar-mengajar dalam fakultas. o Selarasnya kegiatan akademis di fakultas dengan visi dan misi Universitas Bina Nusantara.
43 o Tercapainya sasaran tingkat kepuasan pelanggan (dosen dan mahasiswa) dalam fakultas. o Terciptanya dan terjaganya citra baik fakultas di masyarakat. o Tercapainya sasaran efektifitas dan efisiensi manajemen sumber daya. o Terakreditasinya PS pada peringkat yang sudah ditarget. Wewenang: o Mengambil tindakan yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan kebijakan akademik dalam lingkup fakultas dan kebijakan pelaksanaan rencana kerja dan anggaran dalam fakultas. o Menyetujui pilihan dosen baru yang dilakukan oleh Jurusan / PS untuk diusulkan ke Rektor. o Mengambil tindakan yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan Kajur, Sekjur, Dosen , Koordinator Bidang Ilmu, Dosen Pembina Akademik Mahasiswa, dan dosen. o Mengambil tindakan yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan disiplin dan prestasi mahasiswa. o Ikut dalam menyusun kurikulum dan sistem operasionalnya sesuai dengan prosedur yang berlaku untuk diusulkan kepada Direktur Akademik.
44 o Mengambil tindakan yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan peningkatan layanan kepada dosen dan mahasiswa. o Melakukan
komunikasi
dengan
pihak
eksternal,
setelah
dikonsultasikan dengan Rektor. o Mengambil tindakan yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan peningkatan efektifitas dan efisiensi. o Menetapkan target peringkat dan waktu keikutsertaan dalam suatu proses akreditasi. •
Kajur Tanggung Jawab: o Tercapainya sasaran mutu Jurusan dan PS dalam upaya pencapaian sasaran mutu Universitas Bina Nusantara. o Tercapainya sasaran mutu dosen binaan jurusan. o Terciptanya iklim akademis yang kondusif yang mendukung kegiatan belajar-mengajar. o Selarasnya seluruh kegiatan akademis di PS dengan visi dan misi jurusan yang diturunkan dari visi dan misi Universitas Bina Nusantara. o Tercapainya sasaran tingkat kepuasan pelanggan (dosen dan mahasiswa) di Jurusan. o Terciptanya dan terjaganya citra baik PS di masyarakat.
45 o Tercapainya sasaran efektifitas dan efisiensi manajemen sumber daya. o Terakreditasinya PS pada peringkat yang sudah ditarget. Wewenang: o Mengambil tindakan yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan kebijakan akademik dalam lingkup PS dan kebijakan pelaksanaan rencana kerja dan anggaran Jurusan. o Mengambil tindakan yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan Sekjur, dosen inti , dan dosen. o Mengambil tindakan yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan disiplin dan prestasi mahasiswa. o Mengambil tindakan yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan peningkatan layanan kepada dosen dan mahasiswa. o Melakukan komunikasi dengan pihak eksternal sepengetahuan Dekan, setelah dikonsultasikan dengan Rektor. o Mengambil tindakan yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan peningkatan efektifitas dan efisiensi.
46 o Menetapkan target peringkat dan waktu keikutsertaan dalam suatu proses akreditasi. •
Sekjur Tanggung Jawab: o Ikut bertanggung jawab dalam tercapainya sasaran mutu Jurusan dan PS dalam upaya pencapaian sasaran mutu Universitas Bina Nusantara. o Ikut bertanggung jawab dalam tercapainya sasaran mutu dosen binaan Jurusan. o Ikut bertanggung jawab dalam terciptanya iklim akademis yang kondusif yang mendukung kegiatan belajar-mengajar. o Ikut bertanggung jawab atas selarasnya seluruh kegiatan akademis di PS dengan visi dan misi jurusan yang diturunkan dari visi dan misi Universitas Bina Nusantara. o Ikut bertanggung jawab tercapainya sasaran tingkat kepuasan pelanggan (dosen dan mahasiswa) di jurusan. o Ikut bertanggung jawab terciptanya dan terjaganya citra baik PS di masyarakat. o Ikut bertanggung jawab tercapainya sasaran efektifitas dan efisiensi manajemen sumber daya. o Ikut bertanggung jawab terakreditasinya PS pada peringkat yang sudah ditarget.
47 o Bertanggung jawab atas tercapainya perencanaan operasional perkuliahan dengan baik. o Bertanggung jawab atas tercapainya pelaksanaan monitoring pelaksanaan operasional perkuliahan dengan baik. o Bertanggung jawab atas pelaksanaan kegiatan skripsi dan / tugas akhir dengan baik. o Ikut bertanggung jawab terlaksananya tugas-tugas yang berkaitan dengan Jurusan. Wewenang: o Memberi masukan kepada Kajur yang terkait dengan kebijakan akademik dalam lingkup Jurusan/PS dan kebijakan pelaksanaan rencana kerja dan anggaran Jurusan/PS. o Memberi
masukan
kepada
Kajur
yang
berkaitan
dengan
penyeleksian dan pemilihan dosen baru yang akan diusulkan ke Rektor, memberi masukan dalam penilaian kerja sekjur, dosen inti dan dosen. o Memberi masukan kepada Kajur yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan disiplin dan prestasi dosen Koordinator Bidang Ilmu, Dosen Pembimbing Akademik Mahasiswa, dan dosen. o Memberi masukan kepada Kajur yang terkait dengan disiplin dan prestasi mahasiswa.
48 o Ikut menyusun kurikulum dan sistem operasionalnya sesuai dengan prosedur yang berlaku untuk diusulkan kepada Direktur Akademik dan Dekan. o Memberikan masukan kepada Kajur yang diperlukan sesuai dengan mekanisme yang ada untuk hal-hal yang terkait dengan peningkatan layanan kepada dosen dan mahasiswa. o Memberikan masukan kepada Kajur yang berhubungan dengan mekanisme yang ada untuk hal-hal yang terkait dengan peningkatan efektifitas dan efisiensi. o Ikut bersama Kajur menetapkan target peringkat dan waktu keikutsertaan dalam suatu proses akreditasi. •
KBI ( Koordinator Bidang Ilmu) Tanggung Jawab: o Bertanggung
jawab
terhadap
terlaksana
dan
tercapainya
pengembangan bidang ilmu yang diasuh sesuai dengan rencana yang telah ditetapkan. o Bertanggung jawab terhadap terlaksana dan tercapainya kegiatan penelitian dengan baik. o Bertanggung jawab terhadap terlaksana dan tercapainya forum ilmiah dengan baik. o Bertanggung jawab terhadap terlaksana dan tercapainya pembinaan dosen secara baik dibawah asuhannya.
49 Wewenang: o Mengusulkan kepada Kajur tentang perubahan mata kuliah dan materi kuliah yang dianggap telah kadaluwarsa. o Memberikan masukan kepada Kajur tentang perubahan kurikulum Jurusan/PS. o Mengusulkan kepada Kajur tentang kenaikan jenjang kepangkatan dosen home base. o Mengusulkan kepada Kajur tentang Judul Penelitian, Topik Seminar, dan pelatihan. o Mengusulkan kepada Kajur tentang pembukaan Bidang Ilmu baru.
3.1.4 Diagram Aliran Data Sistem yang Sedang Berjalan 3.1.4.1 Use Case Sistem Yang Sedang Berjalan Proses pembuatan soal-soal ujian dimulai dengan pembentukan tim dosen yang tunjuk oleh Jurusan. Dosen-dosen yang tergabung dalam tim dosen terdiri dari dosen-dosen yang mengajar mata kuliah yang sama. Setelah terbentuknya tim dosen, tim dosen tersebut akan memilih satu Koordinator Pembuat Soal (KPS). KPS dan Tim Dosen melakukan rapat penentuan bentuk soal ujian, materi yang akan diujikan, dan mengumpulkan usulan soal-soal sementara. Setelah soal-soal terkumpul, KPS akan menyusun soal-soal yang akan dikeluarkan dalam ujian sesuai dengan SAP dan hasil rapat bersama tim dosen. Soal-soal yang telah tersusun disebut dengan set soal.
50 Setelah set soal tersedia, KPS akan memberikan set soal kepada Koordinator Bidang Ilmu (KBI) untuk dicek apakah set soal tersebut valid untuk diujikan. Apabila soal tersebut tidak valid, maka KBI akan mengembalikan set soal tersebut kepada KPS untuk ditinjau kembali. Apabila soal tersebut valid, maka KBI akan menambahkan kop ujian lalu set soal tersebut diserahkan pada Jurusan. Jurusan akan memeriksa kembali set soal dari KBI, apabila soal tersebut dianggap tidak layak untuk diujikan, maka set soal tersebut akan dikembalikan kepada KBI. Apabila set soal tersebut layak diujikan, maka Jurusan akan memberikan soal tersebut ke bagian fotokopi untuk menggandakan soal-soal ujian. Bagian fotokopi akan mencetak laporan penerimaan soal-soal ujian.
51
Sistem persediaan soal ujian pada Universitas Bina Nusantara
membentuk tim dosen
Jurusan
Tim Dosen
menentukan KPS
mengumpulkan soal sementara
menentukan set soal
KPS
memeriksa set soal
KBI
Kirim soal
Cetak laporan penerimaan
Karyawan fotokopi menggandakan soal
Gambar 3.3 Use Case Sistem Persediaan Soal-Soal Ujian
52 3.1.4.2 Diagram Sequence Sistem yang Sedang Berjalan 3.1.4.2.1 Pembentukan Tim Dosen Proses
pembuatan
soal-soal
ujian
dimulai
dengan
pembentukan tim dosen yang tunjuk oleh Jurusan. Dosen-dosen yang tergabung dalam tim dosen terdiri dari dosen-dosen yang mengajar mata kuliah yang sama.
Gambar 3.4 Diagram Sequence Pembentukan Tim Dosen
3.1.4.2.2 Penentuan KPS Tim dosen tersebut akan memilih satu Koordinator Pembuat Soal (KPS).
53
Gambar 3.5 Diagram Sequence Penentuan KPS
3.1.4.2.3 Pengumpulan Soal-Soal Sementara dan Penentuan Set Soal KPS dan Tim Dosen melakukan rapat penentuan bentuk soal ujian, materi yang akan diujikan, dan mengumpulkan usulan soalsoal sementara. Setelah soal-soal terkumpul, KPS akan menyusun soal-soal yang akan dikeluarkan dalam ujian sesuai dengan SAP dan hasil rapat bersama tim dosen. Soal-soal yang telah tersusun disebut dengan set soal.
54
Gambar 3.6 Diagram Sequence Pengumpulan Soal-Soal Sementara dan Penentuan Set Soal
3.1.4.2.4 Pemeriksaan Set Soal Oleh KBI Setelah set soal tersedia, KPS akan memberikan set soal kepada KBI untuk dicek apakah set soal tersebut valid untuk diujikan. Apabila soal tersebut tidak valid, maka KBI akan mengembalikan set soal tersebut kepada KPS untuk ditinjau kembali. Apabila soal tersebut valid, maka KBI akan menambahkan kop ujian lalu set soal tersebut diserahkan pada Jurusan.
55
Gambar 3.7 Diagram Sequence Pemeriksaan Set Soal Oleh KBI
3.1.4.2.5 Pemeriksaan Set Soal Oleh Jurusan Jurusan akan memeriksa kembali set soal dari KBI, apabila soal tersebut dianggap tidak layak untuk diujikan, maka set soal tersebut akan dikembalikan kepada KBI.
Gambar 3.8 Diagram Sequence Pemeriksaan Set Soal Oleh Jurusan
56 3.1.4.2.6 Penggandaan Soal Apabila set soal tersebut layak diujikan, maka Jurusan akan memberikan soal tersebut ke bagian fotokopi untuk menggandakan soal-soal ujian. Bagian fotokopi akan mencetak laporan penerimaan soal-soal ujian.
Gambar 3.9 Diagram Sequence Penggandaan Soal
57 3.1.4.3 Class Diagram Jurusan
Mata Kuliah
-id_jurusan : char -nm_jurusan +kirim soal() +cek soal()
-kd_matkul : char -nm_matkul
Soal -kd_soal : char
Staff -kd_staff : char -nm_staff : char
KPS -kd_dosen : char -nm_dosen : char +cek soal() +pembuatan soal()
KBI
Tim Dosen
-kd_dosen : char
-kd_dosen
+cek soal()
+memembuat soal sementara()
Gambar 3.10 Class Diagram Sistem Persediaan Soal-Soal Ujian
58 3.1.5 Permasalahan yang Dihadapi Berdasarkan survei dan wawancara yang dilakukan, masalah-masalah yang dihadapi Jurusan yang berkaitan dengan soal-soal ujian adalah sebagai berikut: •
Penyimpanan soal-soal ujian yang tidak terstruktur, disimpan dalam bentuk Word dan berkas fisik.
•
Susahnya dilihat kembali berkas-berkas soal-soal ujian tersebut.
•
Penetapan bentuk dan soal-soal ujian yang tidak sesuai dengan kesepakatan awal Tim Dosen pembuat soal.
•
Penetapan soal-soal ujian yang tidak sesuai dengan SAP.
•
Susahnya pengecekan pada KBI untuk menyesuaikan dengan SAP dan kesepakatan awal Tim Dosen pembuat soal.
3.1.6 Analisis Kebutuhan Informasi Sebagai Universitas yang cukup maju, Bina Nusantara memerlukan sistem pembuatan soal yang baik untuk mendukung sistem. Soal-soal ujian yang diujikan hendaknya disesuaikan dengan SAP. Dimana SAP tersebut akan menentukan kualitas suatu matakuliah yang akan berpengaruh terhadap kualiatas Jurusan tersebut. Dalam membantu menentukan soal-soal yang layak diujikan, dibutuhkan suatu sistem yang memudahkan dosen atau KBI untuk mengontrol bahwa soal-soal yang dikeluarkan tersebut tidak melenceng dari SAP, dan bentuk soalnya sesuai dengan kesepakatan tim dosen pembuat soal. Dimana pada sistem tersebut, soalsoal ujian disimpan secara terstruktur.
59 Adapun informasi yang dibutuhkan berupa: •
Laporan persediaan soal
•
Laporan soal-soal yang diujikan
•
Laporan soal-soal yang belum dipakai pada waktu ujian
•
Menampilkan Dosen yang mengajar mata kuliah yang sama
3.1.7 Usulan Pemecahan Masalah Pemecahan masalah bagi Jurusan adalah dengan membangun aplikasi sistem basisdata untuk sistem persediaan soal-soal ujian. Dengan dibangunnya sistem tersebut maka penyimpanan soal-soal ujian menjadi lebih terstruktur dan mudah dilihat maupun mudah dipergunakan kembali. Aplikasi ini memungkinkan pengambilan soal-soal ujian dengan cepat, dan penghasilan soal-soal ujian yang sesuai dengan SAP sehingga memudahkan KBI untuk mengecek soal-soal tersebut. Aplikasi ini memudahkan tim dosen pembuat soal dalam menentukan soal-soal dan mencetak soal-soal yang akan diujikan. Tidak akan ada soal yang tercecer ataupun terbuang karena semua soal usulan dosen ditampung dan disimpan dalam sistem basisdata ini. Aplikasi ini digunakan ketika soal hendak disimpan, dan digunakan untuk menentukan soal-soal ujian beserta kunci jawaban. Proses ini memudahkan pengecekan kesesuaian soal dengan SAP.
60 3.1.8 Diagram Aliran Data Sistem yang Diusulkan 3.1.8.1 Use Case Sistem Yang Diusulkan Proses pembuatan soal-soal ujian dimulai dengan pembentukan tim dosen yang tunjuk oleh Jurusan. Dosen-dosen yang tergabung dalam tim dosen terdiri dari dosen-dosen yang mengajar mata kuliah yang sama. Tim Dosen melakukan rapat penentuan bentuk soal ujian, materi yang akan diujikan, dan mengumpulkan soal-soal yang terkait. Soal-soal ujian sebelumnya sudah dimasukkan kedalam sistem persediaan soal-soal oleh Jurusan. Soal-soal usulan dosen akan disimpan ke dalam sistem persediaan soal-soal. Setelah Tim Dosen memberikan kepada Koordinator Bidang Ilmu (KBI) kriteria soal ujian, bentuk soal ujian dan materi yang akan diujikan ( jumlah soal tiap pertemuan dan tiap bobot kesulitan soal) maka KBI akan mengacak soal-soal ujian menggunakan aplikasi yang dirancang. KBI akan mengirimkan set soal tersebut beserta formulir penggandaan ke bagian fotokopi untuk menggandakan set soal ujian. Bagian fotokopi akan mencetak laporan penerimaan set soal ujian dan menggandakan set soal.
61
Gambar 3.11 Use Case Sistem Persediaan Soal-Soal Ujian yang Diusulkan
62 3.1.8.2 Diagram Sequence Sistem yang Diusulkan 3.1.8.2.1 Pembentukan Tim Dosen Proses
pembuatan
soal-soal
ujian
dimulai
dengan
pembentukan tim dosen yang tunjuk oleh Jurusan. Dosen-dosen yang tergabung dalam tim dosen terdiri dari dosen-dosen yang mengajar mata kuliah yang sama.
Gambar 3.12 Diagram Sequence Pembentukan Tim Dosen yang Diusulkan
3.1.8.2.2 Penentuan Kriteria Soal Ujian Tim Dosen melakukan rapat penentuan bentuk soal ujian, materi yang akan diujikan, dan mengumpulkan soal-soal yang terkait. Soal-soal ujian sebelumnya sudah dimasukkan kedalam sistem persediaan soal-soal oleh Jurusan. Soal-soal usulan dosen akan disimpan ke dalam sistem persediaan soalsoal.
63
Gambar 3.13 Diagram Sequence Penentuan Kriteria Soal Ujian yang Diusulkan
3.1.8.2.3 Penggandaan Soal Apabila set soal tersebut layak diujikan, maka Jurusan akan memberikan soal tersebut ke bagian fotokopi untuk menggandakan soal-soal ujian. Bagian fotokopi akan mencetak laporan penerimaan soal-soal ujian.
Gambar 3.14 Diagram Sequence Penggandaan Soal yang Diusulkan
64 3.1.8.3 Class Diagram Sistem yang Diusulkan
Gambar 3.15 Class Diagram Sistem Persediaan Soal-Soal Ujian yang Diusulkan
65 3.2 Perancangan Sistem Basisdata yang Diusulkan 3.2.1 Perancangan Konseptual 3.2.1.1 Mengidentifikasikan Tipe Entitas
Entity Soal
Description
Aliases
Occurence
Berisi soal-soal yang Soal
Soal-soal
ujian
dibuat oleh Dosen
dibuat 2 kali dalam satu semester yaitu soal ujian tengah semester dan soal ujian akhir semester beserta soal ujian susulan
dan soal
cadangannya. Ujian
Berisi
data-data Ujian
tentang ujian
Data-data
ujian
yang ada tiap kali ujian dilaksanakan.
Staff
Berisi data staff baik Dosen, Karyawan
Staff yang bekerja
nama, noTelp, dsb
di Universitas dapat berupa
karyawan,
atau dosen. MataKuliah
Berisi Kuliah
data
Mata Mata Kuliah
Mata Kuliah yang terdapat
dalam
66 Entity
Description
Aliases
Occurence suatu jurusan.
Jurusan
Berisi
data
nama- Jurusan
Bidang-bidang
nama jurusan
pendidikan tersedia
yang dalam
Universitas
Bina
Nusantara Tabel 3.1 Data Dictionary
3.2.1.2 Mengidentifikasikan Tipe Relasional Entity Name
Multiplicity
Relationship
Entity Name
Multiplicity
Jurusan
1... *
Manages
MataKuliah
1... *
MataKuliah
1... 1
Has
Soal
1... *
Soal
1... *
Supports
Ujian
1... *
1... 1
Determinates
Soal
1...*
1... 1
Supervises
Staff
1... *
1... *
Teaches
MataKuliah
1... *
1... *
Passes
Staff
1... 1
Staff
Ujian
Tabel 3.2 Kamus Data yang Menunjukkan Relasi antar Tipe Entitas
67 Setiap Jurusan dapat mengatur Mata Kuliah lebih dari satu, dan satu Mata Kuliah dapat diatur oleh beberapa Jurusan. Setiap Mata kuliah memiliki banyak soal-soal ujian, dan tiap soal-soal ujian pasti dimiliki oleh satu Mata Kuliah. Ujian memiliki banyak Soal, dan satu Soal bisa memiliki satu atau banyak Soal turunan. Staff diawasi oleh supervisor. Dimana supervisor itu sendiri merupakan staff juga.
Gambar 3.16 Entity Relationship Diagram (ERD) Model Data Konseptual
3.2.1.3 Identifikasi, Asosiasi Atribut Suatu Entiti dan Penentuan Domain Atribut Entity
Attribute
Description
Name Jurusan
Data Type and
Nulls
Length kdJurusan
Kode
yang VARCHAR(2)
Multivalued
NO
NO
Nama Jurusan yang VARCHAR(30) NO
NO
mendeskripsikan Jurusan secara unik nmJurusan
ada di UBiNus
68 Entity
Attribute
Description
Data Type and
Name MataKuliah
Nulls
Length kdMatKul
Kode
yang VARCHAR(5)
Multivalued
NO
NO
Nama mata kuliah VARCHAR(30) NO
NO
mendeskripsikan mata kuliah secara unik nmMatKul
yang ada di UbiNus sks
Satuan mata kuliah
VARCHAR(3)
NO
NO
idMatKul
Kode
yang VARCHAR(5)
NO
NO
NO
NO
VARCHAR(50) NO
NO
mendefinisikan matakuliah kode
mata
dengan kuliah
berbeda
tetapi
merupakan
mata
kuliah yang sama / ekivalen. Staff
kdStaff
Kode
yang VARCHAR(5)
mendefinisikan Staff secara unik nmStaff
Nama Staff
kdJabatan
Kode jabatan yang VARCHAR(5) sedang
NO
NO
69 Entity
Attribute
Description
Data Type and
Name
Nulls
Length
Multivalued
disandangnya. nmJabatan
Jabatan
yang VARCHAR(15) NO
NO
dipunyai staff dalam suatu divisi email
Alamat email staff
VARCHAR(30) NO
NO
alamatStaff
Alamat staff
VARCHAR(80) NO
NO
noTelp
NoTelp staff
VARCHAR(15) YES
YES
noHp
Nomor noHp staff
VARCHAR(13) YES
YES
tglMasuk
Tanggal dimana staff DATETIME(),
NO
NO
YES
NO
NO
NO
Nama mata kuliah VARCHAR(30) NO
NO
mulai
di Length(10)
bekerja
UbiNus,
format
(dd/mm/yyyy) tglKeluar
Tanggal dimana staff DATETIME(), tidak lagi bekerja di Length(10) UbiNus,
format
(dd/mm/yyyy) kdMatKul
Kode
yang VARCHAR(5)
mendeskripsikan mata kuliah secara unik nmMatKul
70 Entity
Attribute
Description
Data Type and
Name
Nulls
Length
Multivalued
yang diajar oleh staff semester
Semester,
ganjil(1), VARCHAR(1)
NO
NO
NO
NO
VARCHAR(1)
NO
NO
yang VARCHAR(5)
NO
NO
NO
NO
Nama mata kuliah VARCHAR(30) NO
NO
genap(2), pendek(3), format (1/2/3) thnAjaran
Tahun ajaran pada VARCHAR(9) saat Staff mengajar
shift
Shift kuliah reguler
(0),
malam(1),
format
(0/1) Ujian
kdSoalUjian
Kode
mendeskripsikan set soal ujian secara unik kdMatKul
Kode
yang VARCHAR(5)
mendeskripsikan mata kuliah secara unik nmMatKul
yang diajar oleh staff tglUjian
Tanggal
soal
dikeluarkan
itu DATETIME(), pada Length(10)
NO
NO
71 Entity
Attribute
Description
Data Type and
Name
Nulls
Length saat
ujian,
Multivalued
format
(dd/mm/yyyy) semester
Semester,
ganjil(1), VARCHAR(1)
NO
NO
genap(2), pendek(3), format (1/2/3) thnAjaran
Tahun ajaran ujian
VARCHAR(9)
NO
NO
sifatUjian
Ujian tutup buku (0) VARCHAR(1)
NO
NO
NO
NO
VARCHAR(15) NO
NO
atau ujian buka buku (1), format (0/1) kalkulator
Aturan
penggunaan VARCHAR(1)
kalkulator (1), atau tidak
boleh
menggunakan kalkulator
(0),
format(0/1) fakultas
Nama fakultas
kdJurusan
Kode
yang VARCHAR(2)
NO
NO
Nama Jurusan yang VARCHAR(30) NO
NO
mendeskripsikan Jurusan secara unik nmJurusan
ada di UbiNus
72 Entity
Attribute
Description
Data Type and
Name
Nulls
Length jamUjian
Jam dilaksanakannya DATETIME() ujian.
Multivalued
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
Format
(hh:mm – hh:mm) shift
Shift
kelas
yang VARCHAR(1)
melakukan
ujian,
reguler
(0),
malam(1),
format
(0/1) status
Status soal ujian uts VARCHAR(1) (m), uas (f), susulan (s), ujian semester pendek
(p),
ujian
lain-lain (l) format (m/f/s/p/l) Soal
kdQs
Kode
yang VARCHAR(7)
mendefinisikan pertanyaan
secara
unik pertanyaan
Pertanyaan
VARCHAR (300)
jawaban
Jawaban
atas VARCHAR(1)
73 Entity
Attribute
Description
Data Type and
Name
Nulls
Length
Multivalued
pertanyaan kdPilihan
Kode
yang VARCHAR(7)
NO
NO
NO
NO
NO
NO
YES
NO
YES
NO
YES
NO
mendeskripsikan pilihan secara unik dari suatu pertanyaan a
Pilihan
jawaban VARCHAR
pertama b
Pilihan
(200) jawaban VARCHAR
kedua c
Pilihan
(200) jawaban VARCHAR
ketiga d
Pilihan
(200) jawaban VARCHAR
keempat e
nmParameter
Pilihan
(200) jawaban VARCHAR
kelima
(200)
Nama Parameter
VARCHAR(15) NO
nilaiParameter Parameter
dari VARCHAR
pertanyaan bobot
Tingkat
NO
NO
YES
NO
NO
NO
NO
(200) kesulitan VARCHAR(2)
soal (C1 ... C5) kdDeterminan
Kode
yg VARCHAR(7)
74 Entity
Attribute
Description
Name
Data Type and
Nulls
Length
Multivalued
mengidentifikasikan soal induk pertemuan
Pertemuan
dimana VARCHAR(2)
NO
Mata Kuliah tersebut diajarkan. Tabel 3.3 Identifikasi Atribut dan Domain Atribut
3.2.1.4 Identifikasi Kandidat dan Primary Key Setiap Entitas Entity Name
Candidate
Primary Key
Jurusan
kdJurusan
kdJurusan
MataKuliah
kdMatKul
kdMatKul
idMatKul Staff
kdStaff
kdStaff
kdJabatan Soal
kdQs
kdQs
kdPilihan Ujian
kdSoalUjian
kdSoalUjian
kdMatKul kdStaff kdJurusan Tabel 3.4 Indentifikasi Kandidat dan Primary Key Setiap Entitas
NO
75
Gambar 3.17 Entity Relationship Diagram Model Data Konseptual with Primary Key
3.2.1.5 Pengunaan Enhanced Modeling Concept Tahap
ini
bertujuan
untuk
mempertimbangkan
penggunaan
Enhanced Modeling Concept, dimana didalamnya termasuk spesialisasi/ generalisasi, agregasi, dan komposisi.
76
determinates 1...1
SoalInduk
Jurusan kdJurusan
Supervises
1…*
Supervisor
{Optional}
Manages
1…1 {Optional}
1…*
1…* Staff
Soal
1…*
kdStaff
1…*
kdQs 1…*
1…1
Passes
1…*
MataKuliah
1…*
1...1 Includes
kdMatKul
1…*
1…* Ujian kdSoalUjian
Teaches
Gambar 3.18 Enhanced Entity Relationship Diagram (EERD)
3.2.1.6 Validasi Transaksi Tahapan ini bertujuan untuk memastikan model konseptual untuk mendukung transaksi yang dibutuhkan oleh view. Dalam hal ini digunakan jalur arah transaksi (pathways) yang digambarkan dalam diagram ER untuk memeriksa model konseptual lokal agar mendukung transaksi. Adapun transaksi-transaksi yang terjadi adalah sebagai berikut: a. Melihat detil staff yang dibawahi oleh nama-nama supervisor. b. Melihat detil dari semua data staff. c. Pencatatan atau penambahan soal-soal ujian yang dilakukan oleh staff (Koordinator Pembuat Soal). d. Pengambilan soal-soal ujian secara random sesuai ketentuan. e. Pemeriksaan soal-soal ujian yang sudah dipilih yang akan diujikan.
77 f. Pencetakan soal-soal ujian dan penggandaan soal. g. Pencatatan detil dari Mata Kuliah yang diasuh oleh Jurusan. h. Penampilan soal-soal yang disimpan berdasarkan Mata Kuliah. i. Melihat semua soal turunan dari suatu soal induk. j. Menampilkan soal-soal yang dipakai dalam ujian tahun ini. k. Menampilkan dosen-dosen yang mengajar berdasarkan Mata Kuliah. Dari transaksi-transaksi tersebut, maka dengan menggunakan gambar 3.19. (Diagram ER yang menggambarkan relasi antar entiti dengan penambahan primary key) akan dapat ditentukan pathways dari transaksi-transaksi yang ada. Sehingga model konseptual untuk mendukung transaksi pemakai dengan
Supports
menggunakan pathways dapat dilihat pada gambar sebagai berikut :
Gambar 3.19 Model Konseptual yang mendukung Transaksi User dengan menggunakan Pathways
78 3.2.2 Perancangan Logical 3.2.2.1 Menghilangkan fitur yang tidak sesuai dengan model relasional (optional). 1. Menghilangkan many-to-many binary relationship a. Jurusan dengan MataKuliah Jurusan dan MataKuliah memiliki relasi Manages *:* oleh karena
itu
dilakukan
penghilangan
many-to-many
dengan
menambahkan satu entitas diantaranya, yaitu JurPembina.
Gambar 3.20 Relasi many to many Jurusan dengan MataKuliah
Gambar 3.21 Menguraikan Relasi Jurusan dan MataKuliah b. Staff dengan MataKuliah Staff dan MataKuliah memiliki relasi Teaches *:* oleh karena
itu
dilakukan
penghilangan
many-to-many
menambahkan satu entitas diantaranya, yaitu TransKul.
dengan
79
Gambar 3.22 Relasi many to many Staff dengan MataKuliah
Gambar 3.23 Menguraikan Relasi Staff dan MataKuliah
c. Ujian dengan Soal Ujian dan Soal memiliki relasi Supports *:* oleh karena itu dilakukan penghilangan many-to-many dengan menambahkan satu entitas diantaranya, yaitu UjianDetil
Gambar 3.24 Relasi many to many Ujian dengan Soal
80
Gambar 3.25 Menguraikan Relasi Ujian dan Soal
2. Menghilangkan atribut multivalue a. TelpStaff Entitas staff mempunyai atribut noTelp yang bisa multivalue. Oleh karena itu perlu dilakukan pemisahan menjadi satu entitas baru yaitu TelpStaff dengan primary key yaitu noTelp dan kdStaff. Hal ini diasumsikan bahwa kemungkinan bisa ada lebih dari satu orang yang memiliki nomor noTelp yg sama.
Gambar 3.26 Entitas Staff dengan Atribut noTelp yang multivalue
Gambar 3.27 Menguraikan Atribut noTelp menjadi Entitas Baru Bernama TelpStaff
81 b. HpStaff Entitas Staff mempunyai atribut noHp yang bisa multivalue. Oleh karena itu perlu dilakukan pemisahan menjadi satu entitas baru yaitu HpStaff dengan noHp sebagai primary key.
Gambar 3.28 Entitas Staff dengan Atribut noHp yang multivalue
Gambar 3.29 Menguraikan Atribut noHp menjadi Entitas Baru Bernama HpStaff
c. Parameter Entitas Soal mempunyai atribut nilaiParameter yang bisa multivalue. Oleh karena itu perlu dilakukan pemisahan menjadi satu entitas baru yaitu Parameter dengan primary key kdParameter.
Gambar 3.30 Entitas Soal dengan Atribut parameter yang multivalue
82
Gambar 3.31 Menguraikan Atribut parameter menjadi Entitas Baru Bernama Parameter
3.2.2.2 Mengambil relasi untuk Model Data Logikal Lokal 1. One to Many Binary Relationship Types. a. MataKuliah dan Soal Hubungan one to many terlihat antara entitas MataKuliah dan Soal.
83 Oleh karena itu masukan MataKuliah (kdMatKul) kedalam Soal dari model 1:* relasi Has.
MataKuliah
(kdMatKul,
nmMatKul, Soal (kdQs, kdMatKul, pertanyaan,
sks, idMatKul)
kdPilihan, a, b, c, d , e, jawaban, bobot, pertemuan )
Primary Key kdMatKul
Primary Key kdQs Foreign Key kdMatKul
Tabel 3.5 Foreign Key untuk Entitas Soal
b. Staff dan Ujian Hubungan one to many terlihat antara entitas Staff dan Ujian. Oleh karena itu masukan Staff (kdStaff) kedalam Ujian dari model 1:* relasi Passes.
84
Staff (kdStaff, nmStaff, alamatStaff, Ujian (kdSoalUjian, kdStaff, kdMatKul, email, tglMasuk, tglKeluar, kdJabatan)
nmMatKul, thnAjaran, fakultas,
tglUjian,
semester,
sifatUjian,
kalkulator,
kdJurusan,
nmJurusan,
jamUjian, shift, status) Primary Key kdMatKul
Primary Key kdSoalUjian Foreign
Key
kdStaff,
kdMatKul,
kdJurusan
Tabel 3.6 Foreign Key untuk Entitas Ujian
2. Superclass/ Subclass Relationship Types. Hubungan superclass/subclass dapat dilihat antara Staff dan Supervisor. Penentuan primary key dan foreign key: Staff (kdStaff, nmStaff, kdJabatan, nmJabatan, alamatStaff, email, tglMasuk, tglKeluar, supervisorKdStaff) Primary Key kdStaff Foreign Key supervisorKdStaff references Staff(kdStaff).
Hubungan superclass/subclass dapat dilihat antara Soal dan SoalInduk dengan multiplicity one to many. Penentuan primary key dan foreign key:
85 Soal (kdQs, kdMatKul, pertanyaan, kdPilihan, a, b, c, d , e, jawaban, bobot, pertemuan, kdDeterminan) Primary Key kdQs Foreign Key kdDeterminan references Soal(kdQs) Foreign Key kdMatKul references MataKuliah(kdMatKul)
3. Many-to-many (*:*) Binary Relationship Types. Hubungan Many-to-many binary relationship terlihat pada entitas Jurusan dan MataKuliah sehingga menghasilkan entitas baru yaitu JurPembina. Primary Key dari JurPembina merupakan gabungan dari primary key Jurusan dan MataKuliah.
Jurusan (kdJurusan, nmJurusan)
MataKuliah (kdMatKul, nmMatKul, sks, idMatKul)
Primary Key kdJurusan
Primary Key kdMatKul
JurPembina (kdPembina. kdJurusan, kdMatKul) Primary Key kdPembina Foreign Key kdJurusan references Jurusan(kdJurusan) Foreign Key kdMatKul references MataKuliah(kdMatKul) Tabel 3.7 Foreign Key untuk Entitas JurPembina
86 Pada entitas Staff dan MataKuliah juga terdapat hubungan many-to-many sehingga muncul entitas TransKul.
Staff (kdStaff, nmStaff, kdJabatan, MataKuliah (kdMatKul, nmMatKul, nmJabatan,
alamatStaff,
tglMasuk,
email, sks, idMatKul) tglKeluar,
supervisorKdStaff) Primary Key kdStaff
Primary Key kdMatKul
TransKul (kdTransKul, kdStaff, kdMatKul, shift, thnAjaran, semester) Primary Key kdTransKul Foreign Key kdStaff references Staff(kdStaff) Foreign Key kdMatKul references MataKuliah(kdMatKul) Tabel 3.8 Foreign Key untuk TransKul
87 Pada entitas Ujian dan Soal juga terdapat hubungan many-to-many sehingga muncul entitas UjianDetil.
Ujian kdMatKul,
(kdSoalUjian, nmMatKul,
semester,
thnAjaran,
kalkulator,
fakultas,
kdStaff, Soal (kdQs, kdMatKul, pertanyaan, tglUjian, kdPilihan, a, b, c, d , e, jawaban, sifatUjian, bobot, pertemuan, kdDeterminan) kdJurusan,
nmJurusan, jamUjian, shift, status) Primary Key kdSoalUjian
Primary Key kdQs
UjianDetil (kdSoalUjian, kdQs) Primary Key kdSoalUjian, kdQs Foreign Key kdSoalUjian references Ujian(kdSoalUjian) Foreign Key kdQs references Soal(kdQs) Tabel 3.9 Foreign Key untuk UjianDetil
88 3. Multi-Valued Attributes. Entitas Staff memiliki atribut multivalued yaitu noTelp, sehingga atribut noTelp dipisah menjadi entitas TelpStaff dengan atribut noTelp itu sendiri sebagai primary key-nya. Primary key dari entitas Staff ditransfer ke entitas TelpStaff sebagai foreign key.
Staff (kdStaff, nmStaff, kdJabatan, TelpStaff (noTelp, kdStaff) nmJabatan,
alamatStaff,
tglMasuk,
email, tglKeluar,
supervisorKdStaff)
Primary Key kdStaff
Primary Key noTelp, kdStaff Foreign
Key
kdStaff
Staff(kdStaff) Tabel 3.10 Foreign Key untuk TelpStaff
references
89 Entitas Staff memiliki atribut multivalued yaitu noHp, sehingga atribut noHp dipisah menjadi entitas HpStaff dengan atribut noHp itu sendiri sebagai primary key-nya. Primary key dari entitas Staff ditransfer ke entitas HpStaff sebagai foreign key.
Staff (kdStaff, nmStaff, kdJabatan, HpStaff (noHp, nmJabatan,
alamatStaff,
tglMasuk,
kdStaff)
email, tglKeluar,
supervisorKdStaff)
Primary Key kdStaff
Primary Key noHp Foreign
Key
kdStaff
Staff(kdStaff) Tabel 3.11 Foreign Key untuk HpStaff
references
90 Entitas
Soal
memiliki
atribut
multivalued
yaitu
nilaiParameter, sehingga atribut nilaiParameter dipisah menjadi entitas Parameter dengan atribut nilaiParameter itu sendiri sebagai primary key-nya. Primary key dari entitas Soal ditransfer ke entitas Parameter sebagai primary key dan sekaligus foreign key.
Soal (kdQs, kdMatKul, pertanyaan, Parameter(kdParameter,
kdQs,
kdPilihan, a, b, c, d , e, jawaban, nmParameter, nilaiParameter) bobot, pertemuan, kdDeterminan) Primary Key kdQs
Primary Key kdParameter Foreign
Key
kdQs
Soal(kdQs) Tabel 3.12 Foreign Key untuk Parameter
references
91 Adapun relasi untuk model data logikal lokal dapat ditentukan pada tabel sebagai berikut :
Jurusan (kdJurusan, nmJurusan) Primary Key kdJurusan MataKuliah (kdMatKul, nmMatKul, sks, idMatKul) Primary Key kdMatKul Soal (kdQs, kdMatKul, pertanyaan, kdPilihan, a, b, c, d , e, jawaban, bobot, pertemuan, kdDeterminan) Primary Key kdQs Foreign Key kdDeterminan references Soal(kdSoalUjian) Foreign Key kdMatKul references MataKuliah(kdMatKul) Ujian (kdSoalUjian, kdStaff, kdMatKul, nmMatKul, tglUjian, semester, thnAjaran, sifatUjian, kalkulator, fakultas, kdJurusan, nmJurusan, jamUjian, shift, status) Primary Key kdSoalUjian Foreign Key kdStaff references Staff(kdStaff) Foreign Key kdMatKul references MataKuliah(kdMatKul) Foreign Key kdJurusan references Jurusan(kdJurusan) UjianDetil (kdSoalUjian, kdQs) Primary Key kdSoalUjian, kdQs Foreign Key kdQs references Soal(kdQs) Staff (kdStaff, nmStaff, kdJabatan, nmJabatan, alamatStaff, email, tglMasuk,
92 tglKeluar, supervisorKdStaff) Primary Key kdStaff Foreign Key supervisorKdStaff references Staff(kdStaff) JurPembina (kdPembina. kdJurusan, kdMatKul) Primary Key kdPembina Foreign Key kdJurusan references Jurusan(kdJurusan) Foreign Key kdMatKul references MataKuliah(kdMatKul) TransKul (kdTransKul, kdStaff, kdMatKul, shift, thnAjaran, semester) Primary Key kdTransKul Foreign Key kdStaff references Staff(kdStaff) Foreign Key kdMatKul references MataKuliah(kdMatKul) TelpStaff (noTelp, kdStaff) Primary Key noTelp, kdStaff Foreign Key kdStaff references Staff(kdStaff) HpStaff (noHp, kdStaff) Primary Key noHp Foreign Key kdStaff references Staff(kdStaff) Parameter(kdParameter, kdQs, nmParameter, nilaiParameter) Primary Key kdParameter Foreign Key kdQs references Soal(kdQs) Tabel 3.13 Model Data Logical Lokal
93 3.2.2.3 Validasi Relasi dengan Normalisasi Untuk entitas Jurusan dan MataKuliah telah normal sehingga tidak perlu dilakukan normalisasi lagi. Soal 1NF : Soal (@kdQs, kdMatKul, pertanyaan, kdPilihan, a, b, c, d , e, jawaban, bobot, pertemuan, kdDeterminan)
2NF: Soal (@kdQs, kdMatKul, pertanyaan, kdPilihan, a, b, c, d , e, jawaban, bobot, pertemuan, kdDeterminan)
3NF: Soal
(@kdQs,
kdMatKul,
pertanyaan,
bobot,
pertemuan,
kdDeterminan) Pilihan (@kdPilihan, kdQs, a, b, c, d, e, jawaban)
Ujian 1NF: Ujian (@kdSoalUjian, kdStaff, kdMatKul, nmMatKul, tglUjian, semester, thnAjaran, sifatUjian, kalkulator, fakultas, kdJurusan, nmJurusan, jamUjian, shift, status)
94 2NF: Ujian (@kdSoalUjian, kdStaff, kdMatKul, nmMatKul, tglUjian, semester, thnAjaran, sifatUjian, kalkulator, fakultas, kdJurusan, nmJurusan, jamUjian, shift, status)
3NF: Ujian (@kdSoalUjian, kdStaff, kdMatKul, tglUjian, semester, thnAjaran, sifatUjian, kalkulator, fakultas, kdJurusan, jamUjian, shift, status) Jurusan (@kdJurusan, nmJurusan) MatKul (@kdMatKul, nmMatKul, sks, idMatKul)
Staff 1NF: Staff (@kdStaff, nmStaff, kdJabatan, nmJabatan, alamatStaff, email, tglMasuk, tglKeluar, supervisorKdStaff)
2NF: Staff (@kdStaff, nmStaff, kdJabatan, nmJabatan, alamatStaff, email, tglMasuk, tglKeluar, supervisorKdStaff)
95 3NF: Staff (@kdStaff, kdJabatan, nmStaff, alamatStaff, email, tglMasuk, tglKeluar, supervisorKdStaff) Jabatan (@kdJabatan, nmJabatan)
96
Gambar 3.31 Diagram Model Relational Logikal Lokal
97 3.2.2.4 Menentukan Integrity Constraint Jurusan (kdJurusan, nmJurusan) Primary Key kdJurusan
MataKuliah (kdMatKul, nmMatKul, sks, idMatKul) Primary Key kdMatKul
JurPembina (kdPembina. kdJurusan, kdMatKul) Primary Key kdPembina Foreign Key kdJurusan references Jurusan(kdJurusan) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key kdMatKul references MataKuliah(kdMatKul) ON UPDATE CASCADE ON DELETE NO ACTION
Staff (kdStaff, nmStaff, kdJabatan, alamatStaff, email, tglMasuk, tglKeluar, supervisorKdStaff) Primary Key kdStaff Foreign Key kdJabatan references Jabatan(kdJabatan) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key supervisorKdStaff references Staff(kdStaff) ON UPDATE NO ACTION ON DELETE NO ACTION
98 Jabatan (kdJabatan, nmJabatan) Primary key kdJabatan
Soal (kdQs, kdMatKul, pertanyaan, jawaban, bobot, pertemuan, kdDeterminan) Primary Key kdQs Foreign Key kdDeterminan references Soal (kdQs) ON UPDATE NO ACTION ON DELETE NO ACTION Foreign Key kdMatKul references MataKuliah(kdMatKul) ON UPDATE CASCADE ON DELETE NO ACTION
Ujian (kdSoalUjian, kdStaff, kdMatKul, tglUjian, semester, thnAjaran, sifatUjian, kalkulator, fakultas, kdJurusan, jamUjian, shift, status) Primary Key kdSoalUjian Foreign Key kdJurusan references Jurusan (kdJurusan) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key kdStaff references Staff(kdStaff) ON UPDATE NO ACTION ON DELETE NO ACTION Foreign Key kdMatKul references MataKuliah(kdMatKul) ON UPDATE NO ACTION ON DELETE NO ACTION
99 UjianDetil (kdSoalUjian, kdQs) Primary Key kdSoalUjian, kdQs Foreign Key kdSoalUjian references Ujian(kdSoalUjian) ON UPDATE CASCADE ON DELETE CASCADE Foreign Key kdQs references Soal(kdQs) ON UPDATE NO ACTION ON DELETE NO ACTION
TransKul (kdTransKul, kdStaff, kdMatKul, shift, thnAjaran, semester) Primary Key kdTransKul Foreign Key kdStaff references Staff(kdStaff) ON UPDATE CASCADE ON DELETE NO ACTION Foreign Key kdMatKul references MataKuliah(kdMatKul) ON UPDATE CASCADE ON DELETE NO ACTION
HpStaff (noHp, kdStaff) Primary Key noHp Foreign Key kdStaff references Staff(kdStaff) ON UPDATE CASCADE ON DELETE CASCADE
TelpStaff (noTelp, kdStaff) Primary Key noTelp, kdStaff Foreign Key kdStaff references Staff(kdStaff)
100 ON UPDATE CASCADE ON DELETE CASCADE
Pilihan (kdPilihan, kdQs, a, b, c, d, e, jawaban) Primary key kdPilihan Foreign key kdQs references Soal (kdQs) ON UPDATE CASCADE ON DELETE CASCADE
Parameter (kdParameter, nmParameter, nilaiParameter, kdQs) Primary key kdParameter Foreign key kdQs references Soal (kdQs) ON UPDATE CASCADE ON DELETE CASCADE
3.2.2.5 Memvalidasi Model Lokal Logikal terhadap Transaksi User •
Mendeskripsikan Transaksi a) Tampilkan data dosen.yang mengajar mata kuliah tertentu. b) Tampilkan Mata Kuliah yang dipunyai oleh banyak Jurusan. c) Tampilkan pertanyaan dari mata kuliah tertentu dari pertemuan satu sampai tiga belas. d) Tampilkan jawaban berdasarkan kode ujian. e) Tampilkan soal-soal ujian tahun ini berdasarkan kode mata kuliah.
101 f) Tampilkan pilihan berdasarkan pertanyaan yang ada pada soal ujian tertentu. g) Tampilkan nama dosen yang mengajar mata kuliah yang sama. h) Tampilkan mata kuliah yang merupakan mata kuliah yang sama tetapi memiliki kode mata kuliah yang berbeda. i) Tampilkan staff yang tidak mengajar mata kuliah apapun pada tahun ajaran sekarang. j) Tampilkan pertanyaan yang belum pernah dipakai dalam ujian berdasarkan kode mata kuliah tertentu. k) Tampilkan kode pertanyaan yang tidak memiliki pilihan jawaban. l) Tampilkan staff yang mengajar lebih dari satu mata kuliah pada tahun ajaran yang sama. m) Tampilkan Soal dan parameter yang dipunyai. n) Tampilkan nama Jurusan berdasarkan ujian. •
Menggunakan Jalur Transaksi
102
Gambar 3.32 Model Logikal Lokal yang Mendukung Transaksi User
103 3.2.3 Perancangan Fisikal 3.2.3.1 Merancang Relasi Dasar Informasi yang penting dapat diperoleh dari kamus data dan definisi relasi dapat digambarkan dengan Database Design Language (DBDL). Untuk setiap relasi yang diidentifikasikan dalam model data logikal global, harus terdiri dari: nama relasi, atribut, primary key, alternate key, foreign key, atribut yang merupakan hasil perhitungan, referential integrity, domain, dan apakah atribut boleh NULL. Berikut ini merupakan DBDL dari relasi yang ada: 1. Jurusan Domain kdJurusan : variable length character string, length 2 Domain nmJurusan : variable length character string, length 30 Jurusan ( kdJurusan
KodeJurusan NOT NULL,
nmJurusan
NamaJurusan NOT NULL
PRIMARY KEY (kdJurusan)); 2. MataKuliah Domain kdMatKul : variable length character string, length 5 Domain nmMatKul : variable length character string, length 30 Domain sks : variable length character string, length 3 Domain idMatKul : variable length character string, length 5 MataKuliah ( kdMatKul
KodeMataKuliah
NOT NULL,
104 nmMatKul
NamaMataKuliah
NOT NULL,
sks
JumlahSks
NOT NULL,
idMatKul
KodeEkivalensi
PRIMARY KEY (kdMatKul)); 3. JurPembina Domain kdPembina : variable length character string, length 5 Domain kdJurusan : variable length character string, length 2 Domain kdMatKul : variable length character string, length 5 JurPembina ( kdPembina
KodeTransMatKul
NOT NULL,
kdJurusan
KodeJurusan
NOT NULL,
kdMatKul
KodeMataKuliah
NOT NULL
PRIMARY KEY (kdPembina), FOREIGN
KEY
(kdJurusan)
REFERENCES
Jurusan
(kdJurusan) ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (kdMatKul) REFERENCES MataKuliah (kdMatKul) ON UPDATE CASCADE ON DELETE NO ACTION); 4. Staff Domain kdStaff : variable length character string, length 5 Domain nmStaff : variable length character string, length 50 Domain alamatStaff : variable length character string, length 80
105 Domain emailStaff : variable length character string, length 30 Domain tglMasuk : date/time Domain tglKeluar : date/time Domain kdJabatan : variable length character string, length 5 Domain supervisorKdStaff : variable length character string, length 5 Staff ( kdStaff
KodeKaryawan
NOT NULL,
nmStaff
NamaStaff
NOT NULL,
alamatStaff
AlamatStaff
NOT NULL,
emailStaff
EmailStaff,
tglMasuk
TanggalMulaiKerja
tglKeluar
TanggalBerhentiKerja,
kdJabatan
KodeJabatan
NOT NULL,
supervisorKdStaff
KodeSupervisor
NOT NULL,
NOT NULL,
PRIMARY KEY (kdStaff), FOREIGN
KEY
(kdJabatan)
REFERENCES
Jabatan
(kdJabatan) ON UPDATE CASCADE ON DELETE SET NULL, FOREIGN KEY (SupervisorKdStaff) REFERENCES Staff (kdStaff) ON UPDATE NO ACTION ON DELETE NO ACTION);
106 5. Jabatan Domain kdJabatan : variable length character string, length 5 Domain nmJabatan : variable length character string, length 15 Jabatan ( kdJabatan
KodeJabatan NOT NULL,
nmJabatan
NamaJabatan NOT NULL,
PRIMARY KEY (kdJabatan)); 6. TransKul Domain kdTransKul : variable length character string, length 5 Domain kdStaff : variable length character string, length 5 Domain kdMatKul : variable length character string, length 5 Domain shift : variable length character string, length 1, must be one or all of ‘1’, ‘2’ Domain thnAjaran : variable length character string, length 9 Domain semester : variable length character string, length 1, must be one of ‘1’, ‘2’, ‘3’ TransKul ( kdTransKul
KodeTransaksiSoal
NOT NULL,
kdStaff
KodeKaryawan
NOT NULL,
kdMatKul
KodeMataKuliah
NOT NULL,
kdSoalUjian KodeSoalUjian
NOT NULL,
shift
Shift
NOT NULL,
thnAjaran
TahunAjaran
NOT NULL,
107 semester
Semester
NOT NULL,
PRIMARY KEY (kdTransKul), FOREIGN KEY (kdStaff) REFERENCES Staff (kdStaff) ON UPDATE CASCADE ON DELETE NO ACTION FOREIGN KEY (kdMatKul) REFERENCES MataKuliah (kdMatKul) ON UPDATE CASCADE ON DELETE NO ACTION FOREIGN
KEY
(kdSoalUjian)
REFERENCES
Ujian
(kdSoalUjian) ON UPDATE CASCADE ON DELETE NO ACTION); 7. Ujian Domain kdSoalUjian: variable length character string, length 5 Domain kdJurusan : variable length character string, length 2 Domain kdMatKul : variable length character string, length 5 Domain tglUjian : date/time Domain sifatUjian : single character, must be one of ‘0’, ‘1’ Domain kalkulator : single character, must be one of ‘0’, ‘1’ Domain fakultas : variable length character string, length 15 Domain jamUjian : date/time Domain kdStaff : variable length character string, length 5 Domain status : single character, must be one of ‘m’, ‘s’, ‘f’, ‘p’, ‘l’
108 Domain shift : variable length character string, length 1, must be one or all of ‘0’, ‘1’ Domain thnAjaran : variable length character string, length 9 Domain semester : variable length character string, length 1, must be one of ‘1’, ‘2’, ‘3’ Ujian ( kdSoalUjian KodeSoalUjian
NOT NULL,
kdJurusan
KodeJurusan
NOT NULL,
kdMatKul
KodeMataKuliah
NOT NULL,
sifatUjian
SifatUjian
NOT NULL,
kalkulator
Kalkulator
NOT NULL,
fakultas
Fakultas
NOT NULL,
jamUjian
JamUjian,
tglUjian
TanggalUjian
NOT NULL,
status
StatusUjian
NOT NULL,
kdStaff
KodeKaryawan
NOT NULL,
shift
ShiftUjian
NOT NULL,
thnAjaran
TahunAjaran
NOT NULL,
semester
Semester
NOT NULL,
PRIMARY KEY (kdSoalUjian), FOREIGN
KEY
(kdJurusan)
REFERENCES
Jurusan
(kdJurusan) ON UPDATE CASCADE ON DELETE NO ACTION
109 FOREIGN KEY (kdStaff) REFERENCES Staff (kdStaff) ON UPDATE NO ACTION ON DELETE NO ACTION) FOREIGN KEY (kdMatKul) REFERENCES MataKuliah (kdMatKul) ON UPDATE NO ACTION ON DELETE NO ACTION); 8. UjianDetil Domain kdSoalUjian : variable length character string, length 5 Domain kdQs : variable length character string, length 7 UjianDetil ( kdSoalUjian KodeSoalUjian
NOT NULL,
kdQs
NOT NULL,
KodePertanyaan
PRIMARY KEY (kdSoalUjian), PRIMARY KEY (kdQs), FOREIGN
KEY
(kdSoalUjian)
REFERENCES
Ujian
(kdSoalUjian) ON UPDATE CASCADE ON DELETE CASCADE, FOREIGN KEY (kdQs) REFERENCES Soal (kdQs) ON UPDATE NO ACTION ON DELETE NO ACTION); 9. Soal Domain kdQs : variable length character string, length 7 Domain pertanyaan : variable length character string, length 300 Domain bobot : variable length character string, length 2 must be one of ‘c1’, ‘c2’, ‘c3’, ‘c4’, ‘c5’
110 Domain pertemuan : variable length character string, length 2 Domain kdDeterminan : variable length character string, length 7 Domain kdMatKul : variable length character string, length 5 Soal ( kdQs
KodePertanyaan
NOT NULL,
pertanyaan
Pertanyaan
NOT NULL,
bobot
TingkatKesulitan
NOT NULL,
pertemuan
Pertemuan
NOT NULL,
kdDeterminan KodeTurunanSoal
NOT NULL,
kdMatKul
NOT NULL,
KodeMataKuliah
PRIMARY KEY (kdQs), FOREIGN KEY (kdDeterminan) REFERENCES Soal (kdQs) ON UPDATE NO ACTION ON DELETE NO ACTION FOREIGN KEY (kdMatKul) REFERENCES MataKuliah (kdMatKul) ON UPDATE CASCADE ON DELETE NO ACTION); 10. Pilihan Domain kdPilihan : variable length character string, length 7 Domain a : variable length character string, length 200 Domain b : variable length character string, length 200 Domain c : variable length character string, length 200 Domain d : variable length character string, length 200
111 Domain e : variable length character string, length 200 Domain jawaban : single character, must be one of ‘a’, ‘b’, ‘c’, ‘d’, ‘e’ Domain kdQs : variable length character string, length 7 Pilihan ( kdPilihan
KodePilihan
NOT NULL,
a
OptionA
NOT NULL,
b
OptionB
NOT NULL,
c
OptionC
NOT NULL,
d
OptionD
NOT NULL,
e
OptionE,
jawaban
JawabanSoal
NOT NULL,
kdQs
KodePertanyaan
NOT NULL,
PRIMARY KEY (kdPilihan), FOREIGN KEY (kdQs) REFERENCES Soal (kdQs) ON UPDATE CASCADE ON DELETE CASCADE); 11. Parameter Domain kdParameter : variable length character string, length 7 Domain nmParameter : variable length character string, length 10 Domain nilaiParameter : variable length character string, length 200 Domain kdQs : variable length character string, length 7 Parameter (
112 kdParameter KodeParameter
NOT NULL,
nmParameter NamaParameter
NOT NULL,
nilaiParameter NilaiParameter
NOT NULL,
kdQs
NOT NULL,
KodePertanyaan
PRIMARY KEY (kdParameter), FOREIGN KEY (kdQs) REFERENCES Soal (kdQs) ON UPDATE CASCADE ON DELETE CASCADE); 12. TelpStaff Domain noTelp : variable length character string, length 15 Domain kdStaff : variable length character string, length 5 TelpStaff ( noTelp
NoTelpStaff
NOT NULL,
kdStaff
KodeStaff
NOT NULL,
PRIMARY KEY (noTelp), FOREIGN KEY (kdStaff) REFERENCES Staff (kdStaff) ON UPDATE CASCADE ON DELETE CASCADE); 13. HpStaff Domain noHp : variable length character string, length 13 Domain kdStaff : variable length character string, length 5 HpStaff ( noHp
NoHpStaff
NOT NULL,
kdStaff
KodeStaff
NOT NULL,
PRIMARY KEY (noHp),
113 FOREIGN KEY (kdStaff) REFERENCES Staff (kdStaff) ON UPDATE CASCADE ON DELETE CASCADE);
3.2.3.2 Analisis Transaksi Untuk mendesain fisik basisdata secara efektif, adalah penting untuk mengetahui tentang transaksi atau queries yang akan dijalankan dalam basisdata. Hal ini melingkupi kualitas dan kuantitas informasi, dalam menganalisis transaksi perlu mengidentifikasikan performa kriteria yaitu: transaksi yang dijalankan secara berkala, dan memiliki imbas pada performa, transaksi yang penting dalam operasi bisnis. Adapun transaksi-transaksi itu adalah sebagai berikut: a. Menambah atau mengubah data Mata Kuliah. b. Menambah atau mengubah data Staff. c. Menambah atau mengubah data Pertanyaan. d. Menambah atau mengubah data Jabatan. e. Mencatat transaksi Ujian f. Tampilkan pertanyaan yang telah dipakai pada waktu ujian. g. Tampilkan pertanyaan beserta pilihan jawaban. h. Tampilkan pertanyaan beserta parameternya.. i. Tampilkan pertanyaan yang belum dipakai pada waktu ujian. j. Tampilkan data pertanyaan suatu mata kuliah dari pertemuan 1 sampai pertemuan n, atau dari pertemuan n sampai pertemuan m dengan bobot yang bervariasi.
114 k. Tampilkan data dosen yang mengajar mata kuliah yang sama. l. Tampilkan data dosen yang tidak aktif mengajar dalam semester yang sedang berjalan. m. Tampilkan data dosen yang mengajar mata kuliah lebih dari 1. n. Tampilkan mata kuliah yang dipunyai oleh lebih dari 1 jurusan.
Transaksi/ relasi
I
(A) R U D
I
(B) R U D
Jurusan MataKuliah X X JurPembina Staff X X TelpStaff X X HpStaff X X Jabatan X X Ujian UjianDetil TransKul Soal Parameter Pilihan Transaksi/ relasi (H) (I) Jurusan MataKuliah JurPembina Staff TelpStaff HpStaff Jabatan Ujian UjianDetil TransKul Soal X X Parameter X Pilihan I = Insert; R = Read; U = Update; D = Delete
I
(C) R U D
I
(D) R U D
I
(E) R U D X X
I
(F) R U D
I
(G) R U D
X
X
X X X
X X X
X X X (J)
X X
(K)
X X X X (L)
X X X X
X X X X
X X X X
X
X
X
X X X Tabel 3.14 Analisa Transaksi
X
(M)
X X (N) X X X
116 3.2.3.3 Pemilihan DBMS Untuk
memilih
DBMS
yang
sesuai,
dilakukan
perbandingan antara beberapa DBMS. Berikut ini adalah tabel perbandingan Oracle 9i dan MS SQL 2000: Oracle 9i
MS SQL 2000
Harga: +/- 1280 $
Harga: +/- 1530$
Ketergantungan Platform:
Ketergantungan Platform:
Basisdata Oracle adalah informasi system Mendukung Platform Intel dan Alpha. manajemen yang terbukti untuk Tetapi hanya OS Windows 2000 yang memenuhi semua keperluan bisnis pada mendukung Platform Intel. semua platform perangkat keras, dari prosesor tunggal dan multi prosesor sampai mainframe.
Online Maintenance
Online Maintenance
Oracle9i hampir secara lengkap menghilangkan kebutuhan yang menurunkan peforma basisdata ketika sedang dilakukan maintenance pada basisdata. Online maintenance meningkatkan kesediaan data, performa basisdata, waktu respon, dan disk space. Tabel dapat di relokasi, di defragmen, diatur ulang.
Banyak operasi yang dapat dijalankan secara online sehingga server dapat selalu berjalan. Tambahan, fitur backup baru dapat dijalankan dengan sedikit pengaruh pada performa server.
117
Flashback query
Flashback query
User dapat berbuat kesalahan seperti mengisi nilai yang salah, atau menghapus baris yang salah. Flashback query Oracle9i mengijinkan admin atau user untuk melihat basisdata yang lama.
Tidak tersedia.
English Query
English Query
Tidak tersedia
Microsoft English Query mengijinkan pengguna akhir untuk bertanya dalam hal menampilkan suatu query dengan SQL Statement. English Query berlaku sebagai penengah antara user dan SQL Query. English Query terintegrasi secara penuh dalam SQL Server 2000
Database backups
Database backups
Mendukung backups online dan offline basis data.
SQL Server 2000 termasuk kemampuan untuk melakukan backups. Menggunakan pendekatan ini, backup dijalankan relative cepat dan dalam ukuran yang kecil dari tipe backups lain. Tabel 3.15 Perbandingan DBMS
Dari perbandingan diatas, disimpulkan DBMS yang dipilih adalah SQL Server 2000. Hal ini dikarenakan karena perusahaan telah menggunakan DBMS SQL Server 2000 untuk sistem perusahaan lainnya.
118 3.2.3.4 Memilih Indeks Tujuan dari langkah ini adalah untuk menentukan apakah penambahan index akan meningkatkan kinerja dari sistem. Index yang akan digunakan adalah sebagai berikut:
Entity
Attribute
Jurusan
kdJurusan
MataKuliah
kdMatKul
JurPembina
kdPembina
Staff
kdStaff
Staffdx
nmStaff
Jabatan
kdJabatan
TelpStaff
noTelp, kdStaff
HpStaff
noHp
TransKul
kdTransKul
Ujian
kdSoalUjian
Ujiandx
kdQs
UjianDetil
kdSoalUjian, kdQs
Soal
kdQs
Soaldx
kdMatKul
Pilihan
kdPilihan
Pilihandx
kdQs
Parameter
kdParameter
119 Entity Parameterdx
Attribute kdQs
Tabel 3.16 Field Indeks Didasarkan AtasTransaksi User
3.2.3.5 Memperkirakan Kebutuhan Ruang Penyimpanan Data Dari rata-rata transaksi diatas maka dapat diperkirakan besar ruang kebutuhan penyimpanan data. Hal yang perlu diperhatikan adalah seberapa besar ruang penyimpanan yang ada saat ini. Sebab penyimpana yang ada saat ini akan menentukan besar ruang data yang akan dipakai sekarang dan lima tahun mendatang. Pada target DBMS dapat ditentukan besar data tiap tabel. Sehingga besar data untuk tiap tipe data adalah sebagai berikut: •
Varchar(n) = n byte
•
Datetime (8 byte)
Sedangkan besarnya ruang penyimpanan yang digunakan dapat dihitung dengan cara menghitung besar data total ditambah dengan besar nilai index clustered dan non-clustered kemudian ketigatiganya dijumlahkan. Fill factor yang dipakai adalah 0-100 dengan besar data yang digunakan dijelaskan dalam tabel-tabel perhitungan ruang penyimpanan berikut ini:
120 Tabel
Jurusan
20
Pertumbuhan Data tiap Tahun (baris) 0
MataKuliah
700
0
700
JurPembina
800
0
800
Staff
600
5
620
4
0
4
TelpStaff
1000
10
1040
HpStaff
1300
10
1340
TransKul
2800
2800
14000
Ujian
1000
1000
5000
UjianDetil
40000
40000
200000
Soal
40000
40000
200000
Pilihan
40000
40000
200000
Parameter
80000
80000
400000
Jabatan
Num_Rows
Num_Rows (5 Tahun) 20
Tabel 3.17 Perhitungan Ruang Penyimpanan I Keterangan: •
Num_Rows: jumlah baris
•
Pertumbuhan Data Tiap Tahun: besar pertumbuhan data tiap tahun.
•
Num_Rows(5 tahun): jumlah baris 5 tahun mendatang
121 Field
Type
Ukuran
kdJurusan
varchar(2)
2
nmJurusan
varchar(30)
30
Kapasitas dari tabel Jurusan adalah 32 byte Tabel 3.18 Kapasitas Tabel Jurusan
Field
Type
Ukuran
kdMatKul
varchar(5)
5
nmMatKul
varchar(30)
30
Sks
varchar(3)
3
idMatKul
varchar(5)
5
Kapasitas dari tabel MataKuliah adalah 43 byte Tabel 3.19 Kapasitas Tabel MataKuliah
Field
Type
Ukuran
kdPembina
varchar(5)
5
kdJurusan
varchar(2)
2
kdMatKul
varchar(5)
5
Kapasitas dari tabel JurPembina adalah 12 byte Tabel 3.20 Kapasitas Tabel JurPembina
122 Field
Type
Ukuran
kdStaff
varchar(5)
5
nmStaff
varchar(50)
50
alamatStaff
varchar(80)
80
emailStaff
varchar(30)
30
tglMasuk
datetime
8
tglKeluar
datetime
8
kdJabatan
varchar(5)
5
supervisorKdStaff
varchar(5)
5
Kapasitas dari tabel Staff adalah 191 byte Tabel 3.21 Kapasitas Tabel Staff
Field
Type
Ukuran
kdJabatan
varchar(5)
5
nmJabatan
varchar(15)
15
Kapasitas dari tabel Jabatan adalah 20 byte Tabel 3.22 Kapasitas Tabel Jabatan
Field
Type
Ukuran
noTelp
varchar(15)
15
kdStaff
varchar(5)
5
Kapasitas dari tabel TelpStaff adalah 20 byte Tabel 3.23 Kapasitas Tabel TelpStaff
123 Field
Type
Ukuran
noHp
varchar(13)
13
kdStaff
varchar(5)
5
Kapasitas dari tabel HpStaff adalah 18 byte Tabel 3.24 Kapasitas Tabel HpStaff
Field
Type
Ukuran
kdTransKul
varchar(5)
5
kdStaff
varchar(5)
5
kdMatKul
varchar(5)
5
thnAjaran
varchar(9)
9
shift
varchar(1)
1
semester
varchar(1)
1
Kapasitas dari tabel TransKul adalah 26 byte Tabel 3.25 Kapasitas Tabel TransKul
124 Field
Type
Ukuran
kdSoalUjian
varchar(5)
5
kdJurusan
varchar(2)
2
kdStaff
varchar(5)
5
fakultas
varchar(15)
15
tglUjian
datetime
8
sifatUjian
varchar(1)
1
kalkulator
varchar(1)
1
jamUjian
datetime
8
thnAjaran
varchar(9)
9
shift
varchar(1)
1
semester
varchar(1)
1
status
varchar(1)
1
Kapasitas dari tabel Ujian adalah 57 byte Tabel 3.26 Kapasitas Tabel Ujian
Field
Type
Ukuran
kdSoalUjian
varchar(5)
5
kdQs
varchar(7)
7
Kapasitas dari tabel UjianDetil adalah 12 byte Tabel 3.27 Kapasitas Tabel UjianDetil
125 Field
Type
Ukuran
kdQs
varchar(7)
7
pertanyaan
varchar(300)
bobot
varchar(2)
2
Pertemuan
varchar(2)
2
kdMatKul
varchar(5)
5
kdDeterminan
varchar(7)
7
300
Kapasitas dari tabel Soal adalah 323 byte Tabel 3.28 Kapasitas Tabel Soal
Field
Type
Ukuran
kdPilihan
varchar(7)
a
varchar(200)
200
b
varchar(200)
200
c
varchar(200)
200
d
varchar(200)
200
e
varchar(200)
200
kdQs
varchar(7)
7
jawaban
varchar(1)
1
Kapasitas dari tabel Pilihan adalah 1015 byte Tabel 3.29 Kapasitas Tabel Pilihan
7
126 Field
Type
Ukuran
kdParameter
varchar(7)
7
nmparameter
varchar(15)
15
nilaiParameter
varchar(200)
200
kdQs
varchar(7)
7
Kapasitas dari tabel Parameter adalah 229 byte Tabel 3.30 Kapasitas Tabel Parameter
Tabel
Row_Size Row_ (byte) Per_Page
Fill_ Factor
Jurusan
42
184
90
Free_ Rows_Per _Page 18
Num_ Pages
Table_ Size (byte)
1
8192
MataKuliah
57
137
90
13
6
49152
JurPembina
24
311
90
31
3
24576
Staff
204
39
90
5
19
155648
Jabatan
30
253
90
25
1
8192
TelpStaff
30
253
85
37
5
40960
HpStaff
28
269
85
40
6
49152
TransKul
44
176
50
84
153
1253376
Ujian
83
95
50
47
105
806160
UjianDetil
22
337
50
168
1184
9699328
Soal
341
23
60
9
1429
11706368
Pilihan
1037
7
60
3
50000
40950000
Parameter
243
31
60
13
22223
182050816
Tabel 3.31 Perhitungan Ruang Penyimpanan II
127 Keterangan: •
Besar Data adalah besar ruang penyimpanan diperlukan tiap tabel
•
Num_Rows = jumlah baris dalam tabel
•
Num_Cols = jumlah kolom dalam table
•
Fixed_Data_Size = Jumlah byte dari semua kolom yang memiliki panjang tetap
•
Num_Variable_Cols = Jumlah kolom yang bertipe variable
•
Max_Var_Size = Jumlah size maksimum yang dipunyai suatu kolom variable
•
Null Bitmap (Null_Bitmap) = 2 + (( Num_Cols + 7) / 8 )
•
Variable_Data_Size = 2 + (Num_Variable_Cols x 2) + Max_Var_Size
•
Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap +4
•
Rows_Per_Page = 8096 / (Row_Size+2) Hasil rows_per_page dibulatkan kebawah.
•
Fill_Factor = faktor besarnya data terisi tiap halaman
•
Free_Rows_Per_Page = 8096 x ( ( 100 - Fill_Factor ) /100 ) / (Row_Size+2). Hasilnya dibulatkan kebawah.
•
Num_Pages
=
Num_Rows
/
(Rows_Per_Page
Free_Rows_Per_Page). Hasilnya dibulatkan keatas. •
Table Size = 8192 x Num_Pages (bytes)
-
128 •
Data_Space_Used = 246.801.920 Byte = 241.017,5 KByte = 235,36MegaByte.
Tabel Clustered Index Jurusan
Total_ CIndex_ CIndex_ CIndex_ Num_ Num_ Num_ Row_ Null_ Row_ Rows_ Pages_ Pages_ Pages_ Size(Byte) Bitmap Size(Byte) Per_Page CLevel_0 CLevel_1 CLevel_2 42 0 15 476 64 1 1
MataKuliah
57
0
18
404
75
1
1
JurPembina
24
0
18
404
75
1
1
Staff
204
0
70
112
269
3
1
Jabatan
30
0
18
404
75
1
1
TelpStaff
30
0
35
218
139
1
1
HpStaff
28
0
26
289
105
1
1
TransKul
44
0
18
404
75
1
1
Ujian
83
0
25
298
102
1
1
UjianDetil
22
0
27
279
108
1
1
Soal
341
0
27
279
108
1
1
Pilihan
1037
0
29
261
116
1
1
Parameter
243
0
29
261
116
1
1
Tabel 3.32 Perhitungan Besar Data Pada Clustered Index Keterangan: • Total_Row_Size = Besar data tiap baris • Num_CKey_Cols = Jumlah kolom dari kunci indeks • Fixed_CKey_Size = Jumlah bytes dari semua kolom kunci dengan panjang yang tetap.
129 • Num_Variable_CKey_Cols = Jumlah kolom dari kunci indeks dengan panjang tetap. • Max_Var_CKey_Size = Ukuran maksimum dari kolom variabel kunci • CIndex_Null_Bitmap = besar data index bernilai null untuk tiap baris • Index Null Bitmap (CIndex_Null_Bitmap) = 2 + (( Num_CKey_Cols + 7) / 8) • Variable_CKey_Size = 2 + (Num_Variable_CKey_Cols x 2) + Max_Var_CKey_Size • Total ukuran baris yang menjadi indeks (CIndex_Row_Size) = Fixed_CKey_Size + Variable_CKey_Size + CIndex_Null_Bitmap + 1+8 • Jumlah baris indeks per halaman (CIndex_Rows_Per_Page) = ( 8096 ) / (CIndex_Row_Size + 2). Hasilnya dibulatkan kebawah. • Jumlah
halaman
(level
0)
(Num_Pages_CLevel_0)
=
(Data_Space_Used / 8192) / CIndex_Rows_Per_Page. Hasilnya dibulatkan keatas. • Num_Page_CLevel_1
=
Num_Page_CLevel_0
/
CIndex_Row_Per_Page. Hasilnya dibulatkan keatas. • Lakukan ini sampai jumlah indeks halaman tepat satu setelah dibulatkan keatas dan pada table ini berhenti pada level satu, yang berarti jumlah halaman indeks = Num_Page_CLevel_0 + Num_Page_CLevel_1+… + Num_Page_CLevel_n
130 • Num_CIndex_Page
=
Num_Page_CLevel_1+
Num_Page_CLevel_0 Num_Page_CLevel_2
+…
+ +
Num_Page_CLevel_n • Clustered Index Size = 8192 x Num_CIndex_Page (bytes)
Index
Detail
indeks NL_indeks_
NL_indeks_
Indeks_row_
tambahan
tambahan
row_size (byte) row_per_page
size (byte)
Staffdx
Nmstaff
63
124
125
Ujiandx
kdMatKul
18
404
35
Soaldx
kdMatKul
18
404
37
Pilihandx
kdQs
20
368
32
Parameterdx
kdQs
20
368
32
Tabel 3.33 Perhitungan Besar Data Pada Non Clustered Index I Keterangan: • Num_CKey_Cols = Jumlah kolom dari kunci indeks • Fixed_CKey_Size = Jumlah bytes dari semua kolom kunci dengan panjang yang tetap. • Num_Variable_CKey_Cols = Jumlah kolom dari kunci indeks dengan panjang tetap. • Max_Var_CKey_Size = Ukuran maksimum dari kolom variabel kunci • Index Null Bitmap (CIndex_Null_Bitmap) = 2 + (( Num_CKey_Cols + 7) / 8)
131 • Variable_CKey_Size = 2 + (Num_Variable_CKey_Cols x 2) + Max_Var_CKey_Size •
Total nonleaf index row size (NL_Index_Row_Size) = Fixed_Key_Size + Variable_Key_Size + Index_Null_Bitmap + 1 + 8
•
Jumlah baris indeks nonleaf per halaman (NL_Index_Rows_Per_Page) = ( 8096 ) / (NL_Index_Row_Size + 2). Hasilnya dibulatkan kebawah.
•
(Index_Row_Size) = CIndex_Row_Size + Fixed_Key_Size + Variable_Key_Size + Index_Null_Bitmap + 1
Index
Index_row_
Free_index
Num_pages
Num_pages
Num_pages
tambahan
per_ pages
_row_per_
_level_ 0
_level_1
level_2
page Staffdx
63
9
12
1
1
Ujiandx
218
109
46
1
1
Soaldx
207
83
1613
4
1
Pilihandx
238
95
1399
4
1
Parameterdx
238
95
2798
8
1
Tabel 3.34 Perhitungan Besar Data Pada Non Clustered Index II
132 Keterangan: •
Jumlah leaf level indeks per halaman (Index_Rows_Per_Page) = ( 8096 ) / (Index_Row_Size + 2). Hasilnya dibulatkan kebawah.
•
Free_Index_Rows_Per_Page = 8096 x ((100 - Fill_Factor) / 100) / Index_Row_Size. Hasilnya dibulatkan kebawah.
•
Num_Pages_Level_0 = Num_Rows / (Index_Rows_Per_Page Free_Index_Rows_Per_Page). Hasilnya dibulatkan keatas.
•
Num_Pages_Level_1 = Num_Pages_Level_0 / Index_Rows_Per_Page .Hasilnya dibulatkan keatas
•
Num_Pages_Level_n = Num_Pages_Level_n-1 / Index_Rows_Per_Page. Hasilnya dibulatkan keatas.
•
Num_Index_Pages = Num_Pages_Level_0 + Num_Pages_Level_1 + Num_Pages_Level_2 + ... + Num_Pages_Level_n.
•
Nonclustered index size (bytes) = 8192 x Num_Index_Pages
133
Tabel
Data Space Used(byte)
Jurusan
8192
Non Clustered Index Size(byte) 0
Clustered Index Size(byte)
Besar Total Data (byte)
540672
548864
MataKuliah
49152
0
630784
1671168
JurPembina
24576
0
630784
655360
Staff
155648
114688
2236416
2506752
Jabatan
8192
0
630784
638976
TelpStaff
40960
0
1155072
1196032
HpStaff
49152
0
876544
925696
TransKul
1253376
0
630784
1884160
Ujian
806160
393216
851968
2051344
UjianDetil
9699328
0
901120
10600448
Soal
11706368
13254656
901120
25862144
Pilihan
40950000
11501568
966656
53418224
Parameter
182050816
22994944
966656
206012416
Tabel 3.35 Perhitungan Data 5 Tahun Kedepan Keterangan: • Clustered index size = 8192 x Num_Cindex_Pages • Nonclustered index size = 8192 x Num_Index_Pages • Jadi, dapat ditentukan besar total seluruh ruang penyimpanan yang dibutuhkan
sekarang
adalah
=
Data_Space_Used
Clustered_Index_Size + Nonclustered_Index_Size = 246.801.920b + 11.919.360b + 48.259.072 b
+
134 = 306.980.352 b = 299.785,5 Kb = 292,7 Mb ¾ Total data setelah 5 tahun adalah 292,7 Mb
3.2.3.6 Merancang User View Perancangan user view berdasarkan transaksi yang telah dijabarkan diatas, detailnya dapat dilihat sebagai berikut: a. Tampilkan pertanyaan yang telah dipakai pada waktu ujian. CREATE VIEW view_oldqs AS SELECT kdqs, kdmatkul, pertanyaan, pertemuan, bobot FROM soal WHERE kdqs IN (SELECT kdqs FROM ujiandetil) GROUP BY kdqs, kdmatkul, pertanyaan, pertemuan, bobot ORDER BY kdmatkul, pertemuan, bobot b. Tampilkan pertanyaan beserta pilihan jawaban. CREATE VIEW view_dataqs AS SELECT s.kdqs, s.kdmatkul, s.pertanyaan, s.pertemuan, s.bobot, s.kddeterminan, p.a, p.b, p.c, p.d, p.e FROM soal s LEFT JOIN pilihan p
135 ON p.kdqs = s.kdqs GROUP BY s.kdqs, s.kdmatkul, s.pertanyaan, s.pertemuan, s.bobot, s.kddeterminan, p.a, p.b, p.c, p.d, p.e ORDER BY s.kdmatkul, s.pertemuan, s.bobot c. Tampilkan pertanyaan beserta parameternya. CREATE VIEW view_fullqs AS SELECT s.kdqs, s.kdmatkul, s.pertanyaan, s.pertemuan, s.bobot, s.kddeterminan, pr.nmparameter, pr.nilaiparameter FROM soal s LEFT JOIN parameter pr ON pr.kdqs=s.kdqs GROUP BY s.kdqs, s.kdmatkul, s.pertanyaan, s.pertemuan, s.bobot, s.kddeterminan, pr.nmparameter, pr.nilaiparameter ORDER BY s.kdmatkul, s.pertemuan, s.bobot d. Tampilkan pertanyaan yang belum dipakai pada waktu ujian. CREATE VIEW view_availableqs AS SELECT kdqs, kdmatkul, pertanyaan, pertemuan, bobot FROM soal WHERE kdqs NOT IN (SELECT kdqs FROM ujiandetil) GROUP BY kdqs, kdmatkul, pertanyaan, pertemuan, bobot ORDER BY kdmatkul, pertemuan, bobot
136 e. Tampilkan data pertanyaan suatu mata kuliah dari pertemuan 1 sampai pertemuan n, atau dari pertemuan n sampai pertemuan m dengan bobot yang bervariasi. f. Tampilkan data dosen yang mengajar mata kuliah yang sama. CREATE VIEW view_dosenpermatkul AS SELECT tk.kdstaff, d.nmstaff, tk.kdmatkul, m.nmmatkul FROM transkul tk LEFT JOIN staff d on tk.kdstaff=d.kdstaff LEFT JOIN matakuliah m on tk.kdmatkul =m.kdmatkul GROUP
BY
tk.kdstaff,
d.nmstaff,
tk.kdmatkul,
m.nmmatkul ORDER BY tk.kdstaff, tk.kdmatkul g. Tampilkan data dosen yang tidak aktif mengajar dalam semester yang sedang berjalan. CREATE VIEW view_offlinedosen AS SELECT
kdstaff,
nmstaff,
alamatstaff,
emailstaff,
kdsupervisor FROM staff WHERE tglkeluar = NULL and kdstaff NOT IN (SELECT kdstaff FROM transkul WHERE thnajaran = ‘2005/2006’) h. Tampilkan data dosen yang mengajar mata kuliah lebih dari 1.
137 CREATE VIEW view_dosenmatkul AS SELECT tk.kdstaff, d.nmstaff, tk.kdmatkul, m.nmmatkul FROM transkul tk LEFT JOIN staff d on tk.kdstaff=d.kdstaff LEFT JOIN matakuliah m on tk.kdmatkul =m.kdmatkul GROUP
BY
tk.kdstaff,
d.nmstaff,
tk.kdmatkul,
m.nmmatkul HAVING count(tk.kdstaff)>1 ORDER BY tk.kdstaff, tk.kdmatkul i. Tampilkan mata kuliah yang diasuh oleh lebih dari 1 jurusan. CREATE VIEW view_matkulperjurusan AS SELECT jp.kdmatkul, m.nmmatkul, m.sks, j.nmjurusan FROM jurpembina jp LEFT JOIN matakuliah m ON m.kdmatkul = jp.kdmatkul LEFT JOIN jurusan j ON j.kdjurusan = jp.kdjurusan WHERE jp.kdmatkul IN (SELECT jp.kdmatkul FROM jurpembina
jp
GROUP
count(jp.kdmatkul)>1 ) ORDER BY jp.kdmatkul
BY
jp.kdmatkul
HAVING
138 3.2.3.7 Merancang Mekanisme Keamanan Tujuan mekanisme
dari
keamanan
langkah pada
ini
adalah
basis
data
untuk seperti
merancang yang
telah
dispesifikasikan oleh user. Perancangan mekanisme keamanan adalah sebagai berikut:
(Admin) GRANT ALL PRIVILEGES ON Jurusan TO admin GRANT ALL PRIVILEGES ON MatKul TO admin GRANT ALL PRIVILEGES ON JurPembina TO admin GRANT ALL PRIVILEGES ON TransKul TO admin GRANT ALL PRIVILEGES ON Staff TO admin GRANT ALL PRIVILEGES ON Ujian TO admin GRANT ALL PRIVILEGES ON UjianDetil TO admin GRANT ALL PRIVILEGES ON Soal TO admin GRANT ALL PRIVILEGES ON Parameter TO admin GRANT ALL PRIVILEGES ON Pilihan TO admin GRANT ALL PRIVILEGES ON TelpStaff TO admin GRANT ALL PRIVILEGES ON HpStaff TO admin GRANT ALL PRIVILEGES ON TransSoal TO admin
(User) GRANT SELECT ON Jurusan TO user
139 GRANT SELECT ON MataKuliah TO user GRANT SELECT ON JurPembina TO user GRANT SELECT ON Staff TO user GRANT SELECT ON TelpStaff TO user GRANT SELECT ON HpStaff TO user GRANT SELECT, INSERT, UPDATE ON Soal TO user GRANT SELECT, INSERT, UPDATE ON Pilihan TO user GRANT SELECT, INSERT, UPDATE ON Parameter TO user GRANT SELECT, INSERT, UPDATE ON UjianDetil TO user GRANT SELECT, INSERT, UPDATE ON Ujian TO user GRANT SELECT, INSERT, UPDATE ON TransKul TO user GRANT SELECT, INSERT, UPDATE ON TransSoal TO user