15 - bab 4 perancangan, implementasi dan evaluasi - …thesis.binus.ac.id/doc/bab4/2010-1-00167-if...
TRANSCRIPT
122
BAB 4
PERANCANGAN, IMPLEMENTASI DAN EVALUASI
Perancangan database yang dilakukan pada SMA Tarsisius II dibagi menjadi
tiga tahapan, yaitu :
1. Perancangan database konseptual (conceptual database design)
2. Perancangan database logikal (logical database design)
3. Perancangan database fisikal (physical database design)
4.1 Perancangan Database Konseptual
4.1.1 Kamus Data Entitas
Tabel 4.1 Kamus Data Entitas
Entity Name Description Aliases Occurrence Karyawan Orang yang bekerja di
SMA Tarsisius II Jakarta. Staf Setiap karyawan bekerja
pada bagian masing-masing. Tagihan Suatu tagihan yang
diberikan kepada siswa untuk memperdalam pemahaman terhadap materi mata pelajaran.
Tagihan Beberapa tagihan diberikan oleh seorang guru.
RaporBayangan Suatu laporan penilaian pada pertengahan semester yang diberikan untuk siswa.
RaporBayangan Satu rapor bayangan diterima oleh seorang siswa.
RaporAkhir Suatu laporan penilaian pada akhir semester yang diberikan untuk siswa.
RaporAkhir Satu rapor akhir diterima oleh seorang siswa.
Siswa Orang yang belajar di SMA Tarsisius II Jakarta.
Siswa Setiap siswa menerima ilmu atau pelajaran dari guru. Memiliki beberapa tagihan.
MataPelajaran Mata Pelajaran yang diajarkan pada SMA Tarsisius II Jakarta.
MataPelajaran Setiap mata pelajaran memiliki silabus.
Silabus Menampung seluruh Silabus Satu silabus untuk beberapa
123
Entity Name Description Aliases Occurrence outline mata pelajaran sebagai panduan pengajaran.
pertemuan dalam mata pelajaran.
RPP Acuan yang digunakan oleh guru untuk mengajar siswa.
RencanaPelaksanaanPembelajaran
Satu RPP untuk satu pertemuan dalam kelas.
BankSoal Soal latihan yang dibuat guru untuk dikerjakan secara online.
BankSoal Setiap mata pelajaran memiliki soal latihan.
JamSekolah Jam sekolah, berupa hari apa saja dan jam berapa.
JadwalSekolah Setiap jadwal ujian maupun jadwal harian terdapat jam sekolah.
JadwalHarian Jadwal harian yang berisi hari apa dan jam berapa, kegiatan belajar mengajar diadakan.
JadwalKelas Setiap mata pelajaran memiliki jadwal harian. Setiap kelas siswa juga terdapat jadwal harian.
JadwalUjian Jadwal diadakan ujian yang berisi kapan ujian, dengan mata pelajaran apa saja.
JadwalUjian Setiap mata pelajaran memiliki jadwal ujian. Setiap kelas siswa juga terdapat jadwal ujian.
JawabanMateri Merupakan jawaban atas soal materi yang akan di-upload.
JawabanMateri Jawaban materi akan ada minimal jika siswa meng-upload ke server.
Materi Merupakan materi yang di-upload oleh guru untuk menambah pemahaman siswa.
MateriTambahan Materi akan ada jika karyawan melakukan upload ke server.
Kelas Merupakan tabel yang berisi data mengenai kelas-kelas yang terdapat di SMA Tarsisius II Jakarta.
Kelas Setiap siswa memiliki satu kelas. Setiap kelas memiliki mata pelajaran sendiri-sendiri.
Forum Merupakan pengategorian setiap forum diskusi
Forum Setiap Forum terdapat beberapa Topik
KategoriForum Merupakan pembagian kategori pada setiap forum
KategoriForum Setiap forum memiliki satu jenis kategori forum
Topik Merupakan topik diskusi yang terdapat di dalam forum
TopikForum Setiap Siswa dan Guru dapat membuat topik baru.
Post Merupakan postingan PostForum Setiap Siswa dan Guru dapat
124
Entity Name Description Aliases Occurrence diskusi yang terdapat dalam setiap topik diskusi
membuat post untuk me-reply postingan orang lain.
Ekstrakurikuler Merupakan kegiatan di luar jam sekolah yang diminati siswa
KegiatanPengembanganDiri
Setiap siswa dapat memiliki nol atau lebih kegiatan ekstrakurikuler
4.1.2 Kamus Data Atribut
Tabel 4.2 Kamus Data Atribut
Entity Name Attributes Description Data Type & Length
Domain Nulls Multi Value
Karyawan KdKaryawan No induk karyawan
Integer T idak T idak
NamaKaryawan Nama karyawan Varchar(100) T idak T idak PosisiKaryawan Jabatan karyawan Varchar(20) T idak T idak KelasWali Nama kelasnya
apabila karyawan juga merupakan wali kelas
Varchar(10) Ya T idak
TanggalLahirKaryawan Tanggal lahir karyawan
Date T idak T idak
Tagihan KdTagihan No form tagihan siswa
Integer T idak T idak
Kelas Kelas para siswa Varchar(10) T idak T idak KompetensiDasar Kompetensi dasar
pada tagihan tersebut
Text T idak T idak
UraianIndikator1 Uraian indikator sesuai dengan kompetensi dasar tersebut
Text Ya T idak
UraianIndikator2 Uraian indikator sesuai dengan kompetensi dasar tersebut
Text Ya T idak
UraianIndikator3 Uraian indikator sesuai dengan kompetensi dasar tersebut
Text Ya T idak
UraianIndikator4 Uraian indikator sesuai dengan kompetensi dasar tersebut
Text Ya T idak
SKBMIndikator1 Standar Double Rentang Ya T idak
125
Entity Name Attributes Description Data Type & Length
Domain Nulls Multi Value
Ketuntasan Belajar Minimal pada tagihan bagian pertama. Merupakan nilai minimal yang harus dicapai siswa sebagai syarat sudah tuntas memahami materi
nilai 0-100
SKBMIndikator2 Standar Ketuntasan Belajar Minimal pada tagihan bagian kedua
Double Rentang nilai 0-100
Ya T idak
SKBMIndikator3 Standar Ketuntasan Belajar Minimal pada tagihan bagian ketiga
Double Rentang nilai 0-100
Ya T idak
SKBMIndikator4 Standar Ketuntasan Belajar Minimal pada tagihan bagian keempat
Double Rentang nilai 0-100
Ya T idak
SoalIndikator1 Soal yang mana saja yang merujuk pada indikator1 di tagihan
Varchar(10) Ya T idak
SoalIndikator2 Soal yang mana saja yang merujuk pada indikator2 di tagihan
Varchar(10) Ya T idak
SoalIndikator3 Soal yang mana saja yang merujuk pada indikator3 di tagihan
Varchar(10) Ya T idak
SoalIndikator4 Soal yang mana saja yang merujuk pada indikator4 di tagihan
Varchar(10) Ya T idak
Tanggal Tanggal lembar penilaian diisi dan disetujui oleh Kepala Sekolah
Date T idak T idak
RaporBayangan KdRaporBayangan Kode rapor Integer T idak T idak
126
Entity Name Attributes Description Data Type & Length
Domain Nulls Multi Value
bayangan Kelas Kelas siswa pada
saat rapor bayangan dicetak
Varchar(10) T idak T idak
Semester Semester siswa pada saat rapor bayangan tersebut dicetak
T inyint Rentang 1-2
T idak T idak
TahunAjaran Tahun ajaran pada saat rapor bayangan tersebut dibuat
Varchar(10) T idak T idak
Sakit Jumlah sakit siswa
T inyint Ya T idak
Izin Jumlah izin siswa T inyint Ya T idak TanpaKeterangan Jumlah
ketidakhadiran siswa tanpa keterangan
T inyint Ya T idak
RaporAkhir KdRaporAkhir Kode rapor akhir Integer T idak T idak KdReg Kode registrasi
atau nomor registrasi ID pada rapor akhir
Varchar(20) T idak T idak
Semester Semester siswa pada rapor akhir
T inyint Rentang 1-2
T idak T idak
TahunAjaran Tahun ajaran siswa pada rapor akhir
Varchar(10) T idak T idak
Komentar Komentar guru sebagai wali kelas terhadap siswa
Text Ya T idak
Sakit Jumlah sakit siswa
T inyint Ya T idak
Izin Jumlah izin siswa T inyint Ya T idak TanpaKeterangan Jumlah siswa
yang tidak hadir tanpa keterangan
T inyint Ya T idak
Siswa KdSiswa No induk siswa Integer T idak T idak NamaSiswa Nama siswa Varchar(100) T idak T idak KelasSiswa Kelas siswa pada
saat ini Varchar(10) T idak T idak
TanggalLahirSiswa Tanggal lahir siswa
Date T idak T idak
JenisKelaminSiswa Jenis kelamin siswa
Char(1) ‘L’ atau ‘P’
T idak T idak
127
Entity Name Attributes Description Data Type & Length
Domain Nulls Multi Value
MataPelajaran KdMataPelajaran Kode mata pelajaran
Integer T idak T idak
NamaMataPelajaran Nama mata pelajaran
Varchar(100) T idak T idak
Silabus KdSilabus Kode untuk silabus
Integer T idak T idak
NoSK Nomor untuk menunjukkan Standar Kompetensi ke berapa dalam silabus.
Integer T idak Ya
NoKD Nomor untuk menunjukkan Kompetensi Dasar ke berapa untuk silabus
Integer T idak Ya
StandarKompetensi Kompetensi yang dibakukan dan harus dicapai oleh siswa
Text T idak Ya
KompetensiDasar Rincian dari Standar Kompetensi
Text T idak Ya
MateriPokok Pokok-pokok materi pembelajaran yang harus dipelajari oleh siswa
Text T idak Ya
MateriPembelajaran Pembagian sub-materi dari materi pokok yang harus dipelajari oleh siswa
Text T idak Ya
KegiatanPembelajaran Proses belajar mengajar
Text T idak Ya
Indikator Tanda atau petunjuk bahwa siswa sudah mengerti
Text T idak Ya
Penilaian Kriteria penilaian untuk menilai siswa
Text T idak Ya
Waktu Perkiraan lama siswa
Text T idak Ya
128
Entity Name Attributes Description Data Type & Length
Domain Nulls Multi Value
mempelajari materi yang ditentukan
SumberBelajar Rujukan, referensi atau literatur yang bisa digunakan
Text T idak Ya
Semester Untuk semester ke berapa, silabus tersebut dibuat
T inyint Rentang antara 1-2
T idak T idak
RPP KdRPP Kode yang mengidentifikasi RPP secara unik
Integer T idak T idak
Kelas Kelas para siswa Varchar(10) T idak T idak
Semester Semester yang ditujukan RPP
Tinyint Rentang antara 1-2
T idak T idak
Pertemuan Pertemuan pengajaran
Integer T idak Ya
KegiatanAwal Kegiatan sebelum memulai proses belajar-mengajar
Text T idak Ya
KegiatanInti Kegiatan pada saat berlangsungnya proses belajar -mengajar
Text T idak Ya
KegiatanAkhir Kegiatan sesudah proses belajar -mengajar
Text T idak Ya
StandarKompetensi Kompetensi yang dibakukan dan harus dicapai oleh siswa
Text T idak T idak
KompetensiDasar Rincian dari standar kompetensi
Text T idak T idak
Indikator Tanda atau petunjuk bahwa siswa sudah mencapai kompetensi dasar
Text T idak T idak
129
Entity Name Attributes Description Data Type & Length
Domain Nulls Multi Value
TujuanPembelajaran Tujuan yang diinginkan setelah melakukan pembelajaran
Text T idak T idak
MateriPokok Pokok-pokok materi pembelajaran yang harus diajarkan kepada siswa
Text T idak T idak
MateriPembelajaran Pembagian sub-materi dari materi pokok yang harus diajarkan kepada siswa
Text T idak T idak
MetodePembelajaran Metode yang akan digunakan dalam pembelajaran
Text T idak T idak
SumberBelajar Rujukan, referensi atau literatur yang bisa digunakan
Text T idak T idak
Penilaian Kriteria penilaian untuk menilai siswa
Text T idak T idak
Waktu Perkiraan lama siswa mempelajari materi yang ditentukan
Text T idak T idak
BankSoal KdBankSoal Kode bank soal Integer T idak T idak
JudulBankSoal Judul yang merepresentasikan sekumpulan bank soal
Varchar(100) T idak T idak
DeskripsiBankSoal Deskripsi yang menjelaskan sekumpulan bank soal
Text T idak T idak
NoBankSoal Nomor bank soal Integer T idak Ya
130
Entity Name Attributes Description Data Type & Length
Domain Nulls Multi Value
Pertanyaan Pertanyaan dalam bank soal
Text T idak Ya
Pilihan1 Opsi 1 untuk menjawab bank soal
Text T idak Ya
Pilihan2 Opsi 2 untuk menjawab bank soal
Text T idak Ya
Pilihan3 Opsi 3 untuk menjawab bank soal
Text T idak Ya
Pilihan4 Opsi 4 untuk menjawab bank soal
Text T idak Ya
Pilihan5 Opsi 5 untuk menjawab bank soal
Text T idak Ya
Jawaban Jawaban dari bank soal berupa pilihan ke 1, 2, 3, 4 atau 5
T inyint Rentang antara 1-5
T idak Ya
PenjelasanJawaban Penjelasan mengenai jawaban dari bank soal
Text Ya Ya
JamSekolah KdJamSekolah Kode jam sekolah Integer T idak T idak
Hari Hari apa saja, sekolah berlangsung
T inyint Rentang antara 1-7
T idak T idak
Jam Berisi dari jam berapa sampai jam berapa.
Varchar(10) T idak T idak
JadwalHarian KdJadwalHarian Kode jadwal harian
Integer T idak T idak
Kelas Kelas para siswa Varchar(10) T idak T idak
131
Entity Name Attributes Description Data Type & Length
Domain Nulls Multi Value
Semester Semester para siswa
T inyint Rentang antara 1-2
T idak T idak
JadwalUjian KdJadwalUjian Kode jadwal ujian Integer T idak T idak
Kelas Kelas para siswa Varchar(10) T idak T idak
Semester Semester para siswa
T inyint Rentang antara 1-2
T idak T idak
JawabanMateri KdJawabanMateri Kode jawaban materi
Integer T idak T idak
Deskripsi Komentar pada saat siswa meng-upload file jawaban materi
Text T idak T idak
NamaFile Nama file yang berisi jawaban materi di-upload oleh siswa
Varchar(100) T idak T idak
Tanggal Tanggal jawaban materi tersebut di-upload
Date T idak T idak
Materi KdMateri Kode materi Integer T idak T idak
JudulMateri Judul materi Varchar(100) T idak T idak
Kelas Kelas yang ditujukan untuk materi ini
Varchar(10) T idak T idak
Deskripsi Deskripsi mengenai materi yang dibuat oleh guru
Text Ya T idak
Soal Penanda bahwa materi yang diberikan oleh guru tersebut merupakan soal
Char (1) ‘Y’ atau ‘T’
T idak T idak
132
Entity Name Attributes Description Data Type & Length
Domain Nulls Multi Value
NamaFile Nama file yang berisi materi di-upload oleh guru
Varchar(100) T idak T idak
Tanggal Tanggal materi tersebut di-upload
Date T idak T idak
Kelas KdKelas Kode yang merujuk pada kelas yang ada di sekolah
Integer T idak T idak
Jurusan Jurusan sesuai nama kelas bersangkutan
Varchar(3) ‘IPA’ atau ‘IPS’
Ya T idak
T ingkatan T ingkatan sesuai kelas bersangkutan
T inyint Rentang antara 10-12
T idak T idak
Forum KdForum Kode Forum yang mewakili satu pembahasan forum
Integer T idak T idak
NamaForum Nama forum Varchar(100) T idak T idak
DeskripsiForum Penjelasan mengenai forum yang bersangkutan
Varchar(500) T idak T idak
KategoriForum KdKategoriForum Kode yang secara unik mengidentifikasi kategori untuk forum
Integer T idak T idak
NamaKategoriForum Nama yang merepresentasikan kategori forum
Varchar(100) T idak T idak
Topik KdTopik Kode Topik yang dibahas dalam suatu forum
Integer T idak T idak
JudulTopik Judul Topik yang akan ditampilkan
Varchar (100)
T idak T idak
133
Entity Name Attributes Description Data Type & Length
Domain Nulls Multi Value
di dalam forum
DeskripsiTopik Deskripsi mengenai topik tersebut
Varchar(500) T idak T idak
TanggalTopik Tanggal sewaktu poster melakukan posting pada topik bersangkutan
Date T idak T idak
Post KdPost Kode post yang terdapat dalam sebuah topik
Integer T idak T idak
IsiPost Isi post yang dikirim
Text T idak T idak
TanggalPost Tanggal saat post tersebut dipasang
Date T idak T idak
Ekstrakurikuler KdEkstrakurikuler Kode ekstrakurikuler
Integer T idak T idak
NamaEkstrakurikuler Kegiatan ekstrakurikuler yang dipilih oleh siswa
Varchar(20) T idak T idak
4.1.3 Kamus Data Relasi
Tabel 4.3 Kamus Data Relasi
Entity Name Multiplicity Relationship Multiplicity Entity Name
Siswa 1..* Memiliki 0..* Tagihan Siswa 1..1 Memiliki 0..* RaporBayangan Siswa 1..1 Memiliki 0..* RaporAkhir Karyawan 1..1 Mengisi 0..* RaporBayangan Karyawan 1..1 Mengisi 0..* RaporAkhir Karyawan 1..1 Membuat 0..* RPP Karyawan 1..* Membuat 0..* Silabus Karyawan 1..1 Mengisi 0..* Tagihan Karyawan 1..1 Membuat 0..* BankSoal Silabus 1..* Mengandung 1..1 MataPelajaran RPP 1..* Mengenai 1..1 MataPelajaran
134
Entity Name Multiplicity Relationship Multiplicity Entity Name
Karyawan 1..* Mengajar 0..* MataPelajaran RaporBayangan 1..* Berisi 1..* MataPelajaran RaporAkhir 1..* Berisi 1..* MataPelajaran Siswa 1..1 Meng-upload 0..* JawabanMateri Karyawan 1..1 Meng-upload 0..* Materi JadwalHarian 1..* Berisi 1..1 JamSekolah JadwalHarian 1..* Berisi 1..1 MataPelajaran JadwalHarian 1..* Berisi 1..1 Karyawan JadwalUjian 1..* Berisi 1..1 MataPelajaran JadwalUjian 0..* Berisi 1..1 Karyawan JadwalUjian 1..* Berisi 1..1 JamSekolah JawabanMateri 1..* Mengenai 1..1 MataPelajaran Materi 1..* Mengenai 1..1 MataPelajaran Siswa 1..* Memiliki 1..1 Kelas Silabus 1..* Mengenai 1..1 Kelas RaporAkhir 1..* Mengenai 1..1 Kelas Kelas 1..* Memiliki 1..* MataPelajaran BankSoal 0..* Memiliki 1..1 Kelas BankSoal 1..* Mengenai 1..1 MataPelajaran Siswa 0..1 Menjaga 0..* Forum Karyawan 0..1 Menjaga 0..* Forum Siswa 1..1 Memasang 0..* Post Karyawan 1..1 Memasang 0..* Post Siswa 1..1 Memasang 0..* Topik Karyawan 1..1 Memasang 0..* Topik Forum 1..1 Memiliki 0..* Topik Topik 1..1 Memiliki 1..* Post Forum 1..* Memiliki 1..1 KategoriForum RaporBayangan 0..* Memiliki 0..* Ekstrakurikuler RaporAkhir 0..* Memiliki 0..* Ekstrakurikuler JawabanMateri 1..* Memiliki 1..1 Materi
4.1.4 Menentukan Atribut Domain
Untuk menentukan domain sudah dilakukan di langkah menentukan
atribut entitas di bagian 4.1.2. Kamus Data Atribut
135
4.1.5 Menentukan Candidate Key dan Primary Key
Tabel 4.4 Tabel Candidate dan Primary Key
Entity Name Candidate Key Primary Key
Karyawan KdKaryawan
NamaKaryawan
KdKaryawan
Tagihan KdTagihan KdTagihan
RaporBayangan KdRaporBayangan KdRaporBayangan
RaporAkhir KdRaporAkhir
KdReg
KdRaporAkhir
Siswa KdSiswa
NamaSiswa
KdSiswa
MataPelajaran KdMataPelajaran
NamaMataPelajaran
KdMataPelajaran
Silabus KdSilabus KdSilabus
RPP KdRPP KdRPP
BankSoal KdBankSoal
JudulBankSoal
KdBankSoal
JamSekolah KdJamSekolah KdJamSekolah
JadwalHarian KdJadwalHarian KdJadwalHarian
JadwalUjian KdJadwalUjian KdJadwalUjian
JawabanMateri KdJawabanMateri KdJawabanMateri
Materi KdMateri
JudulMateri
KdMateri
136
Entity Name Candidate Key Primary Key
Kelas KdKelas KdKelas
Forum KdForum
NamaForum
KdForum
KategoriForum KdKategoriForum NamaKategoriForum
KdKategoriForum
Topik KdTopik KdTopik
Post KdPost KdPost
Ekstrakurikuler KdEkstrakurikuler
NamaEkstrakurikuler
KdEkstrakurikuler
137
4.1.6 Diagram ER
Gambar 4.1 Diagram ER Sistem E-learning SMA Tarsisius II
138
4.1.7 Validasi Model Konseptual Lokal Terhadap Transaksi Pengguna
Berikut adalah transaksi yang ada:
a. Melihat daftar data siswa
b. Melihat daftar data guru
c. Melihat mata pelajaran yang diajarkan guru
d. Melihat daftar mata pelajaran yang terdapat di kelas
e. Melihat daftar nilai rapor bayangan sesuai dengan siswa bersangkutan
f. Melihat daftar nilai rapor akhir sesuai dengan siswa bersangkutan
g. Menampilkan jadwal mengajar guru
h. Menampilkan daftar jawaban materi sesuai dengan materi yang diberikan
i. Menampilkan bank soal sesuai mata pelajaran
j. Menampilkan nilai ekstrakurikuler di rapor bayangan
k. Menampilkan nilai ekstrakurikuler di rapor akhir
l. Melihat daftar topik sesuai forum
m. Melihat postingan sesuai dengan topik
n. Melihat silabus sesuai dengan kelas
o. Menampilkan nama pengawas yang menjaga ujian
139
Gambar 4.2 Validasi Model Terhadap Transaksi Pengguna
140
4.2 Perancangan Database Logikal
4.2.1 Menghilangkan Fitur-Fitur yang Tidak Sesuai dengan Model
Relasional
a. Menghilangkan Tipe Relasi Biner Many-To-Many (*:*)
Gambar 4.3 Relasi *:* antara Siswa dan Tagihan
Gambar 4.4 Relasi *:* antara Karyawan dan Silabus
141
Gambar 4.5 Relasi *:* antara Karyawan dan MataPelajaran
Gambar 4.6 Relasi *:* antara RaporBayangan dan MataPelajaran
Gambar 4.7 Relasi *:* antara RaporAkhir dan MataPelajaran
142
Gambar 4.8 Relasi *:* antara Kelas dan MataPelajaran
Gambar 4.9 Relasi *:* antara RaporAkhir dengan Ekstrakurikuler
Gambar 4.10 Relasi *:* antara RaporBayangan dengan Ekstrakurikuler
143
b. Menghilangkan atribut multi-valued
DetailTagihanSiswaDetailNilaiSiswa
NoSoal {PK}NoIndikatorNilai
berisi1..1 1..*
DetailTagihanSiswa
NoSoal [1..*]NoIndikator [1..*]Nilai [1..*]
Gambar 4.11 Memisahkan atribut multi-valued pada
DetailTagihanSiswa
Gambar 4.12 Memisahkan atribut multi-valued pada DetailRaporBayangan
144
Gambar 4.13 Memisahkan atribut multi-valued pada Silabus
145
Gambar 4.14 Memisahkan atribut multi-valued pada RPP
BankSoal
KdBankSoal {PK}
DetailBankSoal
NoBankSoal {PK}PertanyaanPilihan1Pilihan2Pilihan3Pilihan4Pilihan5JawabanPenjelasanJawaban
BankSoal
KdBankSoal {PK}NoBankSoal [1..*]Pertanyaan [1..*]Pil ihan1 [1..*]Pil ihan2 [1..*]Pil ihan3 [1..*]Pil ihan4 [1..*]Pil ihan5 [1..*]Jawaban [1..*]PenjelasanJawaban [1..*]
1..1 1..*memiliki
Gambar 4.15 Memisahkan atribut multi-valued pada BankSoal
146
4.2.2 Menurunkan Relasi untuk Model Data Logikal
a. Strong Entity Types
Karyawan (KdKaryawan, NamaKaryawan, PosisiKaryawan, KelasWali,
TanggalLahirKaryawan)
Primary Key KdKaryawan
Tagihan (KdTagihan, Kelas, KompetensiDasar, UraianIndikator1,
UraianIndikator2, UraianIndikator3, UraianIndikator4, SKBMIndikator1,
SKBMIndikator2, SKBMIndikator3, SKBMIndikator4, SoalIndikator1,
SoalIndikator2, SoalIndikator3, SoalIndikator4, Tanggal)
Primary Key KdTagihan
RaporBayangan (KdRaporBayangan, Kelas, Semester, TahunAjaran,
Sakit, Izin, TanpaKeterangan)
Primary Key KdRaporBayangan
RaporAkhir (KdRaporAkhir, KdReg, Semester, TahunAjaran, Komentar,
Sakit, Izin, TanpaKeterangan)
Primary Key KdRaporAkhir
Siswa (KdSiswa, NamaSiswa, KelasSiswa, TanggalLahirSiswa,
JenisKelaminSiswa)
Primary Key KdSiswa
147
MataPelajaran (KdMataPelajaran, NamaMataPelajaran)
Primary Key KdMataPelajaran
Silabus (KdSilabus, Semester)
Primary Key KdSilabus
RPP (KdRPP, Kelas, Semester, StandarKompetensi, KompetensiDasar,
Indikator, TujuanPembelajaran, MateriPokok, MateriPembelajaran,
MetodePembelajaran, SumberBelajar, Penilaian, Waktu)
Primary Key KdRPP
BankSoal (KdBankSoal, JudulBankSoal, DeskripsiBankSoal)
Primary Key KdBankSoal
JamSekolah (KdJamSekolah, Hari, Jam)
Primary Key KdJamSekolah
JadwalHarian (KdJadwalHarian, Kelas, Semester)
Primary Key KdJadwalHarian
JadwalUjian (KdJadwalUjian, Kelas, Semester)
Primary Key KdJadwalUjian
148
JawabanMateri (KdJawabanMateri, Deskripsi, NamaFile, Tanggal)
Primary Key KdJawabanMateri
Materi (KdMateri, JudulMateri, Kelas, Deskripsi, Soal, NamaFile,
Tanggal)
Primary Key KdMateri
Kelas (KdKelas, Tingkatan, Jurusan)
Primary Key KdKelas
Forum (KdForum, NamaForum, DeskripsiForum)
Primary Key KdForum
KategoriForum (KdKategoriForum, NamaKategoriForum)
Primary Key KdKategoriForum
Topik (KdTopik, JudulTopik, DeskripsiTopik, TanggalTopik)
Primary Key KdTopik
Post (KdPost, IsiPost, TanggalPost)
Primary Key KdPost
149
Ekstrakurikuler (KdEkstrakurikuler, NamaEkstrakurikuler)
Primary Key KdEkstrakurikuler
b. Weak Entity Types
DetailTagihanSiswa (NoSoal, NoIndikator, Nilai, TotalNilai1,
TotalNilai2, TotalNilai3, TotalNilai4, RataRata, Ketuntasan1,
Ketuntasan2, Ketuntasan3, Ketuntasan4)
Primary Key None
KaryawanSilabus ()
Primary Key None
KaryawanMataPelajaran (KelasMengajar)
Primary Key KelasMengajar
DetailRaporBayangan (RataRata, NamaJenisNilai)
Primary Key None
DetailRaporAkhir (SKM, Kognitif, Praktik, Sikap)
Primary Key None
KelasMataPelajaran ()
Primary Key None
150
DetailNilaiSiswa (NoSoal, NoIndikator, Nilai)
Primary Key NoSoal
NilaiEkstrakurikulerRaporAkhir (SKMEkstrakurikuler,
NilaiEkstrakurikuler)
Primary Key None
NilaiEkstrakurikulerRaporBayangan (NilaiEkstrakurikuler,
KeteranganEkstrakurikuler)
Primary Key None
DetailNilaiSiswa (NoSoal, NoIndikator, Nilai)
Primary Key NoSoal
DetailNilaiRaporBayangan (Urutan, RataRata, NamaJenisNilai)
Primary Key Urutan
S tandarKompetensiSilabus (NoSK, StandarKompetensi)
Primary Key NoSK
151
KompetensiDasarSilabus (NoKD, KompetensiDasar, MateriPokok,
MateriPembelajaran, KegiatanPembelajaran, Indikator, Penilaian,
SumberBelajar, Waktu)
Primary Key NoKD
DetailRPP (Pertemuan, KegiatanAwal, KegiatanInti, KegiatanAkhir)
Primary Key Pertemuan
DetailBankSoal (NoBankSoal, Pertanyaan, Pilihan1, Pilihan2, Pilihan3,
Pilihan4, Pilihan5, Jawaban, PenjelasanJawaban)
Primary Key NoBankSoal
c. One-to-many (1:*) Binary Relationship Types
1. Relasi antara Siswa dan RaporBayangan
152
2. Relasi antara Siswa dan RaporAkhir
3. Relasi antara Karyawan dan RaporBayangan
4. Relasi antara Karyawan dan RaporAkhir
153
5. Relasi antara Karyawan dan RPP
6. Relasi antara Karyawan dan Tagihan
7. Relasi antara Karyawan dan BankSoal
154
8. Relasi antara MataPelajaran dan Silabus
9. Relasi antara MataPelajaran dan RPP
10. Relasi antara Siswa dan JawabanMateri
155
11. Relasi antara Karyawan dan Materi
12. Relasi antara MataPelajaran dan JawabanMateri
13. Relasi antara MataPelajaran dan Materi
156
14. Relasi antara Kelas dan Siswa
15. Relasi antara Kelas dan Silabus
16. Relasi antara Kelas dan RaporAkhir
157
17. Relasi antara Kelas dan BankSoal
18. Relasi antara MataPelajaran dan BankSoal
158
19. Relasi antara Siswa dan Post
20. Relasi antara Karyawan dan Post
21. Relasi antara Siswa dan Topik
159
22. Relasi antara Karyawan dan Topik
23. Relasi antara Forum dan Topik
160
24. Relasi antara Topik dan Post
25. Relasi antara KategoriForum dan Forum
161
26. Relasi antara Materi dan JawabanMateri
27. Relasi antara JadwalHarian dan MataPelajaran
28. Relasi antara JadwalHarian dan Karyawan
162
29. Relasi antara JadwalHarian dan JamSekolah
30. Relasi antara JadwalUjian dan MataPelajaran
31. Relasi antara JadwalUjian dan Karyawan
163
32. Relasi antara JadwalUjian dan JamSekolah
33. Relasi antara Siswa dan Forum
164
34. Relasi antara Karyawan dan Forum
d. Many-to-many (*:*) Binary Relationship Types
1. Relasi antara Siswa dan Tagihan
165
2. Relasi antara Karyawan dan Silabus
3. Relasi antara Karyawan dan MataPelajaran
166
4. Relasi antara RaporBayangan dan MataPelajaran
5. Relasi antara RaporAkhir dan MataPelajaran
167
6. Relasi antara JadwalHarian dan JamSekolah
7. Relasi antara JadwalUjian dan JamSekolah
168
8. Relasi antara Kelas dan MataPelajaran
9. Relasi antara RaporBayangan dan Ekstrakurikuler
169
10. Relasi antara RaporAkhir dan Ekstrakurikuler
e. Multivalue Attributes
1. Hubungan antara DetailTagihanSiswa dengan DetailNilaiSiswa
170
2. Hubungan antara DetailRaporBayangan dengan
DetailNilaiRaporBayangan
3. Hubungan antara Silabus dengan StandarKompetensiSilabus
171
4. Hubungan antara StandarKompetensiSilabus dengan
KompetensiDasarSilabus
5. Hubungan antara RPP dengan DetailRPP
6. Hubungan antara BankSoal dengan DetailBankSoal
172
4.2.3 Validasi Relasi dengan Menggunakan Normalisasi
Karyawan (KdKaryawan, NamaKaryawan, PosisiKaryawan, KelasWali,
TanggalLahirKaryawan)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
KaryawanMataPelajaran (KdKaryawan, KdMataPelajaran, KelasMengajar)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
Tagihan (KdTagihan, KdMataPelajaran, Kelas, KompetensiDasar, UraianIndikator1,
UraianIndikator2, UraianIndikator3, UraianIndikator4, SKBMIndikator1,
SKBMIndikator2, SKBMIndikator3, SKBMIndikator4, SoalIndikator1,
SoalIndikator2, SoalIndikator3, SoalIndikator4, Tanggal, KdKaryawan)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
DetailTagihanSiswa (KdTagihan, KdSiswa, TotalNilai1, TotalNilai2, TotalNilai3,
TotalNilai4, RataRata, Ketuntasan1, Ketuntasan2, Ketuntasan3, Ketuntasan4)
1NF → Belum terpenuhi karena masih ada derived data.
DetailTagihanSiswa (KdTagihan, KdSiswa)
173
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
DetailNilaiSiswa (KdTagihan, KdSiswa, NoSoal, NoIndikator, Nilai)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
RaporBayangan (KdRaporBayangan, KdKaryawan, KdSiswa, Kelas, Semester,
TahunAjaran, Sakit, Izin, TanpaKeterangan)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
DetailRaporBayangan (KdRaporBayangan, KdMataPelajaran)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
DetailNilaiRaporBayangan (KdRaporBayangan, KdMataPelajaran, Urutan,
RataRata, NamaJenisNilai)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Belum terpenuhi karena masih ada transitive dependency.
174
DetailNilaiRaporBayangan (KdRaporBayangan, KdMataPelajaran, Urutan,
RataRata, KdJenisNilai)
JenisNilai (KdJenisNilai, NamaJenisNilai)
NilaiEkstrakurikulerRaporBayangan (KdRaporBayangan, KdEkstrakurikuler,
NilaiEkstrakurikuler, KeteranganEkstrakurikuler)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
RaporAkhir (KdRaporAkhir, KdReg, KdKaryawan, Semester, TahunAjaran,
Komentar, KdSiswa, Sakit, Izin, TanpaKeterangan, KdKelas)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
DetailRaporAkhir (KdRaporAkhir, KdMataPelajaran, Kognitif, Praktik, Sikap,
KKM)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
NilaiEkstrakurikulerRaporAkhir (KdRaporAkhir, KdEkstrakurikuler,
SKMEkstrakurikuler, NilaiEkstrakurikuler)
175
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
Siswa (KdSiswa, KdKelas, NamaSiswa, KelasSiswa, TanggalLahirSiswa,
JenisKelaminSiswa)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
MataPelajaran (KdMataPelajaran, NamaMataPelajaran)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
Silabus (KdSilabus, Semester, KdMataPelajaran, KdKelas)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
KaryawanSilabus (KdSilabus, KdKaryawan)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Belum terpenuhi karena masih ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
176
StandarKompetensiSilabus (KdSilabus, NoSK, StandarKompetensi)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
KompetensiDasarSilabus (KdSilabus, NoSK, NoKD, KompetensiDasar,
MateriPokok, MateriPembelajaran, KegiatanPembelajaran, Indikator, Penilaian,
Waktu, SumberBelajar)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
RPP (KdRPP, KdMataPelajaran, Kelas, Semester, StandarKompetensi,
KompetensiDasar, Indikator, TujuanPembelajaran, MateriPokok,
MateriPembelajaran, MetodePembelajaran, SumberBelajar, Penilaian, Waktu)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
DetailRPP (KdRPP, Pertemuan, KegiatanAwal, KegiatanInti, KegiatanAkhir)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
BankSoal (KdBankSoal, JudulBankSoal, DeskripsiBankSoal, KdKaryawan,
177
KdMataPelajaran, KdKelas)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
DetailBankSoal (KdBankSoal, NoBankSoal, Pertanyaan, Pilihan1, Pilihan2,
Pilihan3, Pilihan4, Pilihan5, Jawaban, PenjelasanJawaban)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
JamSekolah (KdJamSekolah, Hari, Jam)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
JadwalHarian (KdJadwalHarian, Kelas, Semester, KdMataPelajaran, KdKaryawan,
KdJamSekolah)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
JadwalUjian (KdJadwalUjian, Kelas, Semester, KdMataPelajaran, KdKaryawan,
KdJamSekolah)
178
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
Materi (KdMateri, KdKaryawan, KdMataPelajaran, JudulMateri, Kelas, Deskripsi,
Soal, NamaFile, Tanggal)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
JawabanMateri (KdJawabanMateri, KdMateri, KdSiswa, KdMataPelajaran,
Deskripsi, NamaFile, Tanggal)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency..
Kelas (KdKelas, Tingkatan, Jurusan)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
KelasMataPelajaran (KdKelas, KdMataPelajaran)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
179
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
Forum (KdForum, NamaForum, KdKategoriForum, DeskripsiForum, Moderator)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
KategoriForum (KdKategoriForum, NamaKategoriForum)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
Topik (KdTopik, KdForum, JudulTopik, DeskripsiTopik, TopicStarter,
TanggalTopik)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
Post (KdPost, Poster, IsiPost, TanggalPost, KdTopik)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
Ekstrakurikuler (KdEkstrakurikuler, NamaEkstrakurikuler)
1NF → Sudah terpenuhi karena tidak ada repeating group lagi.
2NF → Sudah terpenuhi karena tidak ada partial dependency.
3NF → Sudah terpenuhi karena tidak ada transitive dependency.
180
4.2.4 Diagram ERD
Gambar 4.16 Diagram ERD Sistem E-learning SMA Tarsisius II
181
4.3 Perancangan Database Fisikal
4.3.1 Merancang Base Relations
Domain dom_KdKaryawan: integer
Domain dom_NamaKaryawan: variable length character string, length 100
Domain dom_PosisiKaryawan: variable length character string, length 20
Domain dom_KelasWali: variable length character string, length 10
Domain dom_TanggalLahirKaryawan: date
Karyawan(
KdKaryawan: dom_KdKaryawan NOT NULL,
NamaKaryawan: dom_NamaKaryawan NOT NULL,
PosisiKaryawan: dom_PosisiKaryawan NOT NULL,
KelasWali: dom_KelasWali NULL,
TanggalLahirKaryawan: dom_TanggalLahirKaryawan NOT NULL,
PRIMARY KEY (KdKaryawan));
_________________________________________________________________
Domain dom_KdKaryawan: integer
Domain dom_KdMataPelajaran: integer
Domain dom_KelasMengajar: variable length character string, length 10
KaryawanMataPelajaran(
KdKaryawan: dom_KdKaryawan NOT NULL,
KdMataPelajaran: dom_KdMataPelajaran NOT NULL,
182
KelasMengajar: dom_KelasMengajar NOT NULL,
PRIMARY KEY (KdKaryawan),
PRIMARY KEY (KdMataPelajaran),
PRIMARY KEY (KelasMengajar),
FOREIGN KEY (KdKaryawan) REFERENCE Karyawan(KdKaryawan) ON
UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdMataPelajaran) REFERENCE
MataPelajaran(KdMataPelajaran) ON UPDATE CASCADE ON DELETE SET
NULL);
_________________________________________________________________
Domain dom_KdTagihan: integer
Domain dom_KdMataPelajaran: integer
Domain dom_KdKaryawan: integer
Domain dom_Kelas: variable length character string, length 10
Domain dom_KdJenisNilai: integer
Domain dom_KompetensiDasar: text
Domain dom_UraianIndikator1: text
Domain dom_UraianIndikator2: text
Domain dom_UraianIndikator3: text
Domain dom_UraianIndikator4: text
Domain dom_SKBMIndikator1: double
Domain dom_SKBMIndikator2: double
Domain dom_SKBMIndikator3: double
183
Domain dom_SKBMIndikator4: double
Domain dom_SoalIndikator1: variable length character string, length 10
Domain dom_SoalIndikator2: variable length character string, length 10
Domain dom_SoalIndikator3: variable length character string, length 10
Domain dom_SoalIndikator4: variable length character string, length 10
Domain dom_Tanggal: date
Tagihan(
KdTagihan: dom_KdTagihan NOT NULL,
KdMataPelajaran: dom_KdMataPelajaran NULL,
KdKaryawan: dom_KdKaryawan NULL,
Kelas: dom_Kelas NOT NULL,
KdJenisNilai: dom_KdJenisNilai NULL,
KompetensiDasar: dom_KompetensiDasar NOT NULL,
UraianIndikator1: dom_UraianIndikator1 NULL,
UraianIndikator2: dom_UraianIndikator2 NULL,
UraianIndikator3: dom_UraianIndikator3 NULL,
UraianIndikator4: dom_UraianIndikator4 NULL,
SKBMIndikator1: dom_SKBMIndikator1 NULL,
SKBMIndikator2: dom_SKBMIndikator2 NULL,
SKBMIndikator3: dom_SKBMIndikator3 NULL,
SKBMIndikator4: dom_SKBMIndikator4 NULL,
SoalIndikator1: dom_SoalIndikator1 NULL,
184
SoalIndikator2: dom_SoalIndikator2 NULL,
SoalIndikator3: dom_SoalIndikator3 NULL,
SoalIndikator4: dom_SoalIndikator4 NULL,
Tanggal: dom_Tanggal NOT NULL,
PRIMARY KEY (KdTagihan),
FOREIGN KEY (KdMataPelajaran) REFERENCE
MataPelajaran(KdMataPelajaran) ON UPDATE CASCADE ON DELETE SET
NULL,
FOREIGN KEY (KdKaryawan) REFERENCE Karyawan(KdKaryawan) ON
UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdJenisNilai) REFERENCE JenisNilai(KdJenisNilai) ON
UPDATE CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdJenisNilai: integer
Domain dom_NamaJenisNilai: variable length character string, length 20
JenisNilai(
KdJenisNilai: dom_KdJenisNilai NOT NULL,
NamaJenisNilai: dom_NamaJenisNilai NOT NULL,
PRIMARY KEY (KdJenisNilai));
_________________________________________________________________
Domain dom_KdTagihan: integer
Domain dom_KdSiswa: integer
185
Domain dom_RataRata: integer
DetailTagihanSiswa(
KdTagihan: dom_KdTagihan NOT NULL,
KdSiswa: dom_KdSiswa NOT NULL,
RataRata: dom_RataRata NOT NULL,
PRIMARY KEY (KdTagihan),
PRIMARY KEY (KdSiswa),
FOREIGN KEY (KdTagihan) REFERENCE Tagihan(KdTagihan) ON UPDATE
CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdSiswa) REFERENCE Siswa(KdSiswa) ON UPDATE
CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdTagihan: integer
Domain dom_KdSiswa: integer
Domain dom_NoSoal: integer
Domain dom_Indikator: integer
Domain dom_Nilai: integer
DetailNilaiSiswa(
KdTagihan: dom_KdTagihan NOT NULL,
KdSiswa: dom_KdSiswa NOT NULL,
NoSoal: dom_NoSoal NOT NULL,
186
NoIndikator: dom_NoIndikator NOT NULL,
Nilai: dom_Nilai NOT NULL,
PRIMARY KEY (KdTagihan),
PRIMARY KEY (KdSiswa),
PRIMARY KEY (NoSoal),
FOREIGN KEY (KdTagihan) REFERENCE DetailTagihanSiswa(KdTagihan)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdSiswa) REFERENCE DetailTagihanSiswa(KdSiswa) ON
UPDATE CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdRaporBayangan: integer
Domain dom_KdKaryawan: integer
Domain dom_KdSiswa: integer
Domain dom_Kelas: variable length character string, length 10
Domain dom_Semester: tinyint
Domain dom_TahunAjaran: variable length character string, length 10
Domain dom_Sakit: tinyint
Domain dom_Izin: tinyint
Domain dom_TanpaKeterangan: tinyint
RaporBayangan(
KdRaporBayangan: dom_KdRaporBayangan NOT NULL,
KdKaryawan: dom_KdKaryawan NULL,
187
KdSiswa: dom_KdSiswa NULL,
Kelas: dom_Kelas NOT NULL,
Semester: dom_Semester NOT NULL,
TahunAjaran: dom_TahunAjaran NOT NULL,
Sakit: dom_Sakit NULL,
Izin: dom_Izin NULL,
TanpaKeterangan: dom_TanpaKeterangan NULL,
PRIMARY KEY (KdRaporBayangan),
FOREIGN KEY (KdKaryawan) REFERENCE Karyawan(KdKaryawan) ON
UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdSiswa) REFERENCE Siswa(KdSiswa) ON UPDATE
CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdRaporBayangan: integer
Domain dom_KdMataPelajaran: integer
DetailRaporBayangan(
KdRaporBayangan: dom_KdRaporBayangan NOT NULL,
KdMataPelajaran: dom_KdMataPelajaran NOT NULL,
PRIMARY KEY (KdRaporBayangan),
PRIMARY KEY (KdMataPelajaran),
188
FOREIGN KEY (KdRaporBayangan) REFERENCE
RaporBayangan(KdRaporBayangan) ON UPDATE CASCADE ON DELETE
SET NULL,
FOREIGN KEY (KdMataPelajaran) REFERENCE
MataPelajaran(KdMataPelajaran) ON UPDATE CASCADE ON DELETE SET
NULL);
_________________________________________________________________
Domain dom_KdRaporBayangan: integer
Domain dom_KdMataPelajaran: integer
Domain dom_Urutan: integer
Domain dom_KdJenisNilai: integer
Domain dom_RataRata integer
DetailNilaiRaporBayangan(
KdRaporBayangan: dom_KdRaporBayangan NOT NULL,
KdMataPelajaran: dom_KdMataPelajaran NOT NULL,
Urutan: dom_Urutan NOT NULL,
KdJenisNilai: dom_KdJenisNilai NULL,
RataRata dom_RataRata NOT NULL,
PRIMARY KEY (KdRaporBayangan),
PRIMARY KEY (KdMataPelajaran),
PRIMARY KEY (Urutan),
189
FOREIGN KEY (KdRaporBayangan) REFERENCE
DetailRaporBayangan(KdRaporBayangan) ON UPDATE CASCADE ON
DELETE SET NULL,
FOREIGN KEY (KdMataPelajaran) REFERENCE
DetailRaporBayangan(KdMataPelajaran) ON UPDATE CASCADE ON
DELETE SET NULL,
FOREIGN KEY (KdJenisNilai) REFERENCE JenisNilai(KdJenisNilai) ON
UPDATE CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdRaporBayangan: integer
Domain dom_KdEkstrakurikuler: integer
Domain dom_NilaiEkstrakurikuler: integer
Domain dom_KeteranganEkstrakurikuler: text
NilaiEkstrakurikulerRaporBayangan(
KdRaporBayangan: dom_KdRaporBayangan NOT NULL,
KdEkstrakurikuler: dom_KdEkstrakurikuler NOT NULL,
NilaiEkstrakurikuler: dom_NilaiEkstrakurikuler NOT NULL,
KeteranganEkstrakurikuler: dom_KeteranganEkstrakurikuler NOT NULL,
PRIMARY KEY (KdRaporBayangan),
PRIMARY KEY (KdEkstrakurikuler),
190
FOREIGN KEY (KdRaporBayangan) REFERENCE
RaporBayangan(KdRaporBayangan) ON UPDATE CASCADE ON DELETE
SET NULL,
FOREIGN KEY (KdEkstrakurikuler) REFERENCE
Ekstrakurikuler(KdEkstrakurikuler) ON UPDATE CASCADE ON DELETE
SET NULL);
_________________________________________________________________
Domain dom_KdEkstrakurikuler: integer
Domain dom_NamaEkstrakurikuler: variable length character string, length 20
Ekstrakurikuler(
KdEkstrakurikuler: dom_KdEkstrakurikuler NOT NULL,
NamaEkstrakurikuler: dom_NamaEkstrakurikuler NOT NULL,
PRIMARY KEY (KdEkstrakurikuler));
_________________________________________________________________
Domain dom_KdRaporAkhir: integer
Domain dom_KdReg: variable length character string, length 20
Domain dom_KdKaryawan: integer
Domain dom_KdSiswa: integer
Domain dom_KdKelas integer
Domain dom_Semester: tinyint
Domain dom_TahunAjaran: variable length character string, length 10
Domain dom_Komentar: text
191
Domain dom_Sakit tinyint
Domain dom_Izin tinyint
Domain dom_TanpaKeterangan tinyint
RaporAkhir(
KdRaporAkhir: dom_KdRaporAkhir NOT NULL,
KdReg: dom_KdReg NOT NULL,
KdKaryawan: dom_KdKaryawan NULL,
KdSiswa: dom_KdSiswa NULL,
KdKelas: dom_KdKelas NULL,
Semester: dom_Semester NOT NULL,
TahunAjaran: dom_TahunAjaran NOT NULL,
Komentar: dom_Komentar NULL,
Sakit dom_Sakit NULL,
Izin dom_Izin NULL,
TanpaKeterangan dom_TanpaKeterangan NULL,
PRIMARY KEY (KdRaporAkhir),
FOREIGN KEY (KdKaryawan) REFERENCE Karyawan(KdKaryawan) ON
UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdSiswa) REFERENCE Siswa(KdSiswa) ON UPDATE
CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdKelas) REFERENCE Kelas(KdKelas) ON UPDATE
CASCADE ON DELETE SET NULL);
192
_________________________________________________________________
Domain dom_KdKelas: integer
Domain dom_Jurusan: variable length character string, length 3
Domain dom_Tingkatan: tinyint
Kelas(
KdKelas: dom_KdKelas NOT NULL,
Jurusan: dom_Jurusan NULL,
Tingkatan: dom_Tingkatan NOT NULL,
PRIMARY KEY (KdKelas));
_________________________________________________________________
Domain dom_KdRaporAkhir: integer
Domain dom_KdMataPelajaran: integer
Domain dom_Kognitif: integer
Domain dom_Praktik: integer
Domain dom_Sikap: variable length character string, length 20
Domain dom_KKM: double
DetailRaporAkhir(
KdRaporAkhir: dom_KdRaporAkhir NOT NULL,
KdMataPelajaran: dom_KdMataPelajaran NOT NULL,
Kognitif: dom_Kognitif NULL,
Praktik: dom_Praktik NULL,
193
Sikap: dom_Sikap NULL,
KKM: dom_KKM NOT NULL,
PRIMARY KEY (KdRaporAkhir),
PRIMARY KEY (KdMataPelajaran),
FOREIGN KEY (KdRaporAkhir) REFERENCE RaporAkhir(KdRaporAkhir)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdMataPelajaran) REFERENCE
MataPelajaran(KdMataPelajaran) ON UPDATE CASCADE ON DELETE SET
NULL);
_________________________________________________________________
Domain dom_KdRaporAkhir: integer
Domain dom_KdEkstrakurikuler: integer
Domain dom_SKMEkstrakurikuler: double
Domain dom_NilaiEkstrakurikuler: integer
NilaiEkstrakurikulerRaporAkhir(
KdRaporAkhir: dom_KdRaporAkhir NOT NULL,
KdEkstrakurikuler: dom_KdEkstrakurikuler NOT NULL,
SKMEkstrakurikuler: dom_SKMEkstrakurikuler NOT NULL,
NilaiEkstrakurikuler: dom_NilaiEkstrakurikuler NOT NULL,
PRIMARY KEY (KdRaporAkhir),
PRIMARY KEY (KdEkstrakurikuler),
194
FOREIGN KEY (KdRaporAkhir) REFERENCE RaporAkhir(KdRaporAkhir)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdEkstrakurikuler) REFERENCE
Ekstrakurikuler(KdEkstrakurikuler) ON UPDATE CASCADE ON DELETE
SET NULL);
_________________________________________________________________
Domain dom_KdSiswa: integer
Domain dom_KdKelas: integer
Domain dom_NamaSiswa: variable length character string, length 100
Domain dom_KelasSiswa: variable length character string, length 10
Domain dom_TanggalLahirSiswa: date
Domain dom_JenisKelaminSiswa single character, must be one of 'L', 'P'
Siswa(
KdSiswa: dom_KdSiswa NOT NULL,
KdKelas: dom_KdKelas NULL,
NamaSiswa: dom_NamaSiswa NOT NULL,
KelasSiswa: dom_KelasSiswa NOT NULL,
TanggalLahirSiswa: dom_TanggalLahirSiswa NOT NULL,
JenisKelaminSiswa: dom_JenisKelaminSiswa NOT NULL,
PRIMARY KEY (KdSiswa));
FOREIGN KEY (KdKelas) REFERENCE Kelas(KdKelas) ON UPDATE
CASCADE ON DELETE SET NULL);
195
_________________________________________________________________
Domain dom_KdMataPelajaran: integer
Domain dom_NamaMataPelajaran: variable length character string, length 100
MataPelajaran(
KdMataPelajaran: dom_KdMataPelajaran NOT NULL,
NamaMataPelajaran: dom_NamaMataPelajaran NOT NULL,
PRIMARY KEY (KdMataPelajaran));
_________________________________________________________________
Domain dom_KdSilabus: integer
Domain dom_KdMataPelajaran: integer
Domain dom_KdKelas: integer
Domain dom_Semester: tinyint
Silabus(
KdSilabus: dom_KdSilabus NOT NULL,
KdMataPelajaran: dom_KdMataPelajaran NULL,
KdKelas: dom_KdKelas NULL,
Semester: dom_Semester NOT NULL,
PRIMARY KEY (KdSilabus),
FOREIGN KEY (KdMataPelajaran) REFERENCE
MataPelajaran(KdMataPelajaran) ON UPDATE CASCADE ON DELETE SET
NULL,
196
FOREIGN KEY (KdKelas) REFERENCE Kelas(KdKelas) ON UPDATE
CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdSilabus: integer
Domain dom_KdKaryawan: integer
KaryawanSilabus(
KdSilabus: dom_KdSilabus NOT NULL,
KdKaryawan: dom_KdKaryawan NOT NULL,
PRIMARY KEY (KdSilabus),
PRIMARY KEY (KdKaryawan),
FOREIGN KEY (KdSilabus) REFERENCE Silabus(KdSilabus) ON UPDATE
CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdKaryawan) REFERENCE Karyawan(KdKaryawan) ON
UPDATE CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdSilabus: integer
Domain dom_NoSK: integer
Domain dom_StandarKompetensi: text
StandarKompetensiSilabus(
KdSilabus: dom_KdSilabus NOT NULL,
NoSK: dom_NoSK NOT NULL,
197
StandarKompetensi: dom_StandarKompetensi NOT NULL,
PRIMARY KEY (KdSilabus),
PRIMARY KEY (NoSK),
FOREIGN KEY (KdSilabus) REFERENCE Silabus(KdSilabus) ON UPDATE
CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdSilabus: integer
Domain dom_NoSK: integer
Domain dom_NoKD: integer
Domain dom_KompetensiDasar: text
Domain dom_MateriPokok: text
Domain dom_MateriPembelajaran: text
Domain dom_KegiatanPembelajaran:text
Domain dom_Indikator: text
Domain dom_Penilaian: text
Domain dom_Waktu: text
Domain dom_SumberBelajar: text
KompetensiDasarSilabus(
KdSilabus: dom_KdSilabus NOT NULL,
NoSK: dom_NoSK NOT NULL,
NoKD: dom_NoKD NOT NULL,
KompetensiDasar: dom_KompetensiDasar NOT NULL,
198
MateriPokok: dom_MateriPokok NOT NULL,
MateriPembelajaran: dom_MateriPembelajaran NOT NULL,
KegiatanPembelajaran: dom_KegiatanPembelajaran NOT NULL,
Indikator: dom_Indikator NOT NULL,
Penilaian: dom_Penilaian NOT NULL,
Waktu: dom_Waktu NOT NULL,
SumberBelajar: dom_SumberBelajar NOT NULL,
PRIMARY KEY (KdSilabus),
PRIMARY KEY (NoSK),
PRIMARY KEY (NoKD),
FOREIGN KEY (KdSilabus) REFERENCE
StandarKompetensiSilabus(KdSilabus) ON UPDATE CASCADE ON DELETE
SET NULL,
FOREIGN KEY (NoSK) REFERENCE StandarKompetensiSilabus(NoSK) ON
UPDATE CASCADE ON DELETE SET NULL,
_________________________________________________________________
Domain dom_KdRPP: integer
Domain dom_KdMataPelajaran: integer
Domain dom_Kelas: integer
Domain dom_Semester: tinyint
Domain dom_StandarKompetensi: text
Domain dom_KompetensiDasar: text
Domain dom_Indikator: text
199
Domain dom_TujuanPembelajaran: text
Domain dom_MateriPokok: text
Domain dom_MateriPembelajaran: text
Domain dom_MetodePembelajaran: text
Domain dom_SumberBelajar: text
Domain dom_Penilaian: text
Domain dom_Waktu: text
RPP(
KdRPP: dom_KdRPP NOT NULL,
KdMataPelajaran: dom_KdMataPelajaran NULL,
Kelas: dom_Kelas NULL,
Semester: dom_Semester NOT NULL,
StandarKompetensi: dom_StandarKompetensi NOT NULL,
KompetensiDasar: dom_KompetensiDasar NOT NULL,
Indikator: dom_Indikator NOT NULL,
TujuanPembelajaran: dom_TujuanPembelajaran NOT NULL,
MateriPokok: dom_MateriPokok NOT NULL,
MateriPembelajaran: dom_MateriPembelajaran NOT NULL,
MetodePembelajaran: dom_MetodePembelajaran NOT NULL,
SumberBelajar: dom_SumberBelajar NOT NULL,
Penilaian: dom_Penilaian NOT NULL,
Waktu: dom_Waktu NOT NULL,
200
PRIMARY KEY (KdRPP),
FOREIGN KEY (KdMataPelajaran) REFERENCE
MataPelajaran(KdMataPelajaran) ON UPDATE CASCADE ON DELETE SET
NULL,
_________________________________________________________________
Domain dom_KdRPP: integer
Domain dom_Pertemuan: integer
Domain dom_KegiatanAwal: text
Domain dom_KegiatanInti: text
Domain dom_KegiatanAkhir: text
DetailRPP(
KdRPP: dom_KdRPP NOT NULL,
Pertemuan: dom_Pertemuan NOT NULL,
KegiatanAwal: dom_KegiatanAwal NOT NULL,
KegiatanInti: dom_KegiatanInti NOT NULL,
KegiatanAkhir: dom_KegiatanAkhir NOT NULL,
PRIMARY KEY (KdRPP),
PRIMARY KEY (Pertemuan),
FOREIGN KEY (KdRPP) REFERENCE RPP(KdRPP) ON UPDATE
CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdBankSoal: integer
201
Domain dom_JudulBankSoal: variable length character string, length 100
Domain dom_DeskripsiBankSoal: text
Domain dom_KdKaryawan: integer
Domain dom_KdMataPelajaran: integer
Domain dom_KdKelas: integer
BankSoal(
KdBankSoal: dom_KdBankSoal NOT NULL,
JudulBankSoal: dom_JudulBankSoal NOT NULL,
DeskripsiBankSoal: dom_DeskripsiBankSoal NOT NULL,
KdKaryawan: dom_KdKaryawan NULL,
KdMataPelajaran: dom_KdMataPelajaran NULL,
KdKelas: dom_KdKelas NULL,
PRIMARY KEY (KdBankSoal),
FOREIGN KEY (KdKaryawan) REFERENCE Karyawan(KdKaryawan) ON
UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdMataPelajaran) REFERENCE
MataPelajaran(KdMataPelajaran) ON UPDATE CASCADE ON DELETE SET
NULL,
FOREIGN KEY (KdKelas) REFERENCE Kelas(KdKelas) ON UPDATE
CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdBankSoal: integer
202
Domain dom_NoBankSoal: integer
Domain dom_Pertanyaan: text
Domain dom_Pilihan1: text
Domain dom_Pilihan2: text
Domain dom_Pilihan3: text
Domain dom_Pilihan4: text
Domain dom_Pilihan5: text
Domain dom_Jawaban: tinyint
Domain dom_PenjelasanJawaban: text
DetailBankSoal(
KdBankSoal: dom_KdBankSoal NOT NULL,
NoBankSoal: dom_NoBankSoal NOT NULL,
Pertanyaan: dom_Pertanyaan NOT NULL,
Pilihan1: dom_Pilihan1 NOT NULL,
Pilihan2: dom_Pilihan2 NOT NULL,
Pilihan3: dom_Pilihan3 NOT NULL,
Pilihan4: dom_Pilihan4 NOT NULL,
Pilihan5: dom_Pilihan5 NOT NULL,
Jawaban: dom_Jawaban NOT NULL,
PenjelasanJawaban: dom_PenjelasanJawaban NULL,
PRIMARY KEY (KdBankSoal),
PRIMARY KEY (NoBankSoal),
203
FOREIGN KEY (KdBankSoal) REFERENCE BankSoal(KdBankSoal) ON
UPDATE CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdJamSekolah: integer
Domain dom_Hari: tinyint
Domain dom_Jam: variable length character string, length 10
JamSekolah(
KdJamSekolah: dom_KdJamSekolah NOT NULL,
Hari: dom_Hari NOT NULL,
Jam: dom_Jam NOT NULL,
PRIMARY KEY (KdJamSekolah));
_________________________________________________________________
Domain dom_KdJadwalHarian: integer
Domain dom_Kelas: variable length character string, length 10
Domain dom_Semester: tinyint
Domain dom_KdJamSekolah: integer
Domain dom_KdMataPelajaran: integer
Domain dom_KdKaryawan: integer
JadwalHarian(
KdJadwalHarian: dom_KdJadwalHarian NOT NULL,
Kelas: dom_Kelas NOT NULL,
204
Semester: dom_Semester NOT NULL,
KdJamSekolah: dom_KdJamSekolah NULL,
KdMataPelajaran: dom_KdMataPelajaran NULL,
KdKaryawan: dom_KdKaryawan NULL,
PRIMARY KEY (KdJadwalHarian);
FOREIGN KEY (KdJamSekolah) REFERENCE JamSekolah(KdJamSekolah)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdMataPelajaran) REFERENCE
MataPelajaran(KdMataPelajaran) ON UPDATE CASCADE ON DELETE SET
NULL,
FOREIGN KEY (KdKaryawan) REFERENCE Karyawan(KdKaryawan) ON
UPDATE CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdJadwalUjian: integer
Domain dom_Kelas: variable length character string, length 10
Domain dom_Semester: tinyint
Domain dom_KdJamSekolah: integer
Domain dom_KdMataPelajaran: integer
Domain dom_KdKaryawan: integer
JadwalUjian(
KdJadwalUjian: dom_KdJadwalUjian NOT NULL,
205
Kelas: dom_Kelas NOT NULL,
Semester: dom_Semester NOT NULL,
KdJamSekolah: dom_KdJamSekolah NULL,
KdMataPelajaran: dom_KdMataPelajaran NULL,
KdKaryawan: dom_KdKaryawan NULL,
PRIMARY KEY (KdJadwalUjian);
FOREIGN KEY (KdJamSekolah) REFERENCE JamSekolah(KdJamSekolah)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdMataPelajaran) REFERENCE
MataPelajaran(KdMataPelajaran) ON UPDATE CASCADE ON DELETE SET
NULL,
FOREIGN KEY (KdKaryawan) REFERENCE Karyawan(KdKaryawan) ON
UPDATE CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdMateri: integer
Domain dom_KdKaryawan: integer
Domain dom_KdMataPelajaran: integer
Domain dom_JudulMateri: variable length character string, length 100
Domain dom_Kelas: variable length character string, length 10
Domain dom_Deskripsi: text
Domain dom_Soal: boolean
Domain dom_NamaFile: variable length character string, length 100
206
Domain dom_Tanggal: date
Materi(
KdMateri: dom_KdMateri NOT NULL,
KdKaryawan: dom_KdKaryawan NULL,
KdMataPelajaran: dom_KdMataPelajaran NULL,
JudulMateri: dom_JudulMateri NOT NULL,
Kelas: dom_Kelas NOT NULL,
Deskripsi: dom_Deskripsi NULL,
Soal: dom_Soal NOT NULL,
NamaFile: dom_NamaFile NOT NULL,
Tanggal: dom_Tanggal NOT NULL,
PRIMARY KEY (KdMateri),
FOREIGN KEY (KdKaryawan) REFERENCE Karyawan(KdKaryawan) ON
UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdMataPelajaran) REFERENCE
MataPelajaran(KdMataPelajaran) ON UPDATE CASCADE ON DELETE SET
NULL);
_________________________________________________________________
Domain dom_KdJawabanMateri: integer
Domain dom_KdMateri: integer
Domain dom_KdSiswa: integer
Domain dom_Deskripsi: text
207
Domain dom_NamaFile: variable length character string, length 100
Domain dom_Tanggal: date
JawabanMateri(
KdJawabanMateri: dom_KdJawabanMateri NOT NULL,
KdMateri: dom_KdMateri NOT NULL,
KdSiswa: dom_KdSiswa NULL,
Deskripsi: dom_Deskripsi NULL,
NamaFile: dom_NamaFile NOT NULL,
Tanggal: dom_Tanggal NOT NULL,
PRIMARY KEY (KdJawabanMateri),
FOREIGN KEY (KdSiswa) REFERENCE Siswa(KdSiswa) ON UPDATE
CASCADE ON DELETE SET NULL);
_________________________________________________________________
Domain dom_KdKelas: integer
Domain dom_KdMataPelajaran: integer
KelasMataPelajaran(
KdKelas: dom_KdKelas NOT NULL,
KdMataPelajaran: dom_KdMataPelajaran NOT NULL,
PRIMARY KEY (KdKelas),
PRIMARY KEY (KdMataPelajaran),
208
FOREIGN KEY (KdKelas) REFERENCE Kelas(KdKelas) ON UPDATE
CASCADE ON DELETE SET NULL,
FOREIGN KEY (KdMataPelajaran) REFERENCE
MataPelajaran(KdMataPelajaran) ON UPDATE CASCADE ON DELETE SET
NULL);
_________________________________________________________________
Domain dom_KdTopik: integer
Domain dom_JudulTopik : variable length character string, length 200
Domain dom_DeskripsiTopik: variable length character string, length 500
Domain dom_TopicStarter: integer
Domain dom_TanggalTopik: date
Domain dom_KdForum: integer
Topik(
KdTopik: dom_KdKelas NOT NULL,
JudulTopik: dom_JudulTopik NOT NULL,
DeskripsiTopik : dom_DeskripsiTopik NOT NULL,
TopicStarter: dom_TopicStarter NOT NULL,
TanggalTopik : dom_TanggalTopik NOT NULL,
PRIMARY KEY (KdTopik),
_________________________________________________________________
Domain dom_KdTopik: integer
Domain dom_KdPost: integer
209
Domain dom_Poster: integer
Domain dom_IsiPost: text
Domain dom_TanggalPost: date
Post(
KdPost: dom_KdPost NOT NULL,
KdTopik: dom_KdKelas NOT NULL,
Poster : dom_Poster NOT NULL,
IsiPost: dom_IsiPost NOT NULL,
TanggalPost : dom_TanggalPost NOT NULL,
PRIMARY KEY (KdPost),
FOREIGN KEY (KdTopik) REFERENCE Forum(KdTopik) ON UPDATE
CASCADE ON DELETE CASCADE
_________________________________________________________________
Domain dom_KdForum: integer
Domain dom_KdKategoriForum: integer
Domain dom_DeskripsiForum: variable length character string, length 500
Domain dom_NamaForum: variable length character string, length 100
Domain dom_Moderator: integer
Forum(
KdForum: dom_KdForum NOT NULL,
KdKategoriForum: dom_KdKategoriForum NOT NULL,
210
DeskripsiForum : dom_DeskripsiForum NOT NULL,
NamaForum: dom_NamaForum NOT NULL,
Moderator : dom_Moderator NOT NULL,
PRIMARY KEY (KdForum),
FOREIGN KEY (KdKategoriForum) REFERENCE
KategoriForum(KdKategoriForum) ON UPDATE CASCADE ON DELETE
CASCADE
_________________________________________________________________
Domain dom_KdKategoriForum: integer
Domain dom_NamaKategoriForum: variable length character string, length 100
KategoriForum(
KdKategoriForum: dom_KdKategoriForum NOT NULL,
NamaKategoriForum: dom_NamaKategoriForum NOT NULL,
PRIMARY KEY (KdKategoriForum)
_________________________________________________________________
4.3.2 Merancang Enterprise Constraints
Aturan untuk mencegah Tingkatan pada tabel Siswa yang di-input tidak
lebih besar dari 12 ataupun lebih kecil dari 10.
CONSTRAINT KelasSMASiswa
CHECK ( NOT EXIST ( SELECT KdSiswa
FROM Siswa
211
WHERE Tingkatan BETWEEN 10 AND 12))
Aturan untuk mengatur batasan Standar Ketuntasan Belajar Minimal
(SKBM) pada Tagihan.
CONSTRAINT BatasanSKBM
CHECK ( NOT EXIST ( SELECT KdTagihan
FROM Tagihan
WHERE SKBMIndikator1 BETWEEN 0 AND 100 AND
SKBMIndikator2 BETWEEN 0 AND 100 AND
SKBMIndikator3 BETWEEN 0 AND 100 AND
SKBMIndikator4 BETWEEN 0 AND 100 ))
Aturan untuk mengatur supaya nilai Kognitif hanya berkisar dari 0
sampai 100 pada DetailRaporAkhir.
CONSTRAINT BatasanKognitif
CHECK ( NOT EXIST (SELECT KdRaporAkhir
FROM DetailRaporAkhir
WHERE Kognitif BETWEEN 0 AND 100))
Aturan untuk mengatur supaya nilai Praktik hanya berkisar dari 0 sampai
100 pada DetailRaporAkhir.
CONSTRAINT BatasanPraktik
CHECK ( NOT EXIST (SELECT KdRaporAkhir
212
FROM DetailRaporAkhir
WHERE Praktik BETWEEN 0 AND 100))
Aturan untuk mengatur supaya nilai KKM hanya berkisar dari 0 sampai
100 pada DetailRaporAkhir.
CONSTRAINT BatasanKKM
CHECK ( NOT EXIST (SELECT KdRaporAkhir
FROM DetailRaporAkhir
WHERE KKM BETWEEN 0 AND 100))
Mengatur bahwa nilai pada field JenisKelaminSiswa di entitas Siswa
hanya dapat diisi huruf ‘P’ ataupun ‘L’ saja.
CONSTRAINT BatasanJenisKelaminSiswaTagihan
CHECK ( NOT EXIST ( SELECT KdSiswa
FROM Siswa
WHERE JenisKelaminSiswa = ‘P’ OR
JenisKelaminSiswa = ‘L’))
Mengatur supaya NoSoal pada DetailNilaiSiswa harus berupa angka di
atas 0.
CONSTRAINT NoSoalPositif
CHECK ( NOT EXIST ( SELECT NoSoal
FROM DetailNilaiSiswa
213
WHERE NoSoal > 0))
Mengatur supaya NoIndikator pada DetailNilaiSiswa harus berupa angka
di atas 0.
CONSTRAINT NoIndikatorPositif
CHECK ( NOT EXIST ( SELECT NoSoal
FROM DetailNilaiSiswa
WHERE NoIndikator > 0))
Mengatur supaya Nilai yang diisi pada DetailNilaiSiswa harus berupa
angka dari 0 sampai 9.
CONSTRAINT RangeNilai
CHECK ( NOT EXIST ( SELECT NoSoal
FROM DetailNilaiSiswa
WHERE Nilai BETWEEN 0 AND 9))
Mengatur supaya Urutan pada tabel DetailNilaiRaporBayangan harus
angka positif di atas 0.
CONSTRAINT UrutanPositif
CHECK (NOT EXIST ( SELECT KdTagihan
FROM DetailNilaiRaporBayangan
WHERE Urutan > 0))
214
Mengatur supaya Jurusan dalam tabel Silabus hanya bisa diisi ‘IPA’
ataupun ‘IPS’ saja, sesuai jurusan yang ada di sekolah.
CONSTRAINT BatasanJurusanSilabus
CHECK ( NOT EXIST ( SELECT KdSilabus
FROM Silabus
WHERE Jurusan = ‘IPA’ OR Jurusan = ‘IPS’))
Mengatur supaya Jurusan dalam tabel Kelas hanya bisa diisi ‘IPA’
ataupun ‘IPS’ saja, sesuai jurusan yang ada di sekolah.
CONSTRAINT BatasanJurusanKelas
CHECK ( NOT EXIST ( SELECT KdKelas
FROM Kelas
WHERE Jurusan = ‘IPA’ OR Jurusan = ‘IPS’))
Mengatur supaya Semester pada entitas Silabus hanya bisa diisi angka 1
atau 2.
CONSTRAINT BatasanSemesterSilabus
CHECK ( NOT EXIST ( SELECT KdSilabus
FROM Silabus
WHERE Semester = 1 OR Semester = 2))
Mengatur supaya Semester pada entitas RPP hanya bisa diisi angka 1 atau
2.
215
CONSTRAINT BatasanSemesterRPP
CHECK ( NOT EXIST ( SELECT KdRPP
FROM RPP
WHERE Semester = 1 OR Semester = 2))
Mengatur supaya Jawaban pada DetailSoal tidak di luar dari angka 1
sampai 5.
CONSTRAINT BatasanJawaban
CHECK ( NOT EXIST ( SELECT KdSoal
FROM DetailSoal
WHERE Jawaban BETWEEN 1 AND 5))
Mengatur batasan nilai dari SKMEkstrakurikuler yang berada di tabel
NilaiEkstrakurikulerRaporAkhir hanya boleh dalam jangka 0 sampai 100.
CONSTRAINT BatasanSKMEkstrakurikuler
CHECK ( NOT EXIST ( SELECT KdEkstrakurikuler
FROM NilaiEkstrakurikulerRaporAkhir
WHERE Jawaban BETWEEN 0 AND 100))
Mengatur supaya nilai Sakit, Izin ataupun TanpaKeterangan pada
RaporAkhir haruslah positif.
CONSTRAINT BatasanAbsenRaporAkhir
CHECK (NOT EXIST (SELECT KdRaporAkhir
216
FROM RaporAkhir
WHERE Sakit >= 0 AND Izin >=0 AND
TanpaKeterangan >=0 ))
Mengatur supaya nilai Sakit, Izin ataupun TanpaKeterangan pada
RaporBayangan haruslah positif.
CONSTRAINT BatasanAbsenBayanganAkhir
CHECK (NOT EXIST (SELECT KdRaporBayangan
FROM RaporBayangan
WHERE Sakit >= 0 AND Izin >=0 AND
TanpaKeterangan >=0 ))
Mengatur supaya hari pada JamSekolah berkisar dari 1 sampai 7.
CONSTRAINT BatasanHari
CHECK (NOT EXIST (SELECT KdJamSekolah
FROM JamSekolah
WHERE Hari BETWEEN 1 AND 7 ))
Fungsi CONSTRAINT di dalam DBMS MySQL walaupun dapat di-
parsed tetapi tidak akan menghasilkan efek apa-apa. Artinya MySQL masih
belum memiliki fungsi untuk menjalankan constraint hanya bisa mengenali
sintaksnya saja.
217
4.3.3 Menganalisis Transaksi
Daftar Transaksi
Tabel 4.5 Daftar Transaksi Bagian 1
Transaksi 1 2 3 4 5 I R U D I R U D I R U D I R U D I R U D
Siswa X X X X X RaporBayangan X RaporAkhir X Tagihan X DetailRapor Bayangan
X
DetailNilaiRapor Bayangan
X
JenisNilai X X NilaiEkstrakurikuler RaporBayangan
X
Ekstrakurikuler X X DetailRaporAkhir X NilaiEkstrakurikuler RaporAkhir
X
MataPelajaran X X X X X DetailTagihanSiswa X DetailNilaiSiswa X BankSoal X DetailBankSoal X Materi X Kelas X X KelasMataPelajaran X X
1) Siswa mampu melihat nilai-nilainya di RaporBayangan untuk setiap
tingkatannya dan semester.
2) Siswa mampu melihat nilai-nilainya di RaporAkhir untuk setiap tingkatan
dan semester
3) Siswa mampu melihat nilai-nilai tagihan sesuai mata pelajarannya.
218
4) Siswa dapat mengakses BankSoal untuk latihan sesuai MataPelajaran
yang dipilih.
5) Siswa mampu mengakses materi sesuai MataPelajaran yang sedang
didapatkannya
Tabel 4.6 Daftar Transaksi Bagian 2
Transaksi 6 7 8 9 10 I R U D I R U D I R U D I R U D I R U D
Siswa X X X X X MataPelajaran X X X X JamSekolah X X JadwalHarian X JadwalUjian X RaporBayangan X DetailRapor Bayangan
X
DetailNilaiRapor Bayangan
X
JenisNilai X NilaiEkstrakurikuler RaporBayangan
X
Ekstrakurikuler X Karyawan X JawabanMateri X
6) Siswa mampu membuka JadwalSekolah yang sesuai dengan kelasnya.
7) Siswa mampu membuka JadwalUjian yang sesuai kelasnya.
8) Siswa mampu meng-upload tugasnya.
9) Guru dapat melihat daftar siswa.
10) Guru mampu melihat RaporBayangan pada kelas yang diwalikannya.
219
Tabel 4.7 Daftar Transaksi Bagian 3
Transaksi 11 12 13 14 15 I R U D I R U D I R U D I R U D I R U D
Siswa X X X X X MataPelajaran X X X X X RaporBayangan X X X DetailRapor Bayangan
X X X
DetailNilaiRapor Bayangan
X X X
JenisNilai X X X NilaiEkstrakurikuler RaporBayangan
X X X
Ekstrakurikuler X X X X X Karyawan X X X X X RaporAkhir X X DetailRaporAkhir X X NilaiEkstrakurikuler RaporAkhir
X X
11) Guru mampu membuat RaporBayangan pada kelas yang diwalikannya.
12) Guru mampu mengubah RaporBayangan pada kelas yang diwalikannya.
13) Guru mampu menghapus RaporBayangan pada kelas yang diwalikannya.
14) Guru mampu melihat RaporAkhir pada kelas yang diwalikannya.
15) Guru mampu membuat RaporAkhir pada kelas yang diwalikannya.
Tabel 4.8 Daftar Transaksi Bagian 4
Transaksi 16 17 18 19 20 I R U D I R U D I R U D I R U D I R U D
Siswa X X MataPelajaran X X X X X Ekstrakurikuler X X Karyawan X X X X X RaporAkhir X X DetailRaporAkhir X X
220
Transaksi 16 17 18 19 20 I R U D I R U D I R U D I R U D I R U D
NilaiEkstrakurikuler RaporAkhir
X X
RPP X X X DetailRPP X X X KaryawanMata Pelajaran
X X X
16) Guru mampu mengubah RaporAkhir pada kelas yang diwalikannya.
17) Guru mampu menghapus RaporAkhir pada kelas yang diwalikannya.
18) Guru mampu melihat RPP sesuai MataPelajaran yang diajarkannya.
19) Guru mampu membuat RPP sesuai MataPelajaran yang diajarkannya.
20) Guru mampu mengubah RPP sesuai MataPelajaran yang diajarkannya.
Tabel 4.9 Daftar Transaksi Bagian 5
Transaksi 21 22 23 24 25 I R U D I R U D I R U D I R U D I R U D
MataPelajaran X X X X X Karyawan X X X X X RPP X DetailRPP X KaryawanMata Pelajaran
X X X X X
Materi X X X X
21) Guru mampu menghapus RPP sesuai MataPelajaran yang diajarkannya.
22) Guru mampu melihat Materi sesuai MataPelajaran dan kelas yang
diajarkannya.
23) Guru mampu membuat Materi sesuai MataPelajaran dan kelas yang
diajarkannya.
221
24) Guru mampu mengubah Materi sesuai MataPelajaran dan kelas yang
diajarkannya.
25) Guru mampu menghapus Materi sesuai MataPelajaran dan kelas yang
diajarkannya.
Tabel 4.10 Daftar Transaksi Bagian 6
Transaksi 26 27 28 29 30 I R U D I R U D I R U D I R U D I R U D
MataPelajaran X X X X X Karyawan X X X X X KaryawanMata Pelajaran
X X X X X
Siswa X JawabanMateri X BankSoal X X X X DetailBankSoal X X X X
26) Guru mampu melihat jawaban Siswa sesuai kelas dan MataPelajaran
yang diajarkannya.
27) Guru mampu melihat BankSoal sesuai MataPelajaran dan kelas yang
diajarkannya.
28) Guru mampu membuat BankSoal sesuai MataPelajaran dan kelas yang
diajarkannya.
29) Guru mampu mengubah BankSoal sesuai MataPelajaran dan kelas yang
diajarkannya.
30) Guru mampu menghapus BankSoal sesuai MataPelajaran dan kelas yang
diajarkannya.
222
Tabel 4.11 Daftar Transaksi Bagian 7
Transaksi 31 32 33 34 35 I R U D I R U D I R U D I R U D I R U D
Karyawan X X X X X KaryawanMata Pelajaran
X X
MataPelajaran X X X X X JadwalHarian X JamSekolah X X JadwalUjian X Silabus X X X KaryawanSilabus X X X StandarKompetensi Silabus
X X X
KompetensiDasar Silabus
X X X
31) Guru mampu melihat JadwalHarian yang berisi jadwal mengajarnya.
32) Guru mampu melihat JadwalUjian yang berisi jadwal mengawasnya.
33) Guru dapat melihat Silabus.
34) Guru dapat membuat Silabus.
35) Guru dapat mengubah Silabus.
Tabel 4.12 Daftar Transaksi Bagian 8
Transaksi 36 37 38 39 40 I R U D I U D D I R U D I R U D I R U D
Karyawan X X KaryawanMata Pelajaran
X
MataPelajaran X X X Silabus X KaryawanSilabus X StandarKompetensi Silabus
X
223
Transaksi 36 37 38 39 40 I R U D I U D D I R U D I R U D I R U D
KompetensiDasar Silabus
X
Siswa X Kelas X KelasMataPelajaran
X
Forum X X KategoriForum X X Topik X X X X Post X X X X
36) Guru dapat menghapus Silabus.
37) Guru dapat melihat mengajar mata pelajaran apa saja
38) Siswa dapat melihat mendapat mata pelajaran apa saja
39) Siswa dan guru dapat membuka dan menambah posting atau pun
mengubah isi posting di forum
40) Guru atau siswa yang menjadi moderator dapat menghapus posting di
forum.
4.3.4 Memilih Organisasi File
Dengan DBMS MySQL, tersedia beberapa sistem penyimpanan. Dan
yang paling terkenal adalah MyISAM dan InnoDB. MySQL secara default akan
menggunakan sistem penyimpanan MyISAM.
MyISAM
MyISAM merupakan perkembangan dari ISAM (Indexed Sequantial
Access Method). MyISAM mendukung file berukuran besar (file dengan panjang
224
63 bit). Maksimum indeks per tabel berjenis MyISAM adalah 64. MyISAM
mendukung insert secara bersamaan. Selain itu MyISAM mampu mengindeks
kolom berjenis BLOB (Binary Large Object) dan Text sehingga sangat
membantu fungsi pencarian.
MyISAM dalam kebanyakan kasus lebih cepat daripada InnoDB. Operasi
select, update, dan insert semua sangat cepat dalam keadaan normal.
InnoDB
InnoDB menyimpan data dengan sistem organisasi file clustered index.
Tujuannya untuk mengurangi jumlah proses input output pada proses query
umum yang berdasarkan primary key.
InnoDB mendukung FOREIGN KEY untuk keperluan merancang
database berbasis relasi. Selain itu InnoDB juga memiliki kemampuan commit,
rollback, dan crash-recovery. Memiliki kemampuan row-level locking
(kemampuan melakukan beberapa transaksi di row yang berbeda di tabel yang
sama secara bersamaan, karena yang terkunci hanya baris pada tabel, bukan
seluruh tabel dikunci ketika terjadi transaksi). Oleh karenanya InnoDB sudah
mendukung ACID (Atomicity, Consistency, Isolation, Durability) yang
menjamin proses transaksi reliable. Atomicity menjamin jika suatu entitas
mengalami perubahan maka entitas lain yang berpengaruh akan ikut mengalami
perubahan. Apabila salah satu entitas gagal mengalami perubahan, maka
perubahan entitas yang lain akan dibatalkan. Misalnya akun A akan transfer uang
ke akun B. Uang akun B tidak akan dikredit sampai uang akun A didebit.
225
Consistency menjamin database akan tetap dalam keadaan konsisten baik
sebelum maupun sesudah transaksi. Arti konsisten di sini berarti tidak melanggar
aturan Constraint ataupun aturan-aturan lainnya.
Isolation menjamin suatu operasi tidak dapat mengakses data yang
sedang dalam tahap transaksi. Tujuannya untuk performa transaksi juga
sekaligus menjaga konsistensi data.
Durability menjamin apabila transaksi berhasil maka hasil transaksi akan
permanen dan tidak dapat dibalikkan lagi. Umumnya dengan cara transaction log
yang memungkinkan database kembali seperti semula sebelum terjadi kegagalan
database (database failure)
Karena database yang akan dirancang merupakan database relasional,
maka sistem yang dirancang akan menggunakan sistem penyimpanan InnoDB.
Karena jenis ini sudah mendukung FOREIGN KEY yang sangat penting untuk
membuat sebuah database relasional.
4.3.5 Memilih Indeks
Jenis Index yang digunakan secara keseluruhan adalah Clustered Index.
Tabel 4.13 Tabel Indeks
Tabel Entity Nama Index Key Index Keterangan Index Karyawan Idx_KdKaryawan KdKaryawan Berdasarkan
KdKaryawan KaryawanMataPelajaran Idx_KdKaryawan KdKaryawan Berdasarkan
KdKaryawan Idx_KdMataPelajaran KdMataPelajaran Berdasarkan
KdMataPelajaran Idx_KelasMengajar KelasMengajar Berdasarkan
KelasMengajar
226
Tabel Entity Nama Index Key Index Keterangan Index Tagihan Idx_KdTagihan KdTagihan Berdasarkan
KdTagihan JenisNilai Idx_KdJenisNilai KdJenisNilai Berdasarkan
KdJenisNilai DetailTagihanSiswa Idx_KdTagihan KdTagihan Berdasarkan
KdTagihan Idx_KdSiswa KdSiswa Berdasarkan
KdSiswa DetailNilaiSiswa Idx_KdTagihan KdTagihan Berdasarkan
KdTagihan Idx_KdSiswa KdSiswa Berdasarkan
KdSiswa Idx_NoSoal NoSoal Berdasarkan
NoSoal RaporBayangan Idx_KdRaporBayangan KdRaporBayangan Berdasarkan
KdRaporBayangan DetailRaporBayangan Idx_KdRaporBayangan KdRaporBayangan Berdasarkan
KdRaporBayangan Idx_KdMataPelajaran KdMataPelajaran Berdasarkan
KdMataPelajaran DetailNilaiRapor Bayangan
Idx_KdRaporBayangan KdRaporBayangan Berdasarkan KdRaporBayangan
Idx_KdMataPelajaran KdMataPelajaran Berdasarkan KdMataPelajaran
Idx_Urutan Urutan Berdasarkan Urutan
NilaiEkstrakurikuler RaporBayangan
Idx_KdRaporBayangan KdRaporBayangan Berdasarkan KdRaporBayangan
Idx_KdEkstrakurikuler KdEkstrakurikuler Berdasarkan KdEkstrakurikuler
Ekstrakurikuler Idx_KdEkstrakurikuler KdEkstrakurikuler Berdasarkan KdEkstrakurikuler
RaporAkhir Idx_KdRaporAkhir KdRaporAkhir Berdasarkan KdRaporAkhir
Kelas Idx_KdKelas KdKelas Berdasarkan KdKelas
DetailRaporAkhir Idx_KdRaporAkhir KdRaporAkhir Berdasarkan KdRaporAkhir
Idx_KdMataPelajaran KdMataPelajaran Berdasarkan KdMataPelajaran
NilaiEkstrakurikuler RaporAkhir
Idx_KdRaporAkhir KdRaporAkhir Berdasarkan KdRaporAkhir
Idx_KdEkstrakurikuler KdEkstrakurikuler Berdasarkan
227
Tabel Entity Nama Index Key Index Keterangan Index KdEkstrakurikuler
Siswa Idx_KdSiswa KdSiswa Berdasarkan KdSiswa
MataPelajaran Idx_KdMataPelajaran KdMataPelajaran Berdasarkan KdMataPelajaran
Silabus Idx_KdSilabus KdSilabus Berdasarkan KdSilabus
KaryawanSilabus Idx_KdSilabus KdSilabus Berdasarkan KdSilabus
Idx_KdKaryawan KdKaryawan Berdasarkan KdKaryawan
StandarKompetensi Silabus
Idx_KdSilabus KdSilabus Berdasarkan KdSilabus
Idx_NoSK NoSK Berdasarkan NoSK
KompetensiDasar Silabus
Idx_KdSilabus KdSilabus Berdasarkan KdSilabus
Idx_NoSK NoSK Berdasarkan NoSK
Idx_NoKD NoKD Berdasarkan NoKD
RPP Idx_KdRPP KdRPP Berdasarkan KdRPP
DetailRPP Idx_KdRPP KdRPP Berdasarkan KdRPP
Idx_Pertemuan Pertemuan Berdasarkan Pertemuan
BankSoal Idx_KdBankSoal KdBankSoal Berdasarkan KdBankSoal
DetailBankSoal Idx_KdBankSoal KdBankSoal Berdasarkan KdBankSoal
Idx_NoBankSoal NoBankSoal Berdasarkan NoBankSoal
JamSekolah Idx_KdJamSekolah KdJamSekolah Berdasarkan KdJamSekolah
JadwalHarian Idx_KdJadwalHarian KdJadwalHarian Berdasarkan KdJadwalHarian
JadwalUjian Idx_KdJadwalUjian KdJadwalUjian Berdasarkan KdJadwalUjian
Materi Idx_KdMateri KdMateri Berdasarkan KdMateri
JawabanMateri Idx_KdJawabanMateri KdJawabanMateri Berdasarkan KdJawabanMateri
228
Tabel Entity Nama Index Key Index Keterangan Index KelasMataPelajaran Idx_KdKelas KdKelas Berdasarkan
KdKelas Idx_KdMataPelajaran KdMataPelajaran Berdasarkan
KdMataPelajaran Forum Idx_KdForum KdForum Berdasarkan
KdForum Topik Idx_KdTopik KdTopik Berdasarkan
KdTopik Post Idx_KdPost KdPost Berdasarkan
KdPost KategoriForum Idx_KdKategoriForum KdKategoriForum Berdasarkan
KdKategoriForum
4.3.6 Estimasi Kebutuhan Media Penyimpanan
Berikut ini merupakan langkah untuk mengestimasi besarnya
penyimpanan (disk space) yang digunakan dalam basis data. Berikut ini adalah
perkiraan kapasitas pada setiap tabel.
Tabel 4.14 Tabel Estimasi Disk Space Karyawan
Field Type Ukuran (byte) KdKaryawan NamaKaryawan PosisiKaryawan KelasWali TanggalLahirKaryawan
Integer Varchar Varchar Varchar Date
4 100 20 10 3
Kapasitas dari tabel Karyawan adalah 137 byte. Diperkirakan dalam 1 tahun terjadi 2 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 2 * 137 = 274 byte.
Tabel 4.15 Tabel Estimasi Disk Space KaryawanMataPelajaran
Field Type Ukuran (byte) KdKaryawan KdMataPelajaran KelasMengajar
Integer Integer Varchar
4 4 10
Kapasitas dari tabel KaryawanMataPelajaran adalah 18 byte. Diperkirakan dalam 1 tahun terjadi 4 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 4 * 18 = 72 byte.
229
Tabel 4.16 Tabel Estimasi Disk Space Tagihan
Field Type Ukuran (byte) KdTagihan KdMataPelajaran KdKaryawan Kelas KompetensiDasar UraianIndikator1 UraianIndikator2 UraianIndikator3 UraianIndikator4 SKBMIndikator1 SKBMIndikator2 SKBMIndikator3 SKBMIndikator4 SoalIndikator1 SoalIndikator2 SoalIndikator3 SoalIndikator4 Tanggal
Integer Integer Integer Varchar Text Text Text Text Text Double Double Double Double Varchar Varchar Varchar Varchar Date
4 4 4 10 65.535 65.535 65.535 65.535 65.535 8 8 8 8 10 10 10 10 3
Kapasitas dari tabel KaryawanMataPelajaran adalah 327.772 byte. Diperkirakan dalam 1 tahun terjadi 12000 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 12000 * 327.772 = 3.933.264.000 byte.
Tabel 4.17 Tabel Estimasi Disk Space JenisNilai
Field Type Ukuran (byte) KdJenisNilai NamaJenisNilai
Integer Varchar
4 20
Kapasitas dari tabel JenisNilai adalah 24 byte. Diperkirakan dalam 1 tahun terjadi 0 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 0 * 24 = 0 byte.
Tabel 4.18 Tabel Estimasi Disk Space DetailTagihanSiswa
Field Type Ukuran (byte) KdTagihan KdSiswa
Integer Integer
4 4
Kapasitas dari tabel DetailTagihanSiswa adalah 8 byte. Diperkirakan dalam 1 tahun terjadi 151200 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 151200 * 8 = 1.209.600 byte.
230
Tabel 4.19 Tabel Estimasi Disk Space DetailNilaiSiswa
Field Type Ukuran (byte) KdTagihan KdSiswa NoSoal NoIndikator Nilai
Integer Integer Integer Integer Integer
4 4 4 4 4
Kapasitas dari tabel DetailNilaiSiswa adalah 20 byte. Diperkirakan dalam 1 tahun terjadi 756000 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 756000 * 20 = 15.120.000 byte.
Tabel 4.20 Tabel Estimasi Disk Space RaporBayangan
Field Type Ukuran (byte) KdRaporBayangan KdKaryawan KdSiswa Kelas Semester TahunAjaran Sakit Izin TanpaKeterangan
Integer Integer Integer Varchar Tinyint Varchar Tinyint Tinyint Tinyint
4 4 4 10 1 10 1 1 1
Kapasitas dari tabel RaporBayangan adalah 36 byte. Diperkirakan dalam 1 tahun terjadi 900 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 900 * 36 = 32.400 byte.
Tabel 4.21 Tabel Estimasi Disk Space DetailRaporBayangan
Field Type Ukuran (byte) KdRaporBayangan KdMataPelajaran
Integer Integer
4 4
Kapasitas dari tabel DetailRaporBayangan adalah 8 byte. Diperkirakan dalam 1 tahun terjadi 37800 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 37800 * 8 = 302.400 byte.
231
Tabel 4.22 Tabel Estimasi Disk Space DetailNilaiRaporBayangan
Field Type Ukuran (byte) KdRaporBayangan KdMataPelajaran Urutan KdJenisNilai RataRata
Integer Integer Integer Integer Integer
4 4 4 4 4
Kapasitas dari tabel DetailNilaiRaporBayangan adalah 20 byte. Diperkirakan dalam 1 tahun terjadi 378000 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 378000 * 20 = 7.560.000 byte.
Tabel 4.23 Tabel Estimasi Disk Space NilaiEkstrakurikulerRaporBayangan
Field Type Ukuran (byte) KdRaporBayangan KdEkstrakurikuler NilaiEkstrakurikuler KeteranganEkstrakurikuler
Integer Integer Integer Text
4 4 4 65.535
Kapasitas dari tabel NilaiEkstrakurikulerRaporBayangan adalah 65.547 byte. Diperkirakan dalam 1 tahun terjadi 900 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 900 * 65.547 = 58.992.300 byte.
Tabel 4.24 Tabel Estimasi Disk Space Ekstrakurikuler
Field Type Ukuran (byte) KdEkstrakurikuler NamaEkstrakurikuler
Integer Varchar
4 20
Kapasitas dari tabel Ekstrakurikuler adalah 24 byte. Diperkirakan dalam 1 tahun terjadi 0 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 0 * 24 = 0 byte.
Tabel 4.25 Tabel Estimasi Disk Space RaporAkhir
Field Type Ukuran (byte) KdRaporAkhir KdReg KdKaryawan KdSiswa KdKelas Semester TahunAjaran
Integer Varchar Integer Integer Integer Tinyint Varchar
4 20 4 4 4 1 10
232
Komentar Sakit Izin TanpaKeterangan
Text Tinyint Tinyint Tinyint
65.535 1 1 1
Kapasitas dari tabel RaporAkhir adalah 65.585 byte. Diperkirakan dalam 1 tahun terjadi 900 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 900 * 65.585 = 59.026.500 byte.
Tabel 4.26 Tabel Estimasi Disk Space Kelas
Field Type Ukuran (byte) KdKelas Jurusan Tingkatan
Integer Varchar Tinyint
4 3 1
Kapasitas dari tabel DetailRaporAkhir adalah 8 byte. Diperkirakan dalam 1 tahun terjadi 5 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 5 * 8 = 40 byte.
Tabel 4.27 Tabel Estimasi Disk Space DetailRaporAkhir
Field Type Ukuran (byte) KdRaporAkhir KdMataPelajaran Kognitif Praktik Sikap KKM
Integer Integer Integer Integer Varchar Double
4 4 4 4 20 8
Kapasitas dari tabel DetailRaporAkhir adalah 44 byte. Diperkirakan dalam 1 tahun terjadi 37800 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 37800 * 44 = 1.663.200 byte.
Tabel 4.28 Tabel Estimasi Disk Space NilaiEkstrakurikulerRaporAkhir
Field Type Ukuran (byte) KdRaporAkhir KdEkstrakurikuler SKMEkstrakurikuler NilaiEkstrakurikuler
Integer Integer Double Integer
4 4 8 4
Kapasitas dari tabel NilaiEkstrakurikulerRaporAkhir adalah 20 byte. Diperkirakan dalam 1 tahun terjadi 900 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 900 * 20 = 18.000 byte.
233
Tabel 4.29 Tabel Estimasi Disk Space S iswa
Field Type Ukuran (byte) KdSiswa KdKelas NamaSiswa KelasSiswa TanggalLahirSiswa JenisKelaminSiswa
Integer Integer Varchar Varchar Date Char
4 4 100 10 3 1
Kapasitas dari tabel Siswa adalah 122 byte. Diperkirakan dalam 1 tahun terjadi 150 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 150 * 122 = 18.300 byte.
Tabel 4.30 Tabel Estimasi Disk Space MataPelajaran
Field Type Ukuran (byte) KdMataPelajaran NamaMataPelajaran
Integer Varchar
4 100
Kapasitas dari tabel MataPelajaran adalah 104 byte. Diperkirakan dalam 1 tahun terjadi 0 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 0 * 104 = 0 byte.
Tabel 4.31 Tabel Estimasi Disk Space S ilabus
Field Type Ukuran (byte) KdSilabus KdMataPelajaran KdKelas Semester
Integer Integer Integer Tinyint
4 4 4 1
Kapasitas dari tabel Silabus adalah 13 byte. Diperkirakan dalam 1 tahun terjadi 42 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 42 * 13 = 546 byte.
Tabel 4.32 Tabel Estimasi Disk Space KaryawanSilabus
Field Type Ukuran (byte) KdSilabus KdKaryawan
Integer Integer
4 4
Kapasitas dari tabel KaryawanSilabus adalah 8 byte. Diperkirakan dalam 1 tahun terjadi 126 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 126 * 8 = 1.008 byte.
234
Tabel 4.33 Tabel Estimasi Disk Space S tandarKompetensiSilabus
Field Type Ukuran (byte) KdSilabus NoSK StandarKompetensi
Integer Integer Text
4 4 65.535
Kapasitas dari tabel StandarKompetensiSilabus adalah 65.543 byte. Diperkirakan dalam 1 tahun terjadi 252 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 252 * 65.543 = 16.516.836 byte.
Tabel 4.34 Tabel Estimasi Disk Space KompetensiDasarSilabus
Field Type Ukuran (byte) KdSilabus NoSK NoKD KompetensiDasar MateriPokok MateriPembelajaran KegiatanPembelajaran Indikator Penilaian Waktu SumberBelajar
Integer Integer Integer Text Text Text Text Text Text Text Text
4 4 4 65.535 65.535 65.535 65.535 65.535 65.535 65.535 65.535
Kapasitas dari tabel KompetensiDasarSilabus adalah 524.292 byte. Diperkirakan dalam 1 tahun terjadi 1512 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 1512 * 524.292 = 792.729.504 byte.
Tabel 4.35 Tabel Estimasi Disk Space RPP
Field Type Ukuran (byte) KdRPP KdMataPelajaran Kelas Semester StandarKompetensi KompetensiDasar Indikator TujuanPembelajaran MateriPokok MateriPembelajaran MetodePembelajaran SumberBelajar
Integer Integer Varchar Tinyint Text Text Text Text Text Text Text Text
4 4 10 1 65.535 65.535 65.535 65.535 65.535 65.535 65.535 65.535
235
Field Type Ukuran (byte) Penilaian Waktu
Text Text
65.535 65.535
Kapasitas dari tabel RPP adalah 655.369 byte. Diperkirakan dalam 1 tahun terjadi 1512 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 1512 * 655.369 = 990.917.928 byte.
Tabel 4.36 Tabel Estimasi Disk Space DetailRPP
Field Type Ukuran (byte) KdRPP Pertemuan KegiatanAwal KegiatanInti KegiatanAkhir
Integer Integer Text Text Text
4 4 65.535 65.535 65.535
Kapasitas dari tabel DetailRPP adalah 196.613 byte. Diperkirakan dalam 1 tahun terjadi 7560 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 7560 * 196.613 = 1.486.394.280 byte.
Tabel 4.37 Tabel Estimasi Disk Space BankSoal
Field Type Ukuran (byte) KdBankSoal JudulBankSoal DeskripsiBankSoal KdKaryawan KdMataPelajaran KdKelas
Integer Varchar Text Integer Integer Integer
4 100 65.535 4 4 4
Kapasitas dari tabel BankSoal adalah 65.651 byte. Diperkirakan dalam 1 tahun terjadi 2016 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 2016 * 65.651 = 132.352.416 byte.
Tabel 4.38 Tabel Estimasi Disk Space DetailBankSoal
Field Type Ukuran (byte) KdBankSoal NoBankSoal Pertanyaan Pilihan1 Pilihan2 Pilihan3 Pilihan4
Integer Integer Text Text Text Text Text
4 4 65.535 65.535 65.535 65.535 65.535
236
Pilihan5 Jawaban PenjelasanJawaban
Text Tinyint Text
65.535 1 65.535
Kapasitas dari tabel DetailSoal adalah 458.754 byte. Diperkirakan dalam 1 tahun terjadi 40320 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 40320 * 458.754 = 18.496.961.280 byte.
Tabel 4.39 Tabel Estimasi Disk Space JamSekolah
Field Type Ukuran (byte) KdJamSekolah Hari Jam
Integer Tinyint Varchar
4 1 10
Kapasitas dari tabel JamSekolah adalah 15 byte. Diperkirakan dalam 1 tahun terjadi 40 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 40 * 15 = 600 byte.
Tabel 4.40 Tabel Estimasi Disk Space JadwalHarian
Field Type Ukuran (byte) KdJadwalHarian Kelas Semester KdJamSekolah KdMataPelajaran KdKaryawan
Integer Varchar Tinyint Integer Integer Integer
4 10 1 4 4 4
Kapasitas dari tabel JadwalHarian adalah 27 byte. Diperkirakan dalam 1 tahun terjadi 15 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 15 * 27 = 405 byte.
Tabel 4.41 Tabel Estimasi Disk Space JadwalUjian
Field Type Ukuran (byte) KdJadwalUjian Kelas Semester KdJamSekolah KdMataPelajaran KdKaryawan
Integer Varchar Tinyint Integer Integer Integer
4 10 1 4 4 4
Kapasitas dari tabel JadwalUjian adalah 27 byte. Diperkirakan dalam 1 tahun terjadi 5 transaksi.
237
Dalam 1 tahun pertumbuhan dari tabel ini adalah 5 * 27 = 135 byte.
Tabel 4.42 Tabel Estimasi Disk Space Materi
Field Type Ukuran (byte) KdMateri KdKaryawan KdMataPelajaran JudulMateri Kelas Deskripsi Soal NamaFile Tanggal
Integer Integer Integer Varchar Varchar Text Boolean Varchar Date
4 4 4 100 10 65.535 1 100 3
Kapasitas dari tabel Materi adalah 65.761 byte. Diperkirakan dalam 1 tahun terjadi 2100 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 2100 * 65.761 = 138.098.100 byte.
Tabel 4.43 Tabel Estimasi Disk Space JawabanMateri
Field Type Ukuran (byte) KdJawabanMateri KdMateri KdSiswa Deskripsi NamaFile Tanggal
Integer Integer Integer Text Varchar Date
4 4 4 65.535 100 3
Kapasitas dari tabel JawabanMateri adalah 65.650 byte. Diperkirakan dalam 1 tahun terjadi 2100 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 2100 * 65.650 = 137.865.000 byte.
Tabel 4.44 Tabel Estimasi Disk Space KelasMataPelajaran
Field Type Ukuran (byte) KdKelas KdMataPelajaran
Integer Integer
4 4
Kapasitas dari tabel KelasMataPelajaran adalah 8 byte. Diperkirakan dalam 1 tahun terjadi 60 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 60 * 8 = 480 byte.
238
Tabel 4.45 Tabel Estimasi Disk Space Forum
Field Type Ukuran (byte) KdForum KdKategoriForum DeskripsiForum NamaForum Moderator
Integer Integer Varchar Varchar Integer
4 4 500 100 4
Kapasitas dari tabel Forum adalah 612 byte. Diperkirakan dalam 1 tahun terjadi 1 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 1 * 612 = 612 byte.
Tabel 4.46 Tabel Estimasi Disk Space KategoriForum
Field Type Ukuran (byte) KdKategoriForum NamaKategoriForum
Integer Varchar
4 100
Kapasitas dari tabel Forum adalah 104 byte. Diperkirakan dalam 1 tahun terjadi 1 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 1 * 104 = 104 byte.
Tabel 4.47 Tabel Estimasi Disk Space Topik
Field Type Ukuran (byte) KdTopik KdForum TopicStarter JudulTopik DeskripsiTopik TanggalTopik
Integer Integer Integer Varchar Varchar Date
4 4 4 100 500 3
Kapasitas dari tabel Forum adalah 615 byte. Diperkirakan dalam 1 tahun terjadi 100 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 100 * 615 = 61.500 byte.
Tabel 4.48 Tabel Estimasi Disk Space Post
Field Type Ukuran (byte) KdPost Poster IsiPost TanggalPost
Integer Integer Text Date
4 4 65.535 3
239
KdTopik Integer 4 Kapasitas dari tabel Forum adalah 65.550 byte. Diperkirakan dalam 1 tahun terjadi 1000 transaksi. Dalam 1 tahun pertumbuhan dari tabel ini adalah 1000 * 65.550 = 65.550.000 byte.
Tabel 4.49 Tabel Total Disk Space Requirement
Nama Tabel Kapasitas yang dibutuhkan dalam 1 Tahun (byte)
Karyawan 274
KaryawanMataPelajaran 72
Tagihan 3.933.264.000
JenisNilai 0
DetailTagihanSiswa 1.209.600
DetailNilaiSiswa 15.120.000
RaporBayangan 32.400
DetailRaporBayangan 302.400
DetailNilaiRaporBayangan 7.560.000
NilaiEkstrakurikulerRaporBayangan 58.992.300
Ekstrakurikuler 0
RaporAkhir 59.026.500
Kelas 40
DetailRaporAkhir 1.663.200
NilaiEkstrakurikulerRaporAkhir 18.000
Siswa 18.300
MataPelajaran 0
Silabus 546
KaryawanSilabus 1.008
StandarKompetensiSilabus 16.516.836
240
Nama Tabel Kapasitas yang dibutuhkan dalam 1 Tahun (byte)
KompetensiDasarSilabus 792.729.504
RPP 990.917.928
DetailRPP 1.486.394.280
BankSoal 132.352.416
DetailBankSoal 18.496.961.280
JamSekolah 600
JadwalHarian 405
JadwalUjian 135
Materi 138.098.100
JawabanMateri 137.865.000
KelasMataPelajaran 480
Forum 612
KategoriForum 104
Topik 61.500
Post 65.550.000
Total kapasitas yang dibutuhkan dalam 1 tahun adalah 26.334.657.820 byte atau ~24 GB. Total kapasitas yang dibutuhkan dalam 5 tahun adalah 131.673.289.100 byte atau ~122 GB.
241
4.3.7 Merancang User View
Tabel 4.50 Tabel User View
User View Tabel Table Field
Administrator
SiswaView Siswa KdSiswa
NamaSiswa
TanggalLahirSiswa
JenisKelaminSiswa
KelasSiswa
Kelas Tingkatan
Jurusan
Administrator
KaryawanView Karyawan KdKaryawan
NamaKaryawan
TanggalLahirKaryawan
PosisiKaryawan
KelasWali
Administrator
Siswa
MataPelajaranView MataPelajaran KdMataPelajaran
NamaMataPelajaran
Administrator
KelasMataPelajaranView
MataPelajaran NamaMataPelajaran
Kelas Tingkatan
Jurusan
Administrator
DaftarMengajarView
Karyawan NamaKaryawan
MataPelajaran NamaMataPelajaran
242
User View Tabel Table Field
Karyawan KaryawanMataPelajaran KelasMengajar
Administrator
Karyawan
Siswa
JadwalHarianView JadwalHarian KdJadwalHarian
Kelas
Semester
JamSekolah Hari
Jam
MataPelajaran NamaMataPelajaran
Karyawan NamaKaryawan
Administrator
Karyawan
Siswa
JadwalUjianView JadwalUjian KdJadwalUjian
Kelas
Semester
JamSekolah Hari
Jam
MataPelajaran NamaMataPelajaran
Karyawan NamaKaryawan
Siswa
Karyawan
SoalMateriView JawabanMateri StatusKumpul
MataPelajaran NamaMataPelajaran
Materi JudulMateri
DeskripsiMateri
NamaFile
Siswa RPPView RPP KdRPP
Kelas
Semester
243
User View Tabel Table Field
StandarKompetensi
KompetensiDasar Indikator TujuanPembelajaran MateriPokok MateriPembelajaran MetodePembelajaran SumberBelajar Penilaian Waktu
DetailRPP Pertemuan
KegiatanAwal
KegiatanInti
KegiatanAkhir
MataPelajaran NamaMataPelajaran
Siswa RaporAkhirView RaporAkhir Semester
TahunAjaran
Komentar
Sakit
Izin TanpaKeterangan
DetailRaporAkhir Kognitif
Praktik
Sikap
KKM
Ekstrakurikuler NamaEkstrakurikuler
244
User View Tabel Table Field
NilaiEkstrakurikulerRaporAkhir
SKMEkstrakurikuler NilaiEkstrakurikuler
MataPelajaran NamaMataPelajaran
Siswa KdSiswa
NamaSiswa
Kelas Tingkatan
Jurusan
Siswa RaporBayanganView
RaporBayangan Kelas
Semester TahunAjaran
Sakit
Izin
TanpaKeterangan
DetailRaporBayangan SKM
DetailNilaiRaporBayangan Urutan
RataRata
JenisNilai NamaJenisNilai
Siswa KdSiswa
NamaSiswa
MataPelajaran NamaMataPelajaran
Ekstrakurikuler NamaEkstrakurikuler
NilaiEkstrakurikulerRaporBayangan
NilaiEkstrakurikuler
KeteranganEkstrakur
245
User View Tabel Table Field
ikuler
Siswa BankSoalView BankSoal JudulBankSoal
DeskripsiBankSoal
DetailBankSoal NoBankSoal
Pertanyaan
Pilihan1
Pilihan2
Pilihan3
Pilihan4
Pilihan5
Jawaban
PenjelasanJawaban
Karyawan
Siswa
MateriView Materi JudulMateri
Deskripsi
NamaFile
Tanggal
Soal
MataPelajaran NamaMataPelajaran
Kelas Tingkatan
Jurusan
Karyawan JawabanMateriView
JawabanMateri Deskripsi
NamaFile
Tanggal
246
User View Tabel Table Field
MataPelajaran NamaMataPelajaran
Siswa KdSiswa
NamaSiswa
4.3.8 Merancang Mekanisme Keamanan
Penanganan keamanan dibagi menjadi dua hal. Secara fisik dan secara
sistem. Yang dimaksud secara fisik adalah penanganan keamanan yang
berhubungan dengan komputer server secara fisik, sedangkan penanganan secara
sistem yaitu secara logikal dengan penanganan dengan mengatur piranti lunak
yang berhubungan dengan server.
Secara fisik, komputer server yang digunakan merupakan milik
perusahaan PT. Orihosting Indonesia yang posisinya berada dalam ruang khusus.
Sedangkan secara sistem, server menggunakan sistem operasi Linux,
supaya bisa mengakses komputer server, maka pengguna harus memiliki akun di
komputer tersebut terlebih dahulu. Jika sudah untuk mengakses file-file di dalam
sana, maka dapat dengan melalui jalur FTP.
Sistem operasi tersebut menyediakan software keamanan antara lain :
• Firewall
Firewall yang digunakan adalah salah satu aplikasi yang terdapat pada
sistem operasi Linux yaitu IP Table.
Fungsi Firewall antara lain :
- Mengatur dan mengontrol lalu lintas jaringan
247
- Melakukan autentikasi terhadap akses
- Melindungi sumber daya dalam jaringan privat
- Mencatat semua kejadian, dan melaporkan kepada administrator
• Antivir ClamAV
Merupakan antivirus yang berfungsi untuk mencegah dan melindungi
komputer dari serangan virus.
• Brute Force Protection
Berfungsi untuk melindungi server dari serangan Brute Force yang
memaksa login ke dalam server.
• Spam Assassin
Berfungsi untuk melindungi server dari spamming melalui email.
• Host Access List
Berfungsi untuk membatasi jumlah IP yang mengakses ke server.
Sistem keamanan pada DBMS, dengan memerlukan autentikasi pada
sistemnya. Sedangkan hak akses untuk database akan diberikan oleh satu orang.
Sedangkan hak akses (authorization) pengguna sistem e-learning akan diatur di
dalam aplikasi dengan menggunakan logika pemrograman.
248
4.4 Pemilihan DBMS
Tabel 4.51 Tabel Perbandingan DBMS
Kategori MySQL PostgreSQL Platform AIX 4.x dan 5.x dengan native
threads, Amiga, FreeBSD 5.x dan ke atas dan dengan native threads, HP-UX 11.x dengan native threads, Linux, Mac OS X, NetBSD 1.3/1.4 Intel dan NetBSD 1.3 Alpha, Novell NetWare 6.0 dan 6.5, OpenBSD 2.5 dan dengan native threads, SCO OpenServer 5.0.X dengan port dari paket FSU Pthreads, SCO Openserver 6.0.x, SCO UnixWare 7.1.x, SGI Irix 6.x dengan native threads, Solaris 2.5 dan ke atas dengan native threads pada SPARC dan x86, Tru64 Unix, Windows 2000, XP, Windows Server 2003, Windows Vista, and Windows Server 2008.
Dapat bekerja pada platform mulai dari NT, Solaris, Sun OS, HP-UX, AIX, BSD, Linux (SELinux/Security Enhanced Linux, SUSE Linux Enterprise Server 10 (32-bit), Red Hat Enterprise Linux AS/ES 4.0 Update 2 (32-bit)), SGI Irix, Mac OS X, FreeBSD, OpenBSD, NetBSD, Windows (Windows 2000 SP4, Windows 2003 SP2 (32-bit) Server Standard, Enterprise & Datacenter), UnixWare, CentOS (Community Enterprise Operating System).
Tujuan Desain MySQL berkembang dari solusi yang dipakai oleh pembuatnya, TcX AB, dalam memproses data untuk aplikasi web. Fokusnya adalah pada kecepatan.
PostgreSQL berkembang dari riset akademik. Fokus pengembangannya adalah pada fitur OO, reliabilitas, dan dukungan SQL.
Threaded MySQL menggunakan model threaded untuk proses server, semua user menghubungkan ke database tunggal untuk pengaksesan.
PostgreSQL menggunakan model non-threaded yang semua koneksi baru ke database-nya mendapatkan proses database yang baru.
Fitur MySQL tidak mendukung subqueries, store procedures dan cursor of views.
PostgreSQL mendukung subqueries, store procedures dan cursor of views. PostgreSQL juga sering disebut sebagai open source dari Oracle.
Arsitektur dan Portabilitas
MySQL memiliki arsitektur multi-threading dan memiliki
PostgreSQL multiproses (forking), tetapi sulit
249
Kategori MySQL PostgreSQL port natif ke Windows, sehingga mudah dijalankan di Windows.
diterapkan ke Windows karena Windows sangat thread-oriented. PostgreSQL sebenarnya bisa dijalankan di Windows, tapi melalui lapisan emulasi Cygwin.
Lisensi Lisensi MySQL berada di bawah GPL, sehingga tidak boleh dimodifikasi untuk menghasilkan produk turunan yang closed-source.
Lisensi PostgreSQL lebih liberal, sehingga banyak produk closed-source dan komersial yang bisa dikembangkan dari source code PostgreSQL.
Kecepatan MySQL terkenal cepat dalam melakukan query sederhana. Dengan kata lain, dapat memproses lebih banyak SQL per satuan waktu.
Dalam kondisi load tinggi (jumlah koneksi simultan besar), PostgreSQL sering mengalahkan MySQL untuk query dengan klausa JOIN yang kompleks.
Fungsi Built-In MySQL terkenal kaya fungsi built-in, seperti modifikasi string (REPLACE, RIGHT, LTRIM, LCASE), matematika (LOG, LOG10), tanggal.
PostgreSQL kurang unggul dalam fungsi built- in.
Full Text Indexing MySQL mendukung indeks full text secara natif.
PostgreSQL mendukung full text searching lewat program lain (seperti: OpenFTS, openfts.sourceforge.net) yang memanfaatkan tipe data array-nya untuk menyimpan indeks dokumen.
Keamanan Sistem perizinan MySQL lebih mendetil dari PostgreSQL. Misalnya, pengaturan agar user tertentu yang datang dari host tertentu hanya bisa membaca tabel saja tanpa bisa UPDATE. MySQL hanya mendukung sistem autentikasi yang tidak standar. Hal ini membuat perusahaan sulit dalam menggunakannya, karena akun
PostgreSQL menawarkan metode yang terkenal beraneka ragam dan standar industri untuk mengautentikasi pengguna database, termasuk password, GSSAPI , SSPI , Kerberos, Ident, LDAP, dan PAM
250
Kategori MySQL PostgreSQL pada database tidak dapat diatur secara terpusat.
Tipe Data MySQL sudah mendukung semua tipe data umum.
PostgreSQL lebih kaya dalam hal tipe data (terutama yang domain-specific seperti tipe data geometris dan MONEY).
Modifikasi Tabel MySQL lebih fleksibel dalam ALTER TABLE, yaitu mendukung penambahan/ penghapusan kolom, penggantian definisi kolom.
PostgreSQL terbatas hanya bisa melakukan penambahan kolom, penggantian nama kolom, dan penggantian nama tabel.
Kesimpulan
Setelah melakukan perbandingan pada kedua DBMS di atas, disimpulkan bahwa
kedua DBMS tersebut dapat mendukung perancangan sistem e-learning. Tetapi MySQL
memiliki beberapa kelebihan dari PostgreSQL.
MySQL memiliki kecepatan yang lebih tinggi daripada PostgreSQL dalam hal
query sederhana. Selain itu, MySQL lebih mudah diinstal dan dioperasikan
dibandingkan dengan PostgreSQL. Keunggulan MySQL dalam fungsi built-in juga lebih
tinggi daripada PostgreSQL. Kemudian dari segi pemodifikasian tabel, MySQL jauh
lebih fleksibel dibandingkan dengan PostgreSQL. Mempertimbangkan aplikasi e-
learning yang dirancang untuk sekolah akan digunakan oleh siswa berjumlah standar,
maka DBMS yang lebih compatible untuk digunakan adalah MySQL.
251
4.5 Implementasi
4.5.1 Jadwal Implementasi dan Pelatihan
Tabel 4.52 Jadwal Implementasi dan Pelatihan
Aktivitas
Bulan Maret April
1 2 3 4 1 2 3 1. Implementasi sistem x 2. Konversi data x 2. Testing x x 3. Evaluasi dan revisi x x 4. Pelatihan x
Sistem yang telah selesai dirancang, selanjutnya akan diimplementasikan
kepada para user. User-user yang terlibat dalam training, yaitu staf IT dari
yayasan dan guru-guru sekolah.
4.5.2 Arsitektur Jaringan
Gambar 4.17 Arsitektur Jaringan
252
4.5.3 Spesifikasi Server
Server yang disediakan oleh PT. Orihosting Indonesia digunakan sebagai
web server. Web server tersebut menggunakan Apache versi 2.2.11 dan
menyediakan dukungan bahasa PHP versi 5.2.9-2 dan database yaitu MySQL
versi 5.1.33.
Spesifikasi server yang digunakan adalah sebagai berikut :
Tabel 4.53 Spesifikasi Server
Platform Single CPU Tower Server Processor Intel® Xeon® Processor 3065 (2.33 GHz, FSB 1333,
Cache 4MB) Chipset Intel® S3000 Server Chipset Memory 2x1 GB ECC DDR2-800 PC-6400 Video Integrated ATI RN50 (ES1000) 16 MB #1 Controller Integrated 6 ports SATA controller with embedded
RAID #1 Hard Dri ve 250 GB Serial ATA-II/300, 7200 RPM, Cache 8MB #1 Optical Drive 16X DVD-ROM SATA Standard Bays Four HP proprietary fixed drive bays Interface Provided 6x USB 2.0, 2x Serial, VGA, LAN, Keyboard,
Mouse Slot Provided 1x PCIe x8, 2x PCIe x1, 1x PCI Networking Integrated NC105i PCI Express Gigabit Ethernet
Server Adapter System Fans / Coolers Embedded Easy Deploy Fan Cooling Chassis Form Factor Form Factor Micro ATX Tower 4U Power Supply 365W with PFC O/S Provided Linux CENTOS 5.3 i686
253
4.5.4 Spesifikasi Client
Spesifikasi komputer yang digunakan oleh client adalah sebagai berikut :
Tabel 4.54 Spesifikasi Client
Processor Intel® Pentium® 4 524 (3.06 GHz, Cache 1MB, LGA 775)
Memory 1 GB DDR-2 PC-5300 Video Integrated Intel GMA 3100 16 MB Hard Dri ve 80 GB ATA-100, 5400 RPM Interface Provided Keyboard, Mouse O/S Provided Microsoft Windows XP Professional
Service Pack 3 Browser Mozilla Firefox 3.5.7
4.5.5 Konversi Data
Langkah ini dilakukan dengan mengonversi data yang sebelumnya
berbentuk dokumen ke dalam database pada sistem ini. Data dikonversi dengan
cara mengimpor data Microsoft Excel ke dalam database. Konversi data
dilakukan pada minggu ke-2 bulan Maret.
4.5.6 Testing
Testing dilakukan oleh staf IT di YBHK dengan tujuan untuk pencarian
kesalahan.
4.5.7 Pelatihan
Pelatihan ini mencakup maintenance pada database, cara penggunaan
sistem, backup dan recovery data. Pelatihan ini dilakukan kepada 2 staf IT di
254
kantor YBHK. Pelatihan ini akan dilakukan pada minggu ke-3 bulan April
dengan durasi waktu 3 jam.
4.5.8 Operasi
Pada tahap ini database pada sistem e-learning akan diterapkan pada
DBMS dan penerapan aplikasi akan diawasi dalam setiap transaksi yang akan
terjadi. Jika masih ditemukan kesalahan, sistem database e-learning masih dapat
terus diperbaiki dan dikembangkan.
4.6 Evaluasi
4.6.1 Database
Pengujian database dilakukan dengan mengevaluasi integrity, security,
redudansi, backup dan recovery serta performance pada sistem.
a. Integrity
Hasil dari evaluasi menunjukkan bahwa semua tabel yang telah
dilakukan uji coba telah memenuhi rancangan domain, entitas, dan
constraint sesuai dengan rancangan yang telah ditentukan sebelumnya.
b. Security
Hasil dari evaluasi menunjukkan bahwa semua tabel yang diuji
coba telah dapat berjalan sesuai dengan mekanisme yang ditentukan,
yaitu dengan membagi hak akses program sesuai pengelompokan user.
Selain itu, setiap user hanya bisa mengakses dan melakukan perubahan
pada tabel tertentu. Bila user mengakses atau melakukan perubahan pada
255
tabel lain maka akan muncul pesan kesalahan. Sistem yang digunakan
juga menggunakan sistem login sehingga keamanan sistem terjamin.
c. Redudansi
Hasil dari evaluasi menunjukkan bahwa semua tabel yang diuji
coba memiliki tingkat redudansi data yang rendah karena semua tabel
telah melalui tahap validasi normalisasi.
d. Rencana Backup dan Recovery
• Rencana Backup
Untuk menjaga agar data tidak hilang, maka perlu dilakukan
backup secara rutin. Full backup adalah backup yang dilakukan
terhadap seluruh data yang terdapat di dalam database. Full backup
akan dilakukan pertama kali pada saat database telah selesai diuji.
Setelah itu full backup akan dilakukan setiap bulan dan setiap tahun.
Incremental backup akan dilakukan pertama kali ketika full backup
telah selesai dibuat. Incremental backup akan dilakukan seminggu
sekali.
Berikut tabel perencanaan backup yang akan dilakukan dan medianya:
Tabel 4.55 Perencanaan Backup
Waktu backup Media penyimpanan Mekanisme Mingguan Harddisk dan CD-RW Backup
(incremental) secara manual pada harddisk dan CD-RW
Bulanan CD Backup (full) secara manual pada CD
Tahunan DVD Backup (full) secara manual pada DVD
256
• Rencana Recovery
Recovery dilakukan setelah terjadi kerusakan pada database
melalui media backup cadangan. Jika kerusakan harddisk terjadi,
maka akan dilakukan recovery dari CD atau DVD dengan backup
(full) dari minggu sebelumnya.
e. Performance
Hasil dari evaluasi menunjukkan bahwa database dapat berjalan
sesuai dengan rancangan dan dapat menghasilkan data dalam waktu
singkat.
4.6.2 Aplikasi
Evaluasi aplikasi dilakukan dengan siswa, guru dan pihak YBHK pada
saat aplikasi telah dapat dioperasikan. Aspek-aspek yang akan dievaluasi seperti
keakuratan data, kesesuaian aplikasi dengan kebutuhan dari setiap user dan
performance dari aplikasi.
Hasil evaluasi dari sistem database e-learning ini adalah:
Kelebihan :
- Sistem aplikasi e-learning akan membantu siswa untuk memperdalam materi.
- Aplikasi cukup mudah dioperasikan.
- Aplikasi ini dapat membantu kegiatan pembelajaran siswa.
- Dengan adanya fungsi upload tugas, mampu membantu siswa dalam
melakukan pengumpulan tugas.
- Fungsi forum memungkinkan siswa dan guru saling berdiskusi.
257
- Fungsi menampilkan rapor bayangan dan rapor akhir akan memudahkan
siswa untuk melihat histori nilai-nilai mereka.
Kekurangan :
- Aplikasi ini belum bisa meningkatkan motivasi belajar siswa.
- Harus ditambah fitur lain seperti menampilkan animasi flash dan fasilitas
untuk tipe soal yang berbeda (isian, pilihan ganda dan uraian).