72
PERANCANGAN DAN IMPLEMENTASI
4.1. Perancangan Database
Sebuah struktur pendekatan yang menggunakan prosedur, teknik, peralatan, dan dokumentasi yang bertujuan untuk mendukung dan memfasilitaskan proses perancangan. Perancangan basisdata ini terdiri dari beberapa fase, yaitu: perancangan konseptual, logikal, dan fisikal.
4.1.1. Perancangan Database Konseptual
Proses membuat suatu model informasi yang digunakan di dalam SMU Al-Chasanah dan terbebas dari semua pertimbangan-pertimbangan yang bersifat fisikal.
Tujuannya adalah membuat rancangan menjadi tugas yang dapat dikendalikan, dengan menguji perspektif pengguna yang berbeda.
4.1.1.1. Mengidentifikasi Tipe Entiti
Mengidentifikasi tipe entiti (objek) utama dimana pengguna berperan didalamnya. Salah satu metode untuk mengidentifikasi entiti adalah menguji spesifikasi persyaratan pengguna.
Dalam skripsi yang kami buat ini, sistem yang berjalan adalah suatu sistem yang bertugas mengatur kegiatan operasional suatu sekolah. Berdasarkan analisis kami, entiti yang terdapat adalah: Siswa, Petugas loket, Guru, Kelas, Matpel, SPP, Absensi, Jadwal, Pelanggaran, dan Penilaian, dimana deskripsi dari masing-masing entiti dapat dilihat pada tabel dibawah ini.
Tabel 4.1 Kamus Data Entiti
Nama Entiti Deskripsi Alias Kejadian
Wali Istilah umum untuk orang yang bertanggung jawab terhadap sebagian anak yang belajar di SMA Al-Chasanah ortu dan selain orang tua
Wali Murid Data tentang orang yang bertanggung jawab terhadap beberapa murid ortu dan selain orang tua
Siswa Semua siswa yang terdapat pada SMA Al-Chasanah
Murid Semua siswa yang bersekolah di SMA Al-Chasanah
Petugas_Loket Istilah umum yang menggambarkan petugas yang bertugas mengurus
Loket keuangan
Semua karyawan yang bertugas untuk mengurus pembayaran SPP setiap
pembayaran SPP siswa
Guru Istilah umum yang menggambarkan tenaga pengajar pada SMA Al-Chasanah
Pengajar Semua karyawan yang bertugas untuk mengajar semua siswa
Tata_Usaha Istilah umum yang menggambarkan petugas yang mengurus
pendataan
TU Semua karyawan yang bertugas untuk mendata semua siswa
Kelas Menjelaskan semua
tingkatan kelas yang terdapat pada SMA Al-Chasanah
Tingkatan Setiap kelas terdiri dari banyak siswa dan satu wali kelas serta tahun ajaran.
MatPel Istilah umum yang menggambarkan semua pelajaran yang ada di SMA Al-Chasanah
Pelajaran Setiap pelajaran yang diberikan kepada siswa dan diajar oleh satu atau banyak guru
Nilai_K Istilah umum untuk nilai minimal yang dimiliki oleh setiap mata pelajaran
Nilai Kurang
Setiap nilai minimal yang ditentukan oleh bagian kurikulum untuk setiap mata pelajaran
Nilai_K Istilah umum untuk nilai minimal yang dimiliki
Nilai Kurang
Setiap nilai minimal untuk setiap mata pelajaran
oleh setiap mata pelajaran
SPP Istilah umum yang menggambarkan mengenai pembayaran uang sekolah setiap bulan
Bayaran Sejumlah uang yang dibayarkan oleh sekolah untuk melunasi SPP yang diwajibkan
Absensi Istilah umum yang menggambarkan mengenai daftar kehadiran siswa
Kehadiran Berisi jumlah kehadiran siswa serta keterangannya
Jadwal Istilah umum yang menggambarkan mengenai penjadwalan setiap mata pelajaran untuk tiap-tiap kelas
Penjadwalan Waktu dan kegiatan pengajaran pada SMA Al-Chasanah
Pelanggaran Istilah umum yang menggambarkan mengenai pelanggaran
Kasus Memuat mengenai pelanggaran yang dilakukan oleh setiap siswa
Penilaian Istilah umum yang menggambarkan
mengenai hasil penilaian mata pelajaran siswa
Nilai Memuat mengenai penilaian setiap mata pelajaran bagi setiap siswa
Point Istilah umum untuk point yang dimilikioleh setiap pelanggaran
Nilai
Pelanggaran
Setiap point untuk setiap pelanggaran tata tertib sekolah
4.1.1.2. Mengidentifikasi Tipe Relasi
Pada tahap ini digambarkan hubungan antar entiti yang berdasarkan dari fakta spesifikasi persyaratan pengguna yang penting dan memang yang menjadi perhatian dalam model. Untuk mempermudah, kami menggunakan entity-relationship diagram untuk merepresentasikan entiti-entiti dan bagaimana mereka berhubungan satu sama lain.
Tabel 4.2 Kamus Data Relationship
Nama Entiti Multiplicity Relationship Nama Entiti Multiplicity
1..1 Membayar SPP 1..* 0..* Mempunyai Absensi 0..* 1..* Mempunyai Jadwal 1..* 0..* Melakukan Pelanggaran 0..* 1..1 Mempunyai Penilaian 1..* 1..* Mengajar MatPel 1..* Siswa 1..1 Mempunyai Jadwal 1..*
Wali 1..1 Mempunyai Siswa 1..*
1..1 Memeriksa Absensi 1..* 1..1 Mencatat Pelanggaran 0..* 1..1 Memberi Penilaian 1..* 1..1 Memeriksa Absensi 1..* Guru 1..* Mencatat SPP 1..*
Tata_Usaha 1..1 Mengikuti Jadwal 1..*
Petugas_Loket 1..1 Melakukan Absensi 1..*
1..* Mempunyai MatPel 1..* 1..1 Mengikuti Jadwal 1..* Kelas 1..1 Mempunyai Penilaian 1..* 1..1 Mempunyai Nilai_K 1..1 MatPel 1..1 Mempunyai Pelanggaran 1..*
4.1.1.3. Mengidentifikasi dan Asosiasi Atribut Suatu Entiti
Pada tahap ini dibuat tabel Atribut dan Domain atribut yang berisi Nama Entiti, Atribut-atribut, Deskripsi, Tipe data dan Panjang, Null, Multi-value. Tujuannya untuk mengasosiasikan atribut-atribut dengan entiti yang cocok atau tipe relasinya.
Tabel 4.3. Identifikasi Attribute dan Domain Attribute Nama Entiti Atribut Deskripsi Tipe Data
dan Panjang
Null Multi-value
Kd_wali Kode untuk
identifikasi wali siswa
Integer No No
Nama_ayah Nama lengkap
ayah
50 variable character
No No
Nama_ibu Nama lengkap
ibu
50 variable character
No No
Alamat_Ayah Alamat tempat tinggal ayah
225 variable character
No No
Alamat_Ibu Alamat tempat
tinggal ibu
225 variable character
No No Wali
Telp_Ayah Nomor telpon
ayah yang dapat dihubungi
20 variable character
Telp_Ibu Nomor telpon ibu yang dapat
dihubungi
20 variable character
Yes Yes
Pekerjaan_Ayah Pekerjaan ayah 50 variable character
No No
Pekerjaan_Ibu Pekerjaan ibu 50 variable character
No No
Nama_wali Nama lengkap
wali
50 variable character
No No
Alamat_wali Alamat tempat
tinggal wali
225 variable character
No No
Telp_wali Nomor telpon
wali yang dapat dihubungi
20 variable character
Yes Yes
Pekerjaan_wali Pekerjaan wali 50 variable character
No No
NIS Nomor Induk
Siswa
6 variable character
No No Siswa
Nama_Siswa Nama lengkap
dari siswa
50 variable character
Tempat_Lahir_Siswa Tempat siswa dilahirkan
50 variable character
No No Tanggal_Lahir_Siswa Tanggal siswa
dilahirkan
25 variable character
No No
Alamat_Siswa Alamat tempat tinggal siswa
225 variable character
No No
Telp_Siswa Nomor telepon
siswa yang dapat dihubungi
50 variable character
Yes Yes
Agama_Siswa Agama yang
dianut oleh siswa
25 variable character, salah satu dari “Islam” atau “Katolik” atau “Protestan” atau “Hindu” atau “Budha” No No
Jenis_Kelamin_Siswa Jenis kelamin siswa
1 variable character, salah satu dari “P” atau “L”
No No
Anak_Ke Urutan anak
dalam keluarga
5 variable character
Status Status sebagai siswa di SMA
20 variable character, salah satu dari “Siswa Aktif”, “Lulus”, “Pindah” atau “Keluar” No No
Kd_wali Kode untuk
identifikasi wali siswa
Integer No No
Kode_Guru Nomor Induk
Karyawan
10 variable character
No No
Nama_Guru Nama lengkap
dari guru
50 variable character
No No
Tempat_Lahir_Guru Tempat guru dilahirkan
50 variable character
No No
Tanggal_Lahir_Guru Tanggal guru dilahirkan
25 variable character
No No Guru
Alamat_Guru Alamat tempat tinggal guru
225 variable character
Telp_Guru Nomor telepon guru yang dapat
dihubungi
20 variable character
Yes Yes
Agama_Guru Agama yang
dianut oleh guru
25 variable character, salah satu dari “Islam” atau “Katolik” atau “Protestan” atau “Hindu” atau “Budha” No No
Jenis_Kelamin_Guru Jenis kelamin guru
1 variable character, salah satu dari “P” atau “L”
No No
Password_Guru Kata sandi guru untuk dapat menggunakan aplikasi 10 variable character Yes No
Kode_TU Kode Tata
Usaha
10 variable character
No No Tata_Usaha
Tata Usaha character Tempat_Lahir_TU Tempat Tata
Usaha dilahirkan
50 variable character
No No
Tanggal_Lahir_TU Tanggal Tata Usaha
dilahirkan
25 variable character
No No
Alamat_TU Alamat tempat
tinggal Tata Usaha
225 variable character
No No
Telp_TU Telepon Tata
Usaha yang dapat dihubungi
20 variable character
Yes Yes
Agama_TU Agama yang
dianut oleh Tata Usaha
25 variable character, salah satu dari “Islam” atau “Katolik” atau “Protestan” atau “Hindu” atau “Budha” No No
Jenis_Kelamin_TU Jenis kelamin Tata Usaha
1 variable character,
salah satu dari “P” atau “L” Password_TU Kata sandi TU
untuk dapat menggunakan aplikasi 10 variable character Yes No
Kode_Petugas Kode petugas 10 variable character
No No
Nama_Petugas Nama lengkap petugas 50 variable character No No Tempat_Lahir_Petug as Tempat petugas dilahirkan 50 variable character No No Tanggal_Lahir_Petug as Tanggal petugas dilahirkan 50 variable character No No
Alamat_Petugas Alamat tempat tinggal petugas
225 variable character
No No
Telp_Petugas Telepon petugas yang dapat dihubungi 20 variable character Yes Yes Petugas_Loket
Agama_Petugas Agama yang dianut oleh
petugas
25 variable character, salah satu dari “Islam” atau
“Katolik” atau “Protestan” atau “Hindu” atau “Budha” Jenis_Kelamin_Petug as Jenis kelamin petugas 1 variable character, salah satu dari “P” atau “L”
No No
Password_Petugas Kata sandi Petugas untuk dapat menggunakan aplikasi 10 variable character Yes No
Kode_Kelas Kode untuk
identifikasi kelas
8 variable character
No No
Jumlah_Siswa Jumlah siswa tiap kelas
6 variable character
No No Kelas
Walikelas Kode Guru 50 variable character
Program_Studi Jenis program keahlian yang tersedia di SMA Al-Chasanah 25 variable character, salah satu dari “Umum” atau “IPA” atau “IPS” atau “IPB”
Yes No
Tingkatan Tingkatan kelas 10 variable character
No No
Tahun Tahun ajaran 10 variable character
No No
Kode_Matpel Kode mata
pelajaran
6 variable character
No No MatPel
Nama_Matpel Nama mata
pelajaran
50 variable character
No No
Kode_Matpel Kode mata
pelajaran
6 variable character
No No
Nama_Matpel Nama mata
pelajaran
50 variable character
No No
Tahun Tahun ajaran 10 variable character
No No Nilai_K
Nilai_minimal Nilai minimal yang dimiliki
oleh setiap mata pelajaran Kd_pelanggaran Kode pelanggaran 6 variable character No No Jenis_pelanggaran Jenis pelanggaran 50 variable character No No Point
Point Point untuk
setiap pelanggaran
Integer No No
NIS Nomor Induk
Siswa
6 variable character
No No
Nama_Siswa Nama lengkap
dari siswa 50 variable character No No Tgl_Pembayaran Tanggal pembayaran SPP 25 variable character No No
Denda Jumlah denda
yang dibayarkan
Money No No
Kode_Petugas Kode petugas loket
10 variable character
No No SPP
Nama_Petugas Nama lengkap petugas
50 variable character
Kode_Kelas Kode kelas 8 variable character
No No
Tahun Tahun ajaran 10 variable character
No No
Bulan Bulan dari SPP yang dibayar
20 variable character
No No
Biaya Jumlah biaya
SPP yang harus dibayar
Money No No
Kode_Kelas Kode kelas 8 variable character
No No
NIS Nomor Induk
Siswa
6 variable character
No No
Nama_Siswa Nama siswa
yang absen
50 variable character
No No
Tgl_Absensi Tanggal siswa
yang absen
25 variable character
No No Absensi
Keterangan Alasan dari
absen siswa
5 variable character, salah satu dari ‘Hadir’ atau ‘Izin’ atau ‘Alpha’ atau
‘Sakit’. Shift Waktu KBM 15 variable
character
No No
Kode_Guru Nomor Induk
Karyawan
10 variable character
No No
Nama_Guru Nama guru 50 variable character
No No
Tahun Tahun ajaran 10 variable character
No No
Kode_Jadwal Kode jadwal 6 variable character
No No
Kode_Kelas Kode kelas 8 variable character
No No
NIS Nomor Induk
Siswa
6 variable character
No No
Nama_Siswa Nama siswa
yang absen
50 variable character
No No
Nama_Matpel Nama mata
pelajaran
50 variable character
No No
Kode_Guru Nomor Induk
Karyawan
10 variable character
No No Jadwal
Nama_Guru Nama guru 50 variable character
Shift Waktu KBM 15 variable character
No No
Hari Hari dari jadwal pelajaran
6 variable character
No No
Tahun Tahun ajaran 10 variable character No No Kode_Pelanggaran Kode pelanggaran 6 variable character No No Jenis_pelanggaran Jenis pelanggaran yang dilakukan 50 variable character No No Tgl_Pelanggaran Tanggal dilakukan pelanggaran 25 variable character No No
NIS Nomor Induk
Siswa
6 variable character
No No
Nama_Siswa Nama siswa
yang melakukan pelanggaran
50 variable character
No No
Kode_Guru Nomor Induk
Karyawan
10 variable character
No No Pelanggaran
Nama_Guru Nama lengkap
guru
50 variable character
Kode_Kelas Kode kelas 8 variable character
No No
Point Banyak point untuk setiap pelanggaran
Integer No No
Tahun Tahun ajaran 10 variable character
No No
Nilai nilai Integer No No
NIS Nomor Induk
Siswa
6 variable character
No No
Nama_Siswa Nama siswa 50 variable character
No No
Kode_Kelas Kode kelas 8 variable character
No No
Kode_Matpel Kode mata pelajaran
6 variable character
No No
Nama_Matpel Nama mata
pelajaran
50 variable character
No No
Kode_Guru Nomor Induk
Karyawan
10 variable character
No No
Nama_Guru Nama guru 50 variable character
No No Penilaian
untuk setiap bidang studi
Tahun Tahun ajaran 10 variable character
No No
Semester Semester yang sedang berjalan
7 variable character, salah satu dari “Genap” atau “Ganjil”
No No
4.1.1.4. Identifikasi Attribute Domains
Pada tahap ini dibuat tabel yang bertujuan untuk menjelaskan tipe data dari atribut dalam data model lokal konseptual.
Tabel 4.4. Determine Attribute Domains
Nama_Ayah Maksimal 50 karakter string berupa huruf. Nama_Ibu Maksimal 50 karakter string berupa huruf. Alamat_Ayah Maksimal 225 karakter string.
Alamat_Ibu Maksimal 225 karakter string.
Telp_Ayah Maksimal 20 karakter string berupa angka.. Telp_Ibu Maksimal 20 karakter string berupa angka. Pekerjaan_Ayah Maksimal 50 karakter string.
Pekerjaan_Ibu Maksimal 50 karakter string. Kd_wali Bertipe data integer.
Nama_Wali Maksimal 50 karakter string berupa huruf. Alamat_Wali Maksimal 225 karakter string.
Pekerjaan_Wali Maksimal 50 karakter string. Telp_Wali Maksimal 20 karakter string.
NIS Maksimal 6 karakter string.
Nama_Siswa Maksimal 50 karakter string berupa huruf. Tempat_Lahir_Siswa Maksimal 50 karakter string berupa huruf. Tanggal_Lahir_Siswa Maksimal 25 karakter string.
Alamat_Siswa Maksimal 50 karakter string.
Telp_Siswa Maksimal 20 karakter string berupa angka.
Agama_Siswa Maksimal 25 karakter string, terdiri dari “Islam”, “Katolik”, “Protestan”, “Hindu” atau “Budha”.
Anak_Ke Maksimal 5 karakter string. Status Maksimal 25 karakter string. Kode_Guru Terdiri dari 10 karakter string.
Nama_Guru Maksimal 50 karakter string berupa huruf . Tempat_Lahir_Guru Maksimal 50 karakter string berupa huruf. Tanggal_Lahir_Guru Maksimal 25 karakter string..
Alamat_Guru Maksimal 225 karakter string.
Telp_Guru Maksimal 20 karakter string berupa angka.
Agama_Guru Maksimal 25 karakter string, terdiri dari “Islam”, “Katolik”, “Protestan”, “Hindu” atau “Budha”.
Jenis_Kelamin_Guru Karakter tunggal terdiri dari “P” atau “L”. Password_Guru Maksimal 10 karakter string.
Kode_TU Terdiri dari 10 karakter string.
Nama_TU Maksimal 50 karakter string berupa huruf . Tempat_Lahir_TU Maksimal 50 karakter string berupa huruf. Tanggal_Lahir_TU Maksimal 25 karakter string.
Alamat_TU Maksimal 225 karakter string.
Telp_TU Maksimal 20 karakter string berupa angka.
Agama_TU Maksimal 10 karakter string, terdiri dari “Islam”, “Katolik”, “Protestan”, “Hindu” atau “Budha”.
Jenis_Kelamin_TU Karakter tunggal terdiri dari “P” atau “L”. Password_TU Maksimal 10 karakter string.
Nama_Petugas Maksimal 50 karakter string berupa huruf . Tempat_Lahir_Petugas Maksimal 50 karakter string berupa huruf. Tanggal_Lahir_Petugas Maksimal 25 karakter string.
Alamat_Petugas Maksimal 50 karakter string.
Telp_Petugas Maksimal 20 karakter string berupa angka.
Agama_Petugas Maksimal 25 karakter string, terdiri dari “Islam”, “Katolik”, “Protestan”, “Hindu” atau “Budha”.
Jenis_Kelamin_Petugas Karakter tunggal terdiri dari “P” atau “L”. Password_Petugas Maksimal 10 karakter string.
Kode_kelas Maksimal 8 karakter string.
Jumlah_Siswa Maksimal 6 karakter string, berupa angka. Walikelas Maksimal 50 karakter string berupa huruf . Program_Studi Maksimal 25 karakter string berupa huruf. Tingkatan Maksimal 10 karakter string.
Tahun Terdiri dari 10 karakter string. Empat karakter pertama berupa angka diikuti ‘/’ lalu empat angka berikutnya. Kode_Matpel Terdiri dari 6 karakter string.
Nama_Matpel Maksimal 50 karakter. Tgl_Pembayaran Maksimal 25 karakter string.
Denda Bertipe data money.
Bulan Maksimal 25 karakter string berupa huruf.
Biaya Bertipe data money.
Keterangan Maksimal 10 karakter string terdiri dari ‘Hadir’, ’Izin’, ‘Alpha’ dan ‘Sakit’.
Kode_Jadwal Maksimal 6 karakter string.
Shift Maksimal 15 karakter string berupa huruf. Hari Maksimal 6 karakter string berupa huruf. Kode_Pelanggaran Maksimal 6 karakter string.
Jenis_Pelanggaran Maksimal 50 karakter string berupa huruf. Tgl_pelanggaran Maksimal 25 karakter string.
Point Terdiri dari tipe data Integer. Nilai Terdiri dari tipe data Integer.
Semester Maksimal 10 karakter string terdiri dari ‘Genap’ dan ‘Ganjil’.
Nilai_Kurang Terdiri dari tipe data Integer. Nilai_Minimal Terdiri dari tipe data Integer.
4.1.1.5. Identifikasi Candidate Key dan Primary Key
Pada tahap ini bertujuan untuk mengidentifikasi candidate key pada tiap-tiap tipe entiti dan jika ada lebih dari satu candidate key, pilih satu untuk dijadikan primary key.
Tabel 4.5 Identifikasi Candidate Key dan Primary Key
Entity Name Candidate Key Primary Key
Wali 1. Kd_wali 2. Nama_ayah + Alamat_ayah 3. Nama_ibu + Alamat_ibu 4. Nama_wali + Alamat_wali Kd_wali Siswa NIS Nama_siswa + Alamat_siswa NIS Guru Kode_Guru Nama_guru + Alamat_guru Kode_Guru Tata_Usaha 1. Kode_TU 2. Nama_TU + Alamat_TU Kode_TU Petugas_Loket 1. Kode_Petugas 2. Nama_petugas + Alamat_petugaas Kode_Petugas
Kelas 1. Kode_Kelas + Tahun
2. Tingkatan +
Program_studi + Tahun
MatPel 1. Kode_Matpel
2. Nama_matpel
Kode_Matpel
Nilai_K 1. Kode_Matpel + Tahun
2. Nama_matpel + Tahun Kode_Matpel + Tahun SPP 1. NIS + Tgl_pembayaran 2. Tgl_pembayaran + Bulan NIS + Tgl_pembayaran Absensi 1. Tgl_absensi + Kode_kelas + Tahun + Kode_guru 2. Tgl_absensi + NIS Tgl_absensi + Kode_kelas + Tahun + Kode_guru Jadwal 1. Kode_Jadwal + Kode_Kelas + Tahun 2. Kode_jadwal + Kode_matpel Kode_Jadwal + Kode_Kelas + Tahun Point 1. Kode_pelanggaran 2. Jenis_pelanggaran Kode_pelanggaran Pelanggaran 1. Tgl_pelanggaran + kode_pelanggaran 2. Tgl_pelanggaran + NIS Tgl_pelanggaran + kode_pelanggaran
Penilaian 1. NIS + Kode_Matpel + Semester + Tahun 2. NIS + Kode_guru
NIS + Kode_Matpel + Semester + Tahun
4.1.1.6. Validasi Model Lokal Konseptual dengan Transaksi-transaksi Pengguna
Pada tahap ini bertujuan untuk memastikan bahwa model lokal konseptual mendukung transaksi-transaksi yang dibutuhkan oleh pengguna.
Gambar 4.2 Validasi model lokal konseptual dengan transaksi pengguna
Keterangan gambar:
b. Memeriksa absensi siswa
c. Memeriksa pelanggaran yang dilakukan oleh NIS tertentu d. Memasukan data pembayaran yang dilakukan siswa
e. Memeriksa data pembayaran berdasarkan pencatatan petugas loket f. Memeriksa sebuah mata pelajaran yang diajarkan oleh guru
g. Membuat jadwal berdasarkan waktu guru h. Memeriksa absensi siswa
i. Membuat daftar pelanggaran yang dilakukan siswa j. Membuat nilai berdasarkan penilaian guru
k. Memeriksa nilai untuk suatu mata pelajaran l. Memeriksa nilai berdasarkan NIS tertentu
m. Mendata mata pelajaran yang dimiliki oleh siswa n. Membuat jadwal bagi kelas-kelas yang tersedia
o. Melakukan daftar kehadiran berdasarkan masing-masing kelas p. Mengedit database Petugas_Loket
q. Memeriksa daftar kehadiran berdasarkan pendataan kelas r. Mengedit database Tata_Usaha
s. Mengedit database Petugas_Loket t. Mengedit database Siswa
u. Mengedit database Guru
v. Mandata nilai minimal mata pelajaran yang diikuti oleh siswa w. Mendata point pelanggaran yang dilakukan oleh siswa
4.1.2. Perancangan Basisdata Logikal
Perancangan basisdata logikal merupakan proses pembuatan suatu model informasi yang digunakan di dalam perusahaan, organisasi berdasarkan pada model data yang spesifik. Pada tahap perancangan logikal proses penyusunan model basis data berdasarkan perancangan konseptual, tidak menggunakan DBMS tertentu dan juga tidak menggunakan strukur fisik komputer. Pada tahap perancangan logikal lebih ke basisdata view. Pada tahap ini hubungan yang bersifat many-to-many, komplek, dan juga rekursif harus dihilangkan.
4.1.2.1. Penghilangan Fitur-Fitur yang Tidak Kompatibel
Pada tahap ini bertujuan untuk menghilangkan data model lokal konseptual untuk merubah fitur-fitur yang tidak kompatibel dengan model relasi.
1. Menghilangkan tipe relasi many-to-many (*..*) a.
b.
d.
f.
2. Menghilangkan atribut multi-value a. Wali
b. Siswa
c. Guru
d. Petugas_Loket
4.1.2.2. Menurunkan relasi-relasi ke model data logikal lokal Pada tahap ini bertujuan untuk membuat relasi pada mode data logikal lokal yang menggambarkan entiti-entiti, relasi-relasi dan atribut dimana telah diidentifikasi.
1. Strong entiti type
Tabel 4.6 Tipe Entiti Yang Kuat
Wali (Kd_wali, Nama_Ayah, Nama_Ibu, Alamat_Ayah, Alamat_Ibu,
Pekerjaan_Ayah, Pekerjaan_Ibu Nama_Wali, Alamat_Wali, Pekerjaan_wali) Primary key Kd_wali
Siswa (NIS, Nama_siswa, Tempat_lahir_siswa, Tgl_lahir_siswa, Alamat_siswa, Agama_siswa, Jenis_kelamin_siswa, Anak_ke, Status, kd_wali)
Primary key NIS
Tata_Usaha (Kode_TU, Nama_TU, Tempat_lahir_TU, Tgl_lahir_TU, Alamat_TU, Agama_TU, Jenis_kelamin_TU, Password_TU)
Primary key Kode_TU
Petugas_Loket (Kode_Petugas, Nama_Petugas, Tempat_lahir_petugas, Tgl_lahir_petugas, Alamat_ petugas, Agama_petugas, Jenis_kelamin_petugas, Password_petugas)
Primary key Kode_Petugas
Guru (Kode_Guru, Nama_Guru, Tempat_lahir_guru, Tgl_lahir_guru, Alamat_guru, Agama_guru, Jenis_kelamin_guru, Password_guru)
Primary key Kode_Guru
Kelas (Kode_kelas, Program_studi, Tingkatan, Jumlah_siswa, Walikelas, Tahun) Primary key Kode_kelas, Tahun, Walikelas
MatPel (Kode_matpel, Nama_matpel) Primary key Kode_matpel
SPP (NIS, Nama_siswa, Tgl_pembayaran, Kode_kelas, Tahun) Primary key NIS, Tgl_pembayaran, Kode_kelas, Tahun
Absensi (Kode_kelas, Tgl_absensi, Kode_guru, Nama_guru, Tahun) Primary key Tgl_absensi, Kode_Guru, Kode_Kelas, Tahun
Jadwal (Kode_jadwal, Kode_kelas, Tahun, Kode_matpel, Nama_matpel, Kode_guru, Nama_guru, Shift, Hari)
Primary key Kode_jadwal, Kode_Kelas, Tahun
Pelanggaran (Tgl_pelanggaran, kode_pelanggaran, kode_guru, Nama_guru) Primary key (Tgl_pelanggaran, kode_pelanggaran)
Penilaian (NIS, Nama_siswa, Kode_kelas, Tahun, Semester, Kode_matpel, Nama_matpel, Kode_guru, Nama_guru, Nilai, Nilai_Kurang) Primary key NIS, Kode_matpel, Semester, Tahun
Nilai_K (Kode_matpel, Tahun, Nilai_minimal) Primary Key (Kode_matpel, Tahun)
2. Weak entiti type
Tabel 4.7 Tipe Entiti Yang Lemah
Detail_SPP (NIS, Nama_siswa, Tgl_pembayaran, Bulan, Biaya, Denda, Kode_petugas, Nama_petugas)
Primary key None (at present)
Detail_jadwal (Kode_jadwal, Kode_kelas, Tahun, NIS, Nama_siswa) Primary key None (at present)
Detail_absensi (Kode_Kelas, NIS, Nama_siswa, Tgl_absensi, keterangan, Shift, Kode_Guru, Tahun)
Primary key None (at present)
Detail_pelanggaran (Kode_pelanggaran, Tgl_pelanggaran, NIS, Nama_siswa, Kode_guru, Nama_guru, Kode_Kelas, Tahun)
Primary key None (at present)
Detail_matpel (Kode_kelas, Kode_matpel, Nama_buku, tahun) Primary key None (at present)
Pengajar (Kode_guru, Kode_matpel, Tahun) Primary key None (at present)
Telp_ayah (Kd_ortu, No_telp_ayah) Primary key Kd_ortu, No_telp_ayah Telp_ibu (Kd_ortu, No_telp_ibu) Primary key Kd_ortu, No_telp_ibu Telp_wali (Kd_wali, No_telp) Primary key Kd_wali, No_telp Telp_siswa (NIS, No_telp) Primary key NIS, No_telp Telp_guru (Kode_guru, No_telp) Primary key Kode_guru, No_telp Telp_TU (Kode_TU, No_telp) Primary key Kode_TU, No_telp Telp_petugas (Kode_petugas, No_telp) Primary key Kode_petugas, No_telp
3. Tipe relasi biner one-to-many (1..*) a.
b.
d.
e.
g.
h.
j.
k.
4. Tipe relasi biner many-to-many (*..*) a.
c.
e.
f.
5. Tipe relasi biner one-to-one (1..1) a.
4.1.2.3. Normalisasi
Normalisasi adalah teknik untuk menghasilkan sekumpulan relasi dengan property yang diinginkan, memberikan persyaratan data. Pada tahap ini terdapat 3 fase, yaitu:
1. First Normal Form (1NF)
Sebuah relasi dikatakan dalam bentuk normal pertama jika dan hanya jika setiap atributnya bernilai tunggal. 2. Second Normal Form (2NF)
Sebuah relasi dikatakan dalam bentuk normal kedua jika dan hanya jika sudah berada pada bentuk normal pertama (1NF) dan semua atribut yang bukan primary key memiliki fully functionally dependent terhadap primary key.
3. Third Normal Form (3NF)
Sebuah relasi dikatakan dalam bentuk normal ketiga jika berada dalam bentuk normal kedua dan setiap atribut bukan primary key memiliki transitively dependent terhadap primary key.
4. Boyce – Codd Normal Form (BCNF)
Sebuah relasi dikatakan BCNF jika dan hanya jika semua determinan adalah candidate key.
Siswa
Entiti ini sudah mengalami normalisasi hingga tahap 3NF BCNF : Siswa (NIS, Nama_siswa, Tempat_lahir_siswa,
Tgl_lahir_siswa, Alamat_siswa, Agama_siswa, Jenis_kelamin_siswa, Anak_ke, Status, kd_wali) Telp_siswa (NIS, No_telp)
Wali (kd_wali)
Wali
Entiti ini sudah mengalami normalisasi hingga tahap 3NF BCNF : Wali (Kd_wali, , Nama_ayah, Nama_ibu, Alamat_ayah,
Alamat_ibu, Pekerjaan_ayah, Pekerjaan_ibu Nama_wali, Alamat_wali, Pekerjaan_wali) Telp_ayah (Kd_wali, No_telp_ayah)
Telp_ibu (Kd_wali, No_telp_ibu) Telp_wali (Kd_wali, No_telp)
Guru
Entiti ini sudah mengalami normalisasi hingga tahap 3NF BCNF : Guru (Kode_guru, Nama_ guru, Tempat_lahir_guru,
Tgl_lahir_guru, Alamat_ guru, Agama_guru, Jenis_kelamin_guru, Password_guru)
Tata_Usaha
Entiti ini sudah mengalami normalisasi hingga tahap 3NF BCNF : Tata_Usaha (Kode_TU, Nama_TU, Tempat_lahir_TU,
Tgl_lahir_TU, Alamat_TU, Agama_TU, Jenis_kelamin_TU, Password_TU) Telp_TU (Kode_TU, No_telp)
Petugas Loket
Entiti ini sudah mengalami normalisasi hingga tahap 3NF BCNF : Petugas_Loket (Kode_petugas, Nama_petugas,
Tempat_lahir_petugas, Agama_petugas, Tgl_lahir_petugas, Alamat_petugas, Jenis_kelamin_petugas,
Password_petugas) Telp_petugas (Kode_petugas, No_telp)
Kelas
Entiti ini sudah mengalami normalisasi hingga tahap 2NF 3NF : Kelas (Kode_kelas, Program_studi, Tingkatan,
Nilai_K
Entiti ini sudah mengalami normalisasi hingga tahap 2NF 3NF : Nilai_K (Kode_Matpel, Nama_matpel, Tahun,
Nilai_minimal)
Matpel (Kode_Matpel, Nama_matpel)
SPP
UNF : NIS, Nama_siswa, {Tgl_pembayaran, Kode_petugas, Nama_petugas}, Kode_kelas, Biaya, Denda, Bulan, Tahun
1NF : NIS, Nama_siswa, Tgl_pembayaran, Kode_petugas, Nama_petugas, Kode_kelas, Biaya, Denda, Bulan, Tahun
2NF : SPP (NIS, Nama_siswa, Tgl_pembayaran, Kode_Kelas, Tahun)
Detail_SPP (NIS, Tgl_pembayaran, Bulan, Biaya, Denda, Kode_petugas, Nama_petugas) 3NF : SPP (NIS, Tgl_pembayaran, Kode_Kelas, Tahun)
Detail_SPP (NIS, Tgl_pembayaran, Bulan, Biaya, Denda, Kode_petugas,)
Siswa (NIS, Nama_siswa) Kelas (Kode_kelas, Tahun)
Absensi
UNF : Kode_kelas, Shift, {NIS, Nama_siswa, keterangan}, Tgl_absensi, Kode_guru, Nama_guru, Tahun 1NF : Kode_kelas, NIS, Shift, Nama_siswa, Tgl_absensi,
keterangan, Kode_guru, Nama_guru, Tahun
2NF : Absensi (Kode_kelas, , Tahun , Tgl_absensi, Kode_guru, Nama_guru)
Detail_absensi (Tgl_absensi, Kode_guru, Nama_guru, Kode_Kelas, Tahun, NIS, Nama_siswa, Shift, Keterangan)
3NF : Absensi (Kode_kelas, Tgl_absensi, Kode_guru, Tahun) Detail_absensi (Tgl_absensi, Kode_guru, Kode_Kelas,
Tahun, NIS, Shift, Keterangan) Siswa (NIS, Nama_siswa)
Guru (Kode_guru, Nama_guru) Kelas (Kode_kelas, Tahun)
Jadwal
UNF : Kode_jadwal, {Kode_kelas, Kode_matpel,
Nama_matpel, Kode_guru, Nama_guru}, Shift, Hari, Tahun, NIS, Nama_siswa
1NF : Kode_jadwal, Kode_kelas, Tahun, Kode_matpel, Nama_matpel, Kode_guru, Nama_guru, Shift, Hari, NIS, Nama_siswa
2NF : Jadwal (Kode_jadwal, Kode_kelas, Tahun, Kode_matpel, Nama_matpel, Kode_guru, Nama_guru, Shift, Hari, NIS, Nama_siswa)
3NF : Jadwal (Kode_jadwal, Kode_kelas, Tahun, Kode_matpel, Kode_guru, Shift, Hari, NIS)
Siswa (NIS, Nama_siswa) Kelas (Kode_kelas, Tahun)
MatPel (Kode_matpel, Nama_matpel) Guru (Kode_guru, Nama_guru)
Detail_matpel (Kode_matpel, Kode_Kelas, Tahun, Nama_buku)
BCNF : Jadwal (Kode_jadwal, Kode_kelas, Tahun, Kode_matpel, Kode_guru, Shift, Hari)
Detail_jadwal (Kode_jadwal, Kode_kelas, Tahun, NIS) Detail_matpel (Kode_matpel, Kode_Kelas, Tahun,
Nama_buku) Siswa (NIS, Nama_siswa) Kelas (Kode_kelas, Tahun)
MatPel (Kode_matpel, Nama_matpel) Guru (Kode_guru, Nama_guru)
Pelanggaran
UNF : {Tgl_pelanggaran, Kode_pelanggaran, NIS},
Jenis_pelanggaran, Point, Kode_guru, Nama_guru, NIS, Nama_siswa, Kode_kelas, Tahun
1NF : Tgl_pelanggaran, Kode_pelanggaran, NIS,
Jenis_pelanggaran, Point, Kode_guru, Nama_guru, NIS, Nama_siswa, Kode_kelas, Tahun
2NF : Pelanggaran (Tgl_pelanggaran, Kode_Pelanggaran, Jenis_Pelanggaran, Point, Kode_guru, Nama_guru)
Detail_pelanggaran (Tgl_pelanggaran, NIS,
Kode_pelanggaran, Nama_siswa, Tahun, Kode_kelas)
3NF : Pelanggaran (Tgl_pelanggaran, Kode_Pelanggaran, Kode_guru)
Detail_pelanggaran (Tgl_pelanggaran, NIS, Kode_pelanggaran, Tahun, Kode_kelas)
Point (Kode_pelanggaran, Jenis_pelanggaran, Point) Guru (Kode_guru, Nama_guru)
Siswa (NIS, Nama_siswa) Kelas (Kode_kelas, Tahun)
Penilaian
Entiti ini sudah mengalami normalisasi hingga tahap UNF 1NF : Nilai, NIS, Nama_siswa, kode_kelas, Kode_matpel, Nama_matpel, Kode_guru, Nama_guru, Semester, Tahun, Nilai_Kurang
2NF : Penilaian (Nilai, NIS, Nama_siswa, kode_kelas, Kode_matpel, Nama_matpel, Kode_guru, Nama_guru, Semester, Tahun, Nilai_Kurang) 3NF : Penilaian (Nilai, NIS, kode_kelas, Kode_matpel,
Kode_guru, Semester, Tahun, Nilai_Kurang) Siswa (NIS, Nama_siswa)
MatPel (Kode_matpel, Nama_matpel) Guru (Kode_guru, Nama_guru)
Pengajar (Kode_matpel, Kode_guru, Tahun)
4.1.2.4. Pembuatan Model Basisdata Global Logikal
Pada tahap ini bertujuan untuk mengkombinasikan data model lokal logikal individu kedalam data model global logikal tunggal dimana menggambarkan kegiatan atau enterprise.
Tabel 4.8 Pembuatan Model Basisdata Logikal Global Wali (Kd_wali, Nama_ayah, Nama_ibu,
Alamat_ayah, Alamat_ibu, Pekerjaan_ayah, Pekerjaan_ibu Nama_wali, Alamat_wali, Pekerjaan_wali)
Primary Key Kd_wali
Telp_ayah (Kd_wali, No_telp_ayah) Primary Key Kd_wali, No_telp_ayah
Telp_ibu (Kd_wali, No_telp_ibu) Primary Key Kd_wali , No_telp_ibu
Telp_wali (Kd_wali, No_telp) Primary Key Kd_wali, No_telp
Siswa (NIS, Nama_siswa, Tempat_lahir_siswa,
Tgl_lahir_siswa, Alamat_siswa, Agama_siswa,
Jenis_kelamin_siswa, Anak_ke, Status, Kd_wali)
Primary Key NIS
Foreign Key Kd_wali reference Wali (Kd_wali)
Telp_siswa (NIS, No_telp) Primary Key NIS, No_telp
Guru (Kode_guru, Nama_guru, Tempat_lahir_guru,
Tgl_lahir_guru, Alamat_guru, Agama_guru, Jenis_kelamin_ guru,
Telp_guru (Kode_guru, No_telp) Primary Key Kode_guru, No_telp
password_guru) Primary Key Kode_guru
Tata_Usaha (Kode_TU, Nama_TU, Tempat_lahir_TU,
Tgl_lahir_TU, Alamat_TU, Agama_TU,
Jenis_kelamin_TU, password_TU) Primary Key Kode_TU
Telp_TU (Kode_TU, No_telp) Primary Key Kode_TU, No_telp
Petugas_Loket (Kode_petugas, Nama_petugas, Tempat_lahir_petugas, Tgl_lahir_petugas, Alamat_petugas, Agama_petugas, Jenis_kelamin_petugas, password_petugas) Primary Key Kode_petugas
Telp_petugas (Kode_petugas, No_telp) Primary Key Kode_petugas, No_telp
Kelas (Kode_kelas, Program_studi, Tingkatan, Jumlah_siswa, Walikelas, Tahun)
Primary Key Kode_kelas, Tahun
MatPel (Kode_matpel, Nama_matpel) Primary Key Kode_matpel
SPP (NIS, Tgl_pembayaran, Kode_Kelas, Tahun)
Primary Key NIS, Tgl_pembayaran Foreign Key Kode_kelas, Tahun reference Kelas (Kode_kelas, Tahun) Foreign Key NIS reference Siswa (NIS)
Detail_SPP (NIS, Tgl_Pembayaran, Bulan, Biaya, Denda, Kode_petugas)
Primary Key NIS, Tgl_pembayaran, Bulan
Foreign Key Kode_petugas reference Petugas_Loket (Kode_petugas)
Foreign Key NIS, Tgl_pembayaran reference SPP (NIS, Tgl_pembayaran) Absensi (Tgl_absensi, Kode_guru,
Kode_kelas, Tahun)
Primary Key Tgl_absensi, Kode_guru, Kode_kelas, Tahun Foreign Key Kode_kelas, Tahun reference Kelas (Kode_kelas, tahun) Foreign Key Kode_guru reference Guru (Kode_guru)
Detail_absensi (Tgl_absensi, NIS, Shift, Keterangan, Kode_guru, Kode_kelas, Tahun) Primary Key Tgl_absensi, NIS, Shift Foreign Key Tgl_absensi, Kode_guru, Kode_kelas, Tahun reference Absensi (Tgl_absensi, Kode_guru, Kode_kelas, Tahun)
Jadwal (Kode_jadwal, Kode_kelas, Tahun, Kode_matpel, Kode_guru, Shift, Hari)
Primary Key Kode_jadwal, Kode_kelas, Tahun
Foreign Key Kode_kelas, Tahun reference Kelas (Kode_kelas, Tahun) Foreign Key Kode_matpel reference
MatPel (Kode_matpel) Foreign Key Kode_guru reference Guru (Kode_guru)
Detail_jadwal (Kode_jadwal, Kd_kelas, Tahun, NIS)
Primary Key Kode_jadwal, Kode_kelas, Tahun, NIS
Foreign Key Kode_jadwal, Kode_kelas, Tahun reference Jadwal (Kode_jadwal, Kd_kelas, Tahun)
Foreign Key NIS reference Siswa (NIS)
Detail_matpel (Kode_kelas, Tahun, Kode_matpel, Nama_buku) Primary Key Kode_kelas, Tahun,
Kode_matpel
Foreign Key Kode_matpel reference MatPel (Kode_matpel) Foreign Key Kode_kelas, Tahun
reference Kelas (Kode_kelas, Tahun)
Point (Kode_pelanggaran, Jenis_pelanggaran, Point) Primary Key (Kode_pelanggaran)
Pelanggaran (Kode_pelanggaran, Tgl_pelanggaran, Kode_guru)
Primary Key (Kode_pelanggaran, Tgl_pelanggaran)
Foreign Key kode_pelanggaran reference Point (Kode_pelanggaran)
Detail_pelanggaran (Tgl_pelanggaran, Kode_pelanggaran, NIS, Tahun,
Kode_kelas) Primary Key (Kode_pelanggaran,
Tgl_pelanggaran, NIS) Foreign Key kode_pelanggaran,
Tgl_pelanggaran reference Pelanggaran
(Kode_pelanggaran, Tgl_pelanggaran)
Foreign Key NIS reference Siswa (NIS) Penilaian (NIS, Kode_matpel, Kode_guru,
Kode_kelas, Tahun, Nilai, Nilai_Kurang, Semester) Primary Key NIS, Kode_matpel, Semester, Tahun
Foreign Key NIS reference Siswa (NIS) Foreign Key Kode_kelas, Tahun
reference Kelas (Kode_kelas, Tahun)
Foreign Key Kode_matpel reference MatPel (Kode_matpel)
Pengajar (Kode_guru, Kode_matpel, Tahun)
Primary Key Kode_guru, Kode_matpel, Tahun
Foreign Key Kode_guru reference Guru (Kode_guru)
Foreign Key Kode_matpel reference MatPel (Kode_matpel)
Foreign Key Kode_guru reference Guru (Kode_guru)
Nilai_K (Kode_matpel, Nilai_minimal, Tahun)
Primary Key Kode_matpel, Tahun Foreign Key Kode_matpel reference
MatPel (Kode_matpel)
4.1.2.5. Model Diagram Relasional Global
Pada tahap ini bertujuan untuk memastikan bahwa model data logikal global mendukung transaksi-transaksi yang dibutuhkan oleh pengguna.
4.1.3. Perancangan Basisdata Fisikal
Perancangan basisdata fisikal adalah suatu proses yang menghasilkan sebuah deskripsi dari implementasi basis data di dalam secondary storage yang menggambarkan hubungan-hubungan dasar, organisasi file dan indeks-indeks yang digunakan dalam mencapai akses yang efisien terhadap data dan batasan-batasan integritas yang berasosiasi serta ukuran keamanannya.
4.1.3.1. Perancangan Rasional Basisdata
Langkah ini bertujuan untuk memutuskan bagaimana merepresentasikan base relation yang telah didefinisikan pada data model global logikal ke dalam sasaran DBMS. Adapun hasil dari langkah ini adalah sebagai berikut:
1. Wali
Domain Kode_Wali : Variable integer
Domain Nama_ayah : Variable character string, length 50
Domain Nama_ibu : Variable character string, length 50
Domain Alamat_ayah : Variable character string, length 225
Domain Alamat_ibu : Variable character string, length 225
Domain Pekerjaan_ayah : Variable character string, length 50
Domain Pekerjaan_ibu : Variable character string, length 50
Domain Nama_wali : Variable character string, length 50
Domain Alamat_wali : Variable character string, length 225
Domain Pekerjaan_wali : Variable character string, length 50
CREATE TABLE Wali (
Kode_wali integer NOT NULL, Nama_ayah varchar (50) NOT NULL, Nama_ibu varchar (50) NOT NULL, Nama_wali varchar (50) NOT NULL, Alamat_ayah varchar (225) NOT NULL, Alamat_ibu varchar (225) NOT NULL, Alamat_wali varchar (225) NOT NULL, Pekerjaan_ayah varchar (50) NOT NULL, Pekerjaan_ibu varchar (50) NOT NULL, Pekerjaan_wali varchar (50) NOT NULL, PRIMARY KEY (kode_wali)
2. Telp_ayah
Domain Kode_ortu : Variable integer
Domain No_telp_ayah : Variable character string, length 20
CREATE TABLE Telp_ayah (
Kode_ortu integer NOT NULL,
No_telp_ayah varchar (20) NOT NULL, PRIMARY KEY (kode_ortu, No_telp_ayah),
FOREIGN KEY (kd_ortu) REFERENCES Ortu ON UPDATE CASCADE ON DELETE NO ACTION )
3. Telp_ibu
Domain Kode_ortu : Variable integer
Domain No_telp_ibu : Variable character string, length 20
CREATE TABLE Telp_ibu (
Kode_ortu integer NOT NULL,
No_telp_ibu varchar (20) NOT NULL, PRIMARY KEY (Kode_ortu, No_telp),
FOREIGN KEY (Kode_ortu) REFERENCES Ortu ON UPDATE CASCADE ON DELETE NO ACTION )
4. Telp_wali
Domain Kode_wali : Variable integer
Domain No_telp_wali : Variable character string, length 20
CREATE TABLE Telp_wali (
Kode_wali integer NOT NULL, No_telp varchar (20) NOT NULL, PRIMARY KEY (Kode_wali, No_telp),
FOREIGN KEY (Kode_wali) REFERENCES Wali ON UPDATE CASCADE ON DELETE NO ACTION
)
5. Siswa
Domain NIS : Variable character string, length 6
Domain Nama_siswa : Variable character string, length 50
Domain Tempat_lahir_siswa : Variable character string, length 50
Domain Tgl_lahir_siswa : Variable character string, length 25
Domain Alamat_siswa : Variable character string, length 225
Domain Agama_siswa : Variable character string, length 25
Domain Jenis_kelamin_siswa : Variable character string, length 20
Domain Anak_ke : Variable character string, length 5
Domain Status : Variable character string, length 20
Domain Kode_wali : Variable integer CREATE TABLE Siswa
(
NIS varchar (6) NOT NULL,
Nama_siswa varchar (50) NOT NULL, Alamat_siswa varchar (225) NOT NULL, Tempat_lahir_siswa varchar (50) NOT NULL, Tgl_lahir_siswa varchar (25) NOT NULL, Agama_siswa varchar (25) NOT NULL, Jenis_kelamin_siswa varchar (1) NOT NULL, Anak_ke varchar (5) NOT NULL,
Status varchar (20) NOT NULL, PRIMARY KEY (NIS),
FOREIGN KEY (Kode_wali) REFERENCES Wali ON UPDATE CASCADE ON DELETE NO ACTION )
6. Telp_siswa
Domain NIS : Variable character string, length 6
Domain No_telp _siswa : Variable character string, length 20
CREATE TABLE Telp_siswa (
NIS varchar (6) NOT NULL, No_telp varchar (20) NOT NULL, PRIMARY KEY (NIS, No_telp),
FOREIGN KEY (NIS) REFERENCES Siswa ON UPDATE CASCADE ON DELETE NO ACTION )
7. Guru
Domain Kode_guru : Variable character string, length 10
Domain Nama_guru : Variable character string, length 50
Domain Tempat_lahir_guru : Variable character string, length 50
Domain Tgl_lahir_guru : Variable caracter string, Length 25
Domain Alamat_guru : Variable character string, length 225
Domain Jenis_kelamin_guru : Variable character string, length 25
Domain Agama_guru : Variable character string, length 20
Domain Password_guru : Variable character string, length 10
CREATE TABLE Guru (
Kode_guru varchar (10) NOT NULL, Nama_guru varchar (50) NOT NULL, Alamat_guru varchar (225) NOT NULL, Tempat_lahir_guru varchar (50) NOT NULL, Tgl_lahir_guru varchar (25) NOT NULL, Agama_guru varchar (25) NOT NULL, Jenis_kelamin_guru varchar (1) NOT NULL, Password_guru varchar (10),
PRIMARY KEY (Kode_guru) )
8. Telp_guru
Domain Kode_guru : Variable character string, length 10
Domain No_telp : Variable character string, length 20
CREATE TABLE Telp_guru (
Kode_guru varchar (10) NOT NULL, No_telp char (20) NOT NULL, PRIMARY KEY (Kode_guru, No_telp)
FOREIGN KEY (Kode_guru) REFERENCE Guru ON UPDATE CASCADE ON DELETE NO ACTION )
9. Tata_Usaha
Domain Kode_TU : Variable character string, length 10
Domain Nama_TU : Variable character string, length 25
Domain Tempat_lahir_TU : Variable character string, length 20
Domain Tgl_lahir_TU : Variable date, format longdate
Domain Alamat_TU : Variable character string, length 50
Domain Agama_TU : Variable character string, length 10
Domain Jenis_kelamin_TU : Variable character string, length 1
Domain Password_TU : Variable character string, length 10
CREATE TABLE Tata_Usaha
( Kode_TU varchar (10) NOT NULL, Nama_TU varchar (50) NOT NULL, Alamat_TUu varchar (225) NOT NULL, Tempat_lahir_TU varchar (50) NOT NULL, Tgl_lahir_TU varchar (25) NOT NULL, Agama_TU varchar (25) NOT NULL, Jenis_kelamin_TU varchar (1) NOT NULL, Password_TU varchar (10),
PRIMARY KEY (Kode_TU) )
10.Telp_TU
Domain Kd_TU : Variable character string, length 10
Domain No_telp_TU : Variable character string, length 20
CREATE TABLE Telp_TU (
No_telp varchar (20) NOT NULL, PRIMARY KEY (Kode_TU),
FOREIGN KEY (Kode_TU) REFERENCES
Tata_Usaha ON UPDATE CASCADE ON DELETE NO ACTION
)
11.Petugas_Loket
Domain Kode_petugas : Variable character string, length 10
Domain Nama_petugas : Variable character string, length 50
Domain Tempat_lahir_petugas : Variable character string, length 50
Domain Tgl_lahir_petugas : Variable character string, Length 25
Domain Alamat_petugas : Variable character string, length 225
Domain Agama_petugas : Variable character string, length 25
Domain Jenis_kelamin_petugas : Variable character string, length 1
Domain Password_petugas : Variabel character string,
CREATE TABLE Petugas_Loket (
Kode_petugas varchar (10) NOT NULL, Nama_petugas varchar (50) NOT NULL, Alamat_petugas varchar (225) NOT NULL, Tempat_lahir_petugas varchar (50) NOT NULL, Tgl_lahir_petugas varchar (25) NOT NULL, Agama_petugas varchar (25) NOT NULL, Jenis_kelamin_petugas varchar (1) NOT NULL, Password_petugas varchar (10) NOT NULL, PRIMARY KEY (Kode_ petugas)
)
12.Telp_petugas
Domain Kode_petugas : Variable character string, length 10
Domain No_telp : Variable character string, length 20
CREATE TABLE Telp_petugas (
Kode_petugas varchar (10) NOT NULL, No_telp varchar (20),
PRIMARY KEY (Kode_petugas, No_telp),
FOREIGN KEY (Kode_petugas) REFERENCES Petugas_Loket ON UPDATE CASCADE ON DELETE NO ACTION
)
13.Kelas
Domain Kode_kelas : Variable character string, length 6
Domain Program_studi : Variable character string, length 25
Domain Tingkatan : Variable character string, length 10
Domain Jumlah_siswa : Variable character string,
length 6
Domain Walikelas : Variable character string, length 50
Domain Tahun : Variable character string, length 10
CREATE TABLE Kelas (
Kode_kelas varchar (6) NOT NULL, Tingkatan varchar (10) NOT NULL,
Program_studi varchar (25) NOT NULL, Jumlah_siswa varchar (6) NOT NULL, Walikelas varchar (50) NOT NULL, Tahun varchar (10) NOT NULL, PRIMARY KEY (Kode_ kelas, Tahun) )
14.MatPel
Domain Kode_matpel : Variable character string, length 6
Domain Nama_matpel : Variable character string, length 50
CREATE TABLE MatPel (
Kode_matpel varchar (6) NOT NULL, Nama_matpel varchar (50) NOT NULL, PRIMARY KEY (Kode_ matpel)
)
15.Detail_matpel
Domain Kode_kelas : Variable character string, length 6
Domain Kode_matpel : Variable character string, length 6
length 50
Domain Tahun : Variabel character string, length 10
CREATE TABLE Detail_matpel (
Kode_matpel varchar (6) NOT NULL, Kode_kelas varchar (6) NOT NULL, Nama_buku varchar (50) NOT NULL, Tahun varchar (10) NOT NULL,
PRIMARY KEY (Kode_ matpel, Kode_kelas, Tahun), FOREIGN KEY (Kode_matpel) REFERENCES MatPel ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (Kode_kelas) REFERENCES Kelas ON UPDATE CASCADE ON DELETE NO ACTION )
16.Pengajar
Domain Kode_guru : Variable character string, length 10
Domain Kode_matpel : Variable character string, length 6
Domain Tahun : Variable character string, length 10
CREATE TABLE Pengajar (
Kode_matpel varchar (6) NOT NULL, Kode_guru varchar (10) NOT NULL, Tahun varchar (10) NOT NULL,
PRIMARY KEY (Kode_guru, Kode_matpel, Tahun), FOREIGN KEY (Kode_guru) REFERENCES Guru ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (Kode_matpel) REFERENCES MatPel ON UPDATE CASCADE ON DELETE NO ACTION )
17.SPP
Domain NIS : Variable character string, length 6
Domain Tgl_pembayaran : Variable character string, length 25
Domain Kode_Kelas : Variable character string, length 8
Domain Tahun : Variable character string, length 10
CREATE TABLE SPP (
Tgl_Pembayaran varchar (25) NOT NULL, Kode_kelas varchar (8) NOT NULL, Tahun varchar (10) NOT NULL, PRIMARY KEY (NIS, Tgl_pembayaran),
FOREIGN KEY (NIS) REFERENCES Siswa ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (Kode_kelas, Tahun) REFERENCES Kelas ON UPDATE CASCADE ON DELETE NO ACTION
)
18.Detail_SPP
Domain NIS : Variable character string, length 6
Domain Tgl_pembayaran : Variable character string, length 25
Domain Denda : Money
Domain Bulan : Variable character string, length 20
Domain Biaya : Money
Domain Kd_petugas : Variable character string, length 10
CREATE TABLE Detail_SPP (
NIS varchar (6) NOT NULL,
Tgl_Pembayaran varchar (25) NOT NULL, Bulan varchar (20) NOT NULL,
Biaya money NOT NULL, Denda money NOT NULL,
Kode_petugas varchar (10) NOT NULL, PRIMARY KEY (NIS, Tgl_pembayaran, Bulan), FOREIGN KEY (NIS, Tgl_pembayaran)
REFERENCES SPP ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (Kode_petugas) REFERENCES Petugas_Loket ON UPDATE CASCADE ON DELETE NO ACTION
)
19.Jadwal
Domain Kode_jadwal : Variable character string, length 6
Domain Kode_kelas : Variable character string, length 8
Domain Kode_matpel : Variable character string, length 6
Domain Kode_guru : Variable character string, length 10
Domain Shift : Variable character string, length 15
Domain Hari : Variable character string, length 6
Domain Tahun : Variable character string, length 10
CREATE TABLE Jadwal (
Kode_jadwal varchar (6) NOT NULL, Kd_kelas varchar (8) NOT NULL, Kd_matpel varchar (6) NOT NULL, Kd_guru varchar (10) NOT NULL, Shift varchar (15) NOT NULL, Hari varchar (6) NOT NULL, Tahun varchar (10) NOT NULL,
PRIMARY KEY (Kd_ jadwal, Kd_kelas, Tahun),
FOREIGN KEY (Kd_kelas, Tahun) REFERENCES Kelas ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (Kode_matpel) REFERENCES MatPel ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (Kode_guru) REFERENCE Guru ON UPDATE CASCADE ON DELETE NO ACTION )
20.Detail_jadwal
Domain Kode_jadwal : Variable character string, length 6
Domain Kode_kelas : Variable character string, length 8
Domain Tahun : Variable character string, length 10
Domain NIS : Variable character string, length 6
CREATE TABLE Detail_jadwal (
Kode_jadwal varchar (6) NOT NULL, Kode_kelas varchar (6) NOT NULL, Tahun varchar (10) NOT NULL, NIS varchar (6) NOT NULL,
PRIMARY KEY (Kode_jadwal, Kode_kelas, Tahun, NIS),
FOREIGN KEY (NIS) REFERENCES Siswa ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (Kode_jadwal, Kode_kelas, Tahun) REFERENCES Jadwal ON UPDATE CASCADE ON DELETE NO ACTION
21.Absensi
Domain Kode_guru : Variable character string, length 6
Domain Tgl_absensi : Variable character string length 25
Domain kode_kelas : Variable character string, length 8
Domain Tahun : Variable character string, length 10
CREATE TABLE Absensi
( Kode_guru varchar (10) NOT NULL, Tgl_absensi varchar (25) NOT NULL, tahun varchar (10) NOT NULL, Kode_kelas varchar (8) NOT NULL,
PRIMARY KEY (Tgl_absensi, Kode_Kelas, Tahun, Kode_guru),
FOREIGN KEY (Kode_kelas) REFERENCES Kelas ON UPDATE CASCADE ON DELETE NO ACTION
)
22.Detail_absensi
Domain Kode_kelas : Variable character string, length 8
length 6
Domain Tgl_absensi : Variable character string, length 25
Domain Shift : Variable character string, length 15
Domain Kode_guru : Variable character string, Length 10
Domain Tahun : Variable character string, length 10
Domain Keterangan : Variable character string, length 10
CREATE TABLE Detail_Absensi (
NIS varchar (6) NOT NULL,
Tgl_absensi varchar (25) NOT NULL, Kode_kelas varchar (8) NOT NULL, Kode_guru varchar (10) NOT NULL, Tahun varchar (10) NOT NULL, Keterangan varchar (10) NOT NULL, Shift varchar (15) NOT NULL,
PRIMARY KEY (NIS, Tgl_absensi, Shift),
FOREIGN KEY (NIS, Tgl_absensi, Kode_Kelas, Tahun, Kode_guru) REFERENCES Absensi ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (NIS) REFERENCES Siswa ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (Kode_guru) REFERENCES Guru ON UPDATE CASCADE ON DELETE NO ACTION
)
23.Point
Domain Kode_pelanggaran : Variable character string, length 6
Domain Jenis_pelanggaran : Variable character string, length 50
Domain Point : Integer CREATE TABLE Point
(
Kode_pelanggaran varchar (6) NOT NULL, Jenis_pelanggaran varchar (50) NOT NULL, Point integer NOT NULL,
PRIMARY KEY (Kode_pelanggaran) )
24.Pelanggaran
Domain Kode_guru : Variable character string, length 6
length 25 CREATE TABLE Detail_pelanggaran (
Tgl_pelanggaran varchar (25) NOT NULL, Kode_guru char (10) NOT NULL,
PRIMARY KEY (Tgl_pelanggaran, Kode_guru),
FOREIGN KEY (Kode_pelanggaran) REFERENCES Point ON UPDATE CASCADE ON DELETE NO ACTION
)
25.Detail_pelanggaran
Domain Kode_pelanggaran : Variable character string, length 6
Domain Tgl_pelanggaran : Variable character string length 25
Domain NIS : Variable character string, length 6
Domain Kode_guru : Variable character string, length 10
Domain Tahun : Variable character string, length 10
Domain Kode_kelas : Variable character string, length 8
CREATE TABLE Detail_pelanggaran (
NIS varchar (6) NOT NULL,
Tgl_pelanggaran varchar (25) NOT NULL, Kode_pelanggaran varchar (6) NOT NULL, Kode_kelas varchar (8) NOT NULL,
Kode_guru char (10) NOT NULL, Tahun char (10) NOT NULL,
PRIMARY KEY (NIS, Tgl_pelanggaran, Kode_pelanggaran),
FOREIGN KEY (NIS) REFERENCES Siswa ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (Kode_guru) REFERENCES Guru ON UPDATE CASCADE ON DELETE NO ACTION )
26.Penilaian
Domain NIS : Variable character string, length 6
Domain Kode_matpel : Variable character string, length 6
Domain Semester : Variable character string, length 10
length 10 Domain Nilai : Integer Domain Nilai_Kurang : Integer
Domain Kode_kelas : Variable character string, length 8
Domain Kode_guru : Variable character string, length 10
CREATE TABLE Penilaian (
NIS varchar (6) NOT NULL,
Kode_matpel varchar (6) NOT NULL, Kode_guru varchar (10) NOT NULL, Kode_kelas varchar (8) NOT NULL, Nilai integer NOT NULL,
Nilai_Kurang integer NOT NULL, Semester varchar (10) NOT NULL, Tahun varchar (10) NOT NULL,
PRIMARY KEY (NIS, Kode_matpel, Semester, Tahun), FOREIGN KEY (Kode_matpel) REFERENCES MatPel ON UPDATE CASCADE ON DELETE NO ACTION, FOREIGN KEY (NIS) REFERENCES Siswa ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (Kode_kelas, Tahun) REFERENCES Kelas ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY (Kode_guru) REFERENCES Guru ON UPDATE CASCADE ON DELETE NO ACTION )
27.Nilai_K
Domain Kode_matpel : Variable character string, length 6
Domain Tahun : Variable character string length 10
Domain Nilai_minimal : Integer CREATE TABLE Nilai_K
(
Kode_matpel char (6) NOT NULL, Tahun varchar (10) NOT NULL, Nilai_minimal integer NOT NULL, PRIMARY KEY (Kode_matpel, Tahun),
FOREIGN KEY (Kode_matpel) REFERENCES MatPel ON UPDATE CASCADE ON DELETE NO ACTION )
4.1.3.2. Merancang Constraints
Tujuan dari langkah ini adalah untuk merancang constraints sekolah dalam DBMS. Beberapa constraints yang digunakan dalam DBMS adalah sebagai berikut:
1. Batas waktu pembayaran SPP setiap bulannya tidak boleh melewati tanggal 10
CONSTRAINT BayarDenda
CHECK (NOT EXIST (SELECT DAY (Tgl_pembayaran) AS Tanggal FROM Detail_SPP WHERE DAY
(Tgl_pembayaran)>10))
2. Jumlah absensi alpha tidak boleh lebih dari tiga hari dalam satu semester
CONSTRAINT AbsensiBerlebih
CHECK (NOT EXIST (SELECT NIS, COUNT (keterangan) AS Jumlah_Alpha FROM Detail_absensi WHERE keterangan=‘Alpha’ GROUP BY NIS HAVING COUNT (keterangan)>3))
3. Siswa tidak boleh memiliki nilai kurang lebih dari 3 CONSTRAINT NilaiKurangBerlebih
CHECK (NOT EXIST (SELECT NIS, COUNT (Nilai_Kurang) AS NilaiKurang FROM Penilaian
GROUP BY NIS HAVING COUNT (Nilai_Kurang)>3)) 4. Siswa tidak boleh memiliki point pelanggaran lebih dari 10
CONSTRAINT PointPelanggaranBerlebih
CHECK (NOT EXIST (SELECT NIS, COUNT (point) AS Jumlah FROM Detail_pelanggaran, Pelanggaran, Point WHERE Detail_pelanggaran.Kd_pelanggaran=
Pelanggaran.Kd_pelanggaran = Point. Kode_pelanggaran GROUP BY NIS HAVING COUNT (Point)>10)) 4.1.3.3. Analisis Transaksi
Pada tahap ini bertujuan untuk memahami kegunaan dari transaksi-transaksi yang dijalankan dalam database dan untuk menganalisa transaksi yang penting.
Tabel 4.9 Analisis Transaksi Transaksi A B C D Relation R U D I R U D I R U D I R U D I Telp_ayah X Telp_ibu X Wali X Telp_wali X Siswa X Telp_siswa X Guru X Telp_guru X Petugas_Loket X Telp_petugas X Tata_Usaha X X X X X Telp_TU X Kelas MatPel Detail_matpel Pengajar SPP Detail_SPP Jadwal Detail_jadwal Absensi Detail_absensi Pelanggaran Detail_pelanggaran Point Penilaian Nilai_K
A. Memasukan Data Siswa
B. Memasukan Data Guru C. Memasukan Data Petugas D. Memasukan Data Tata Usaha
Transaksi E F G H Relation R U D I R U D I R U D I R U D I Telp_ayah X X X X Telp_ibu X X X X Wali X X X X Telp_wali X X X X Siswa X X X X Telp_siswa X X X X Guru X X X X Telp_guru X X X X Petugas_Loket X X X X Telp_petugas X X X X Tata_Usaha X X X X Telp_TU X X X X Kelas MatPel Detail_matpel Ket_matpel SPP Detail_SPP Jadwal Detail_jadwal Absensi Detail_absensi Pelanggaran Detail_pelanggaran Point Penilaian Nilai_K
E. Mengedit Database Siswa F. Mengedit Database Guru G. Mengedit Database Petugas H. Mengedit Database Tata Usaha
Transaksi I J K L Relation R U D I R U D I R U D I R U D I Telp_ayah Telp_ibu Wali Telp_wali Siswa Telp_siswa Guru X Telp_guru Petugas_Loket X X X Telp_petugas Tata_Usaha X X Telp_TU Kelas MatPel Detail_matpel Ket_matpel SPP X X X Detail_SPP X X Jadwal X X Detail_jadwal X X Absensi Detail_absensi Pelanggaran Detail_pelanggaran Point Penilaian Nilai_K
I. Mengecek status pembayaran siswa J. Memasukan data pembayaran siswa
K. Mengecek jumlah denda yang harus dibayar siswa berdasarkan SPP L. Dapatkan data guru untuk membuat jadwal
Transaksi M N O P Relation R U D I R U D I R U D I R U D I Telp_ayah Telp_ibu Wali Telp_wali Siswa Telp_siswa Guru Telp_guru Petugas_Loket Telp_petugas Tata_Usaha Telp_TU Kelas MatPel Detail_matpel Ket_matpel SPP Detail_SPP Jadwal Detail_jadwal Absensi X Detail_absensi X Pelanggaran X Detail_pelanggaran X Point Penilaian X Nilai_K
M. Memasukan absensi siswa N. Memasukan data nilai siswa
O. Memasukan data pelanggaran siswa P. Memasukan data kenaikan siswa
4.1.3.4. Mengestimasi Kapasitas Penyimpanan yang dibutuhkan Tujuan dari perkiraan disk space adalah untuk menghitung kapasitas penyimpan yang dibutuhkan untuk basisdata.
Berikut ini adalah perkiraan disk space :
Tujuan dari langkah ini adalah untuk menghitung kapasitas penyimpanan yang dibutuhkan oleh basisdata. Hal yang harus diperhatikan adalah seberapa besar ruang penyimpanan yang tersedia saat ini. Penyimpanan yang tersedia saat ini akan menentukan besarnya kapasitas penyimpanan yang dibutuhkan sekarang dan lima tahun mendatang.
Pada target DBMS dapat ditentukan besar data tiap tabel. Sehingga besar data untuk tiap tipe data adalah sebagai berikut:
a. Varchar (n) = n + 2 byte + (2 byte untuk tiap 1 tabel) b. Datetime (8 byte)
c. Integer(4 byte) d. Money (8 byte)
Fill factor yang dipakai adalah 0-100 dengan besar data yang digunakan dijelaskan dalam tabel-tabel perhitungan kapasitas penyimpanan sebagai berikut:
Tabel Num_Rows Pertumbuhan tiap tahun ( baris ) Num_Rows ( 5 tahun ) Siswa 322 150 1.072 Wali 100 75 475 Guru 36 5 61 Petugas_Loket 4 2 14 Tata_Usaha 2 2 12 Matpel 16 0 16 Kelas 10 3 25 Detail_Matpel 10 48 250 Pengajar 108 15 153 SPP 3.864 1800 12.864 Detail_SPP 3.864 1800 12.864 Jadwal 6 2 16 Detail_jadwal 1.932 1.200 7.932 Absensi 9.660 115.920 125.580 Detail_absensi 9.660 115.920 125.580 Point 51 2 61 Pelanggaran 360 360 2.160 Detail_Pelanggaran 966 18.000 270.966 Nilai_K 16 16 96 Penilaian 5.152 14.400 77.152
Telp_siswa 644 300 2.144 Telp_ayah 966 450 3.216 Telp_ibu 966 450 3.216 Telp_wali 966 225 2.091 Telp_guru 108 15 183 Telp_TU 6 6 36 Telp_petugas 12 6 42 Keterangan:
a. Num_Rows: jumlah baris
b. Pertumbuhan Data Tiap Tahun: besar pertumbuhan data tiap tahun.