BAB 4 PERANCANGAN BASIS DATA
4.1 Database Planning Pernyataan Misi : Perancangan basis data berbasis web PT. Tatalogam Lestari bertujuan untuk mempermudah karyawan melihat absensi dan menampilkan daftar gaji. Pernyataan Tujuan : •
Untuk mengetahui status absensi karyawan sendiri
•
Untuk melihat rincian gaji tiap bulan
•
Untuk mengelola (memasukkan, memperbaharui, dan menghapus) data karyawan
•
Untuk mencari data karyawan
•
Untuk melaporkan daftar absensi
•
Untuk melaporkan daftar gaji
57
58
4.2 System Definition
Karyawan
Absensi
Manager
HRD
Gaji
Batasan Sistem
Gambar 4.1 Definisi sistem Keterangan : •
Karyawan berhubungan dengan absensi
•
Absensi berhubungan dengan HRD
•
Gaji berhubungan dengan Absensi
•
HRD memberikan laporan gaji kepada manager
59
4.3 Requirement collection and Analysis Tabel 4.1 Analisis dan pengumpulan kebutuhan Bagian Data
Tipe akses
HRD
Manager
Karyawan MsKaryawan
Query View
X X
X
Surat Laporan Absensi
Query View
X X
X
Surat Laporan Jabatan
Query View
X X
X
Surat Laporan Jam Kerja
X
Query View Surat
X X
X
60
Laporan Izin
Query
X
View
X
Surat Laporan Divisi
Query
X
View
X
X
Surat Laporan
4.4 Database Design 4.4.1 Conceptual Database Design 4.4.1.1 Identifikasi tipe entitas Tabel 4.2 Identifikasi tipe entitas Nama Entitas MsKaryawan
Deskripsi
Kejadian
Mendeskripsikan Orang
Setiap karyawan
yang melakukan
melakukan satu atau
pekerjaan di dalam
lebih absensi
perusahaan
61
Absensi
Mendeskripsikan semua Setiap absensi dapat absensi karyawan
dilakukan satu atau lebih karyawan
Jabatan
Jam Kerja
Mendeskripsikan
Setiap jabatan
jabatan karyawan di
dimiliki oleh satu
perusahan
karyawan
Mendeskripsikan
Setiap jam kerja
lamanya karyawan
dibuat berdasarkan
bekerja
satu atau lebih absensi
Izin
Mendeskripsikan
Setiap izin dibuat
karyawan yang izin
berdasarkan satu atau lebih absensi
Divisi
Mendeskripsikan divisi
Setiap divisi
karyawan di perusahaan
dimiliki satu lebih jabatan
4.4.1.2 Mengidentifikasi tipe hubungan Tabel 4.3 Identifikasi tipe hubungan Multiplicit Nama Entitas
y
Multiplicit Hubungan
Nama Entitas
y
62
Melakuka MsKaryawan
1..1
n
Absensi
1..*
1..*
Memiliki
Divisi
1..1
Melakuka 1..1
n
Izin
1..*
1..*
Memiliki
JamKerja
1..1
Jam Kerja
1..1
Dimiliki
MsKaryawan
1..*
Izin
1..*
Dilakukan
MsKaryawan
1..1
Jabatan
1..1
Dimiliki
MsKaryawan
1..*
Absensi
1..*
Dilakukan
MsKaryawan
1..1
Divisi
1..1
Mendasari
Jabatan
1..*
Gambar 4.2 ERD Konseptual awal
63
4.4.1.3 Mengidentifikasi dan mengaitkan atribut dengan tipe entitas atau hubungan Nama Entitas : MsKaryawan Tabel 4.4 Entitas MsKaryawan Atribut
Deskripsi
Tipe Data dan
Nulls
MultiValued Derived
panjang
Atribute
KaryawanID
ID Karyawan
Char (5)
Tidak
Tidak
Tidak
Nama
Nama Karyawan
Varchar(25)
Tidak
Tidak
Tidak
Password
Char(32)
Tidak
Tidak
Tidak
Text
Tidak
Tidak
Tidak
Karyawan Password
Karyawan Alamat
Alamat Karyawan
Email
Email Karyawan
Varchar(30)
Tidak
Tidak
Tidak
Kontak
Kontak
Varchar(15)
Tidak
Tidak
Tidak
Karyawan Role
Role
Varchar(10)
Tidak
Tidak
Tidak
Jenis Kelamin
Jenis Kelamin
Enum(‘Laki-
Tidak
Tidak
Tidak
Karyawan
laki’,’Perempuan’)
Foto
Foto Karyawan
Varchar(100)
Tidak
Tidak
Tidak
CreatedDate
Tanggal
Datetime
Tidak
Tidak
Tidak
64
Registrasi IsActive
Status Karyawan Enum (‘1’,’0’)
Tidak
Tidak
Tidak
active atau tidak JamKerjaID
ID jam kerja
Int(11)
Tidak
Tidak
Tidak
NamaJamKerja
Nama jam kerja
Varchar (10)
Tidak
Tidak
Tidak
JabatanID
ID Jabatan
Int(11)
Tidak
Tidak
Tidak
NamaJabatan
Nama Jabatan
Varchar (20)
Tidak
Tidak
Tidak
Nama Entitas : Absensi Tabel 4.5 Entitas Absensi Atribut
Deskripsi
Tipe
Data Nulls
MultiValued Derived
dan panjang
Atribute
AbsensiID
Id Absensi
Int (11)
Tidak
Tidak
Tidak
TanggalAbsensi
Tanggal Absen
Datetime
Tidak
Tidak
Tidak
JamMasuk
Jam masuk kerja
Datetime
Ya
Tidak
Tidak
JamKeluar
Jam keluar kerja
Datetime
Ya
Tidak
Tidak
KaryawanID
Id Karyawan
Char (5)
Tidak
Tidak
Tidak
NamaKaryawan
Nama karyawan
Varchar
Tidak
Tidak
Tidak
(25)
65
Nama Entitas : Jabatan Tabel 4.6 Entitas Jabatan Atribut
Deskripsi
Tipe
Data Nulls
MultiValued Derived
dan panjang
Atribute
JabatanID
Id Jabatan
Int(11)
Tidak
Tidak
Tidak
NamaJabatan
Nama Jabatan
Varchar(20) Tidak
Tidak
Tidak
GajiPokok
Gaji pokok
Int(11)
Tidak
Tidak
Tidak
Tunjangan
Tunjangan
Int (11)
Tidak
Tidak
Tidak
karyawan UpahHarian
Upah harian
Int (11)
Tidak
Tidak
Tidak
DivisiID
Id Divisi
Int (11)
Tidak
Tidak
Tidak
Nama Entitas : Divisi Tabel 4.7 Entitas Divisi Atribut
Deskripsi
Tipe
Data Nulls
MultiValued Derived
dan panjang
Atribute
DivisiID
Id Divisi
Int(11)
Tidak
Tidak
Tidak
NamaDivisi
Nama Divisi
Varchar(20) Tidak
Tidak
Tidak
66
Nama Entitas : Jamkerja Tabel 4.8 Entitas Jamkerja Atribut
Deskripsi
Tipe
Nulls
MultiValued Derived
Data dan
Atribute
panjang JamKerjaID
Id jam kerja
Int (11)
Tidak
Tidak
Tidak
NamaJamKerja
Nama jam kerja
Varchar
Tidak
Tidak
Tidak
(10) JamDatang
Jam masuk kerja
Datetime
Tidak
Tidak
Tidak
BatasAwalCheckIn
Batas awal
Datetime
Tidak
Tidak
Tidak
Datetime
Tidak
Tidak
Tidak
Datetime
Tidak
Tidak
Tidak
Datetime
Tidak
Tidak
Tidak
Datetime
Tidak
Tidak
Tidak
CheckIn BatasAkhirCheckIn
Batas akhir CheckIn
BatasAwalCheckOut
Batas awal CheckOut
BatasAwalCheckOutSabtu Batas awal CheckOutSabtu BatasAkhirCheckOut
Batas akhir CheckOut
67
Nama Entitas : Izin Tabel 4.9 Entitas Izin Atribut
Deskripsi
Tipe
Data Nulls
MultiValued
dan panjang
Derived Atribute
IzinID
ID izin
Int(11)
Tidak
Tidak
Tidak
Keterangan
Keterangan Izin
Varchar(15)
Tidak
Tidak
Tidak
TanggalMulai
Tanggal mulai izin
Datetime
Tidak
Tidak
Tidak
TanggalSelesai
Tanggal selesai izin
Datetime
Tidak
Tidak
Tidak
KaryawanID
ID karyawan
Char (5)
Tidak
Tidak
Tidak
NamaKaryawan
Nama karyawan
Varchar
Tidak
Tidak
Tidak
(25)
4.4.1.4 Menentukan Domain Atribut Nama Entitas : MsKaryawan Tabel 4.10 Domain Atribut MsKaryawan Atribut
Domain Atribut
KaryawanID
Char (5)
NamaKaryawan
Varchar(25)
Password
Char (32)
Alamat
Text
68
Email
Varchar(30)
Kontak
Varchar(15)
Umur
Int(2)
Role
Varchar(10)
JenisKelamin
Enum(‘Pria’,’Wanita’)
Foto
Varchar (100)
CreatedDate
Datetime
IsActive
Enum (‘0’,’1’)
JabatanID
Int (11)
NamaJabatan
Varchar (20)
JamKerjaID
Int (11)
NamaJamKerja
Varchar (10)
Nama Entitas : Absensi Tabel 4.11 Domain Atribut Absensi Atribut
Domain
AbsensiID
Int (11)
TanggalAbsensi
Datetime
JamMasuk
Datetime
JamKeluar
Datetime
IzinID
Int (11)
69
KaryawanID
Char (5)
Nama Entitas : Jabatan Tabel 4.12 Domain Atribut Jabatan Atribut
Domain
JabatanID
Int (11)
NamaJabatan
Varchar(20)
GajiPokok
Int (11)
Tunjangan
Int (11)
UpahHarian
Int (11)
DivisiID
Int (11)
Nama Entitas : Divisi Tabel 4.13 Domain Atribut Divisi Atribut
Domain
DivisiID
Int (11)
NamaDivisi
Varchar (20)
70
Nama Entitas : JamKerja Tabel 4.14 Domain Atribut JamKerja Atribut
Domain
JamKerjaID
Int (11)
NamaJamKerja
Varchar (10)
JamDatang
Int (4)
BatasAwalCheckIn
Int (4)
BatasAkhirCheckIn
Int (4)
BatasAwalCheckOut
Int (4)
BatasAwalCheckOutSabtu Int (4) BatasAkhirCheckOut
Int (4)
Nama Entitas : Izin Tabel 4.15 Domain Atribut Izin Atribut
Domain
IzinID
Int (11)
Keterangan
Varchar (15)
TanggalMulai
Datetime
TanggalSelesai
Datetime
KaryawanID
Char (5)
71
4.4.1.5 Menentukan Atribut Candidate dan Primary Key Tabel 4.16 Atribut Candidate dan Primary Key Nama Entitas
Candidate key
Primary Key
MsKaryawan
KaryawanID
KaryawanID
Email Kontak Absensi
AbsensiID
AbsensiID
Jabatan
JabatanID
JabatanID
JamKerja
JamKerjaID
JamKerjaID
Izin
IzinID
IzinID
Divisi
DivisiID
DivisiID
Gambar 4.3 ERD Konseptual Dengan Primary Key
72
4.4.2 Logical Database Design 4.4.2.1 Menurunkan Relasi untuk Model Data Logical Local 1. Tipe Entitas Kuat a) MsKaryawan (KaryawanID, NamaKaryawan, Password, Alamat, Email, Kontak, Role, JenisKelamin, Foto, CreatedDate
,
IsActive,
JabatanID,
NamaJabatan,
JamKerjaID, NamaJamKerja) PRIMARY KEY KaryawanID FOREIGN
KEY
JabatanID
references
Jabatan
(JabatanID) FOREIGN KEY
JamKerjaID references JamKerja
(JamKerjaID) b) Absensi
(AbsensiID,
TanggalAbsensi,
JamMasuk,
JamKeluar, KaryawanID,NamaKaryawan, IzinID,Status) PRIMARY KEY AbsenID FOREIGN KEY KaryawanID references MsKaryawan (KaryawanID) FOREIGN KEY IzinID references Izin (IzinID)
73
c) Jabatan(JabatanID, NamaJabatan,GajiPokok, DivisiID, Tunjangan, UpahHarian) PRIMARY KEY JabatanID FOREIGN KEY DivisiID references Divisi (DivisiID) d) JamKerja (JamKerjaID, NamaJamKerja, JamDatang, BatasAwalCheckIn, BatasAwalCheckOut,
BatasAkhirCheckIn, BatasAwalCheckOutSabtu,
BatasAkhirCheckOut) PRIMARY KEY JamKerjaID e) Izin (IzinID, Keterangan, TanggalMulai, TanggalSelesai, JamMulaiIzin, JamSelesaiIzin, Status, KaryawanID) PRIMARY KEY IzinID FOREIGN KEY KaryawanID references MsKaryawan (KaryawanID) f) Divisi ( DivisiID, NamaDivisi) PRIMARY KEY DivisiID
74
2. Tipe Hubungan Biner One-to-Many(1:*) a) Hubungan 1:* MsKaryawan dengan Absensi Penempatan KaryawanID
Ke Absensi untuk Hubungan
Melakukan Karyawan (KaryawanID,
Absensi (AbsensiID,
NamaKaryawan, Password, Alamat,
TanggalAbsensi, JamMasuk,
Email, Kontak,Role, JenisKelamin, Foto, JamKeluar, CreatedDate , IsActive, JabatanID,
KaryawanID,NamaKaryawan,
NamaJabatan, JamKerjaID,
IzinID,Status)
NamaJamKerja) PRIMARY KEY KaryawanID
PRIMARY KEY AbsenID FOREIGN KEY
FOREIGN KEY JabatanID references
KaryawanID references
Jabatan (JabatanID)
MsKaryawan(KaryawanID)
FOREIGN KEY JamKerjaID
FOREIGN KEY IzinID
references JamKerja (JamKerjaID)
references Izin (IzinID)
75
b)
Hubungan 1:* MsKaryawan dengan Izin Penempatan KaryawanID ke Izin untuk hubungan melakukan
MsKaryawan (KaryawanID,
Izin (IzinID, Keterangan,
NamaKaryawan, Password,
TanggalMulai, TanggalSelesai,
Alamat, Email, Kontak,Role,
JamMulaiIzin, JamSelesaiIzin,
JenisKelamin, Foto, CreatedDate ,
Status, KaryawanID)
IsActive, JabatanID, NamaJabatan, JamKerjaID, NamaJamKerja) PRIMARY KEY KaryawanID
PRIMARY KEY IzinID
FOREIGN KEY JabatanID
FOREIGN KEY KaryawanID
references Jabatan (JabatanID)
references
FOREIGN KEY JamKerjaID references JamKerja(JamKerjaID)
MsKaryawan(KaryawanID)
76
c)
Hubungan 1:* Jabatan dengan MsKaryawan Penempatan JabatanID ke MsKaryawan untuk hubungan dimiliki
Jabatan (JabatanID,
MsKaryawan (KaryawanID,
NamaJabatan,GajiPokok,
NamaKaryawan, Password,
Tunjangan, UpahHarian, DivisiID
Alamat, Email, Kontak,Role,
)
JenisKelamin, Foto, CreatedDate , IsActive, JabatanID, NamaJabatan, JamKerjaID, NamaJamKerja)
PRIMARY KEY JabatanID
PRIMARY KEY KaryawanID
FOREIGN KEY DivisiID references Divisi(DivisiID) FOREIGN KEY JabatanID references Jabatan (JabatanID) FOREIGN KEY JamKerjaID references JamKerja(JamKerjaID)
77
d) Hubungan 1:* JamKerja dan MsKaryawan Penempatan
JamKerjaID
ke
MsKaryawan
dengan
hubungan dimiliki JamKerja (JamKerjaID, NamaJamKerja,
MsKaryawan (KaryawanID,
JamDatang, BatasAwalCheckIn,
NamaKaryawan, Password, Alamat,
BatasAkhirCheckIn, BatasAwalCheckOut,
Email, Kontak,Role, JenisKelamin, Foto,
BatasAwalCheckOutSabtu,
CreatedDate , IsActive, JabatanID,
BatasAkhirCheckOut)
NamaJabatan, JamKerjaID, NamaJamKerja)
PRIMARY KEY JamKerjaID
PRIMARY KEY KaryawanID FOREIGN KEY KaryawanID references MsKaryawan(KaryawanID) FOREIGN KEY IzinID references Izin (IzinID)
78
e)
Hubungan 1:* Divisi dengan Jabatan Penempatan DivisiID ke Jabatan untuk hubungan mendasari Jabatan (JabatanID,
Divisi (DivisiID, NamaDivisi)
NamaJabatan,GajiPokok, Tunjangan, UpahHarian , DivisiID) PRIMARY KEY DivisiID
PRIMARY KEY JabatanID FOREIGN KEY DivisiID references Divisi (DivisiID)
4.4.2.2 Memvalidasi Relasi Menggunakan Normalisasi 1.
MsKaryawan UNF : MsKaryawan
=
KaryawanID
+
NamaKaryawan+
Password + Role + Email + Alamat + JenisKelamin +Kontak + Foto + CreatedDate + IsActive + JabatanID + JamKerjaID
79
1NF : Sudah memenuhi, karena tidak ada repeating group lagi. 2NF : Sudah memenuhi, karena semua atribut bukan key sudah bergantung penuh pada primary key. 3NF : Tidak memenuhi, karena masih ada atribut yang tergantung pada atribut non primary key. Maka 3NF menjadi : MsKaryawan = @KaryawanID + NamaKaryawan+ Password + Role + Email + Alamat + JenisKelamin +Kontak + Foto + CreatedDate + IsActive + #JabatanID + #JamKerjaID Jabatan = @JabatanID + NamaJabatan + GajiPokok + #DivisiID + Tunjangan + UpahHarian JamKerja
=
@JamKerjaID
JamDatang
+
+
NamaJamKerja
BatasAwalCheckIn
+ +
BatasAkhirCheckIn + BatasAwalCheckOut + BatasAwalCheckOutSabtu BatasAkhirCheckOut Divisi = @DivisiID + NamaDivisi
+
80
2.
Absensi UNF: Absensi = AbsensiID + JamMasuk + JamKeluar + TanggalAbsensi + KaryawanID + NamaKaryawan 1NF : Sudah memenuhi, karena tidak ada repeating group lagi. 2NF : Sudah memenuhi, karena semua atribut bukan key sudah bergantung penuh pada primary key. 3NF : Tidak memenuhi, karena masih ada atribut yang tergantung pada atribut non primary key. Maka 3NFnya menjadi Absensi = @AbsensiID+ JamMasuk + JamKeluar + TanggalAbsensi + #KaryawanID MsKaryawan = @KaryawanID + NamaKaryawan+ Password + Role + Email + Alamat + JenisKelamin +Kontak + Foto + CreatedDate + IsActive + #JabatanID + #JamKerjaID
81
3.
Izin UNF: Izin = IzinID + JamMulaiIzin + JamSelesaiIzin + TanggalMulai + TanggalSelesai + Status + Keterangan + KaryawanID + NamaKaryawan 1NF : Sudah memenuhi, karena tidak ada repeating group lagi. 2NF : Sudah memenuhi, karena semua atribut bukan key sudah bergantung penuh pada primary key. 3NF : Tidak memenuhi, karena masih ada atribut yang tergantung pada atribut non primary key. Maka 3NFnya menjadi Izin = @IzinID + JamMulaiIzin + JamSelesaiIzin + TanggalMulai + TanggalSelesai + Status + Keterangan + #KaryawanID MsKaryawan = @KaryawanID + NamaKaryawan+ Password + Role + Email + Alamat + JenisKelamin +Kontak + Foto + CreatedDate + IsActive + #JabatanID + #JamKerjaID
82
4.
Jabatan UNF : Jabatan = JabatanID + NamaJabatan + GajiPokok + DivisiID + NamaDivisi + Tunjangan + UpahHarian 1NF : Sudah memenuhi, karena tidak ada repeating group lagi. 2NF : Sudah memenuhi, karena semua atribut bukan key sudah bergantung penuh pada primary key. 3NF : Tidak memenuhi, karena masih ada atribut yang tergantung pada atribut non primary key. Maka 3NFnya menjadi Jabatan = @JabatanID + NamaJabatan + GajiPokok + #DivisiID + Tunjangan + UpahHarian Divisi = @DivisiID + NamaDivisi
83
5.
JamKerja UNF : JamKerja = JamKerjaID + NamaJamKerja + JamDatang + BatasAwalCheckIn
+
BatasAwalCheckOut
+
BatasAkhirCheckIn
+
BatasAkhirCheckOut
+
BatasAkhirCheckOutSabtu 1NF : Sudah memenuhi, karena tidak ada repeating group lagi. 2NF : Sudah memenuhi, karena semua atribut bukan key sudah bergantung penuh pada primary key. 3NF : Sudah memenuhi, karena tidak ada atribut yang bergantung pada atribut non primary key. 6.
Divisi UNF : DivisiID + NamaDivisi 1NF : Sudah memenuhi, karena tidak ada repeating group lagi. 2NF : Sudah memenuhi, karena semua atribut bukan key sudah bergantung penuh pada primary key.
84
3NF: Sudah memenuhi, karena tidak ada atribut yang bergantung pada atribut non primary key. Struktur Tabel Hasil Normalisasi 1.
Entitas
: Karyawan
Primary Key : KaryawanID Foreign Key : JabatanID , JamKerjaID Tabel 4.17 Struktur Tabel MsKaryawan Setelah Normalisasi Atribut
Tipe Data
Panjang
Deskripsi
KaryawanID
Char
5
ID karyawan
NamaKaryawan
Varchar
25
Nama Karyawan
Password
Char
32
Password karyawan
Alamat
Text
50
Alamat Karyawan
Email
Varchar
30
Email Karyawan
Role
Varchar
10
Role
JenisKelamin
Enum
(‘Pria’,’Wanita’) Jenis Kelamin
Foto
Varchar
100
CreatedDate
Datetime
IsActive
Enum
(‘1’,’0’)
Status Karyawan
JabatanID
Int
11
ID Jabatan
JamKerjaID
Int
11
ID Jam Kerja
Foto Tanggal dibuat
85
2.
Entitas
: Absensi
Primary Key : AbsensiID Foreign Key : KaryawanID Tabel 4.18 Struktur Tabel Absensi Setelah Normalisasi Atribut
Tipe Data
Panjang Deskripsi
AbsensiID
Int
11
TanggalAbsensi
Datetime
Tanggal Absensi
JamMasuk
Datetime
Jam Masuk Absensi
JamKeluar
Datetime
Jam Keluar Absensi
KaryawanID
Int
3.
Entitas
11
ID Absensi
ID Karyawan
: Izin
Primary Key : IzinID Foreign Key : KaryawanID Tabel 4.19 Struktur Tabel Izin Setelah Normalisasi Atribut
Tipe Data
Panjang Deskripsi
IzinID
Int
11
ID izin
Keterangan
Varchar
15
Keterangan izin
TanggalMulai
Datetime
Tanggal mulai izin
86
TanggalSelesai
Datetime
KaryawanID
Int
4.
Entitas
Tanggal selesai izin 11
ID karyawan
: Jabatan
Primary Key : JabatanID Tabel 4.20 Struktur Tabel Jabatan Setelah Normalisasi Atribut
Tipe Data
Panjang Deskripsi
JabatanID
Int
11
ID jabatan
NamaJabatan
Varchar
20
Jabatan karyawan
GajiPokok
Int
11
Gaji poko karyawan
DivisiID
Int
11
ID Divisi
Tunjangan
Int
11
Tunjangan karyawan
UpahHarian
Int
11
Upah Harian Karyawan
5.
Entitas
: Divisi
Primary Key : DivisiID Tabel 4.21 Struktur Tabel Divisi Setelah Normalisasi Atribut
Tipe Data
Panjang Deskripsi
DivisiID
Int
11
ID divisi
87
NamaDivisi
6.
Varchar
Entitas
20
Nama Divisi
: JamKerja
Primary Key : JamKerjaID Tabel 4.22 Struktur Tabel JamKerja Setelah Normalisasi Atribut
Tipe Data
Panjang Deskripsi
JamKerjaID
Int
4
ID jam kerja
NamaJamKerja
Varchar
20
Nama jam kerja
JamDatang
Datetime
Jam datang
BatasAwalCheckIn
Datetime
Batas awal jam datang
BatasAwalCheckOut
Datetime
Batas awal jam keluar
BatasAkhirCheckIn
Datetime
Batas akhir jam datang
BatasAkhirCheckOut
Datetime
Batas akhir jam keluar
BatasAkhirCheckOutSabtu Datetime
Batas akhir jam keluar hari sabtu
4.4.2.3 Mendefinisikan Batasan Integritas MsKaryawan (KaryawanID, NamaKaryawan, Password, Role, Email , Alamat, JenisKelamin, Kontak, Foto, CreatedDate, IsActive, JabatanID, JamKerjaID) PRIMARY KEY KaryawanID
88
FOREIGN KEY JabatanID REFERENCES Jabatan(JabatanID) ON UPDATE CASCADE ON DELETE CASCADE FOREIGN KEY JamKerjaID REFERENCES JamKerja(JamKerjaID) ON UPDATE CASCADE ON DELETE CASCADE Absensi (AbsensiID, TanggalAbsensi, JamMasuk, JamKeluar, KaryawanID) PRIMARY KEY AbsensiID FOREIGN KEY KaryawanID REFERENCES MsKaryawan (KaryawanID) ON UPDATE CASCADE ON DELETE CASCADE Jabatan
(JabatanID,
NamaJabatan,
GajiPokok,
Tunjangan,
UpahHarian,
DivisiID) PRIMARY KEY JabatanID FOREIGN KEY DivisiID REFERENCES Divisi (DivisiID) ON UPDATE CASCADE ON DELETE CASCADE Izin (IzinID,Keterangan, TanggalMulai, TanggalSelesai, KaryawanID) PRIMARY KEY IzinID FOREIGN KEY KaryawanID REFERENCES MsKaryawan(KaryawanID) ON UPDATE CASCADE ON DELETE CASCADE JamKerja
(JamKerjaID,
NamaJamKerja,
JamDatang,
BatasAwalCheckIn,
89
BatasAkhirCheckIn,
BatasAwalCheckOut,
BatasAwalCheckOutSabtu,
BatasAkhirCheckOut) PRIMARY KEY JamKerjaID Divisi (DivisiID, NamaDivisi) PRIMARY KEY DivisiID
MsKaryawan Jabatan Divisi -DivisiID -NamaDivisi 1..1
1..*
-JabatanID(PK) -NamaJabatani -GajiPokok -Divisi -Tunjangan -UpahHarian -DivisiID
1..1
1..*
1..1
-KaryawanID(PK) -Nama -Password -Address -Email -Kontak -JenisKelamin -Foto -JabatanID(FK) -JamKerjaID(FK) -CreatedDate -IsActive
Izin
1..1 1..*
1..*
1..1 Absensi -AbsensiID(PK) -JamMasuk -JamKeluar -TglAbsensi -Keterangan -KaryawanID(FK)
Jam Kerja
1..*
-JamKerjaID(PK) -JamDatang -BatasAwalCheckIn -BatasAkhirCheckIn -BatasAwalCheckOut -BatasAkhirCheckOut -ToleransiTerlambat -ToleransiPulangAwal
Gambar 4.17 ERD Logical
-IzinID(PK) -KeteranganCuti -TanggalMulai -TanggalSelesai -JamMulaiIzin -JamSelesaiIzin -Status -KaryawanID(FK)
90
4.4.3 Physical Database Design 4.4.3.1 Mendesign Relasi Dasar 1.
MsKaryawan Domain KaryawanID fixed length character, length 5 Domain NamaKaryawan variable length character varchar, length 25 Domain Password fixed length character md5, length 32 Domain Alamat text Domain Email variable length character varchar, length 30 Domain Role variable length character varchar, length 10 Domain JenisKelamin enum, ‘Pria’, ‘Wanita’ Domain Foto variable length character varchar, length 100 Domain CreatedDate datetime Domain IsActive enum, ‘1’,’0’ Domain JabatanID Integer , length 11 Domain JamKerjaID Integer , length 11 MsKaryawan (
91
KaryawanID Karyawan ID NOT NULL, NamaKaryawan NamaKaryawan NOT NULL, Password Password NOT NULL, Alamat Alamat NOT NULL, Email Email NOT NULL, Role Role NOTNULL, JenisKelamin JenisKelamin NOTNULL, Foto Foto NOTNULL, CreatedDate CreatedDate NOTNULL, IsActive IsActive NOTNULL, JabatanID JabatanID NOTNULL, JamKerjaID JamKerjaID NOTNULL PRIMARY KEY (KaryawanID) FOREIGN KEY JabatanID REFERENCES Jabatan(JabatanID) ON UPDATE CASCADE ON DELETE CASCADE
92
FOREIGN KEY JamKerjaID REFERENCES JamKerja (JamKerjaID) ON UPDATE CASCADE ON DELETE CASCADE ); 2.
Absensi Domain AbsensiID Integer , length 11, Domain TanggalAbsensi datetime, Domain JamMasuk datetime, Domain JamKeluar datetime, Domain KaryawanID fixed length character integer, length 5 Absensi ( AbsensiID AbsensiID NOT NULL, TanggalAbsensi TanggalAbsensi NOT NULL, JamMasuk JamMasuk NOTNULL, JamKeluar JamKeluar NOTNULL, KaryawanID KaryawanID NOTNULL,
93
PRIMARY KEY (AbsensiID), FOREIGN
KEY
KaryawanID
REFERENCES
MsKaryawan(KaryawanID) ON UPDATE CASCADE ON DELETE CASCADE ); 3.
Jabatan Domain JabatanID Int , length 11 Domain NamaJabatan variable length character string, length 20 Domain GajiPokok Int , length 11 Domain DivisiID Int, length 11 Domain Tunjangan Int, length 11 Domain UpahHarian Int, length 11 Jabatan( JabatanID JabatanID NOT NULL, NamaJabatan NamaJabatan NOT NULL, GajiPokok GajiPokok NOTNULL, DivisiID DivisiID NOTNULL,
94
Tunjangan Tunjangan NOTNULL, UpahHarian UpahHarian NOTNULL, PRIMARY KEY (JabatanID), FOREIGN
KEY
Divisi(DivisiID)
ON
DivisiID UPDATE
REFERENCES CASCADE
ON
DELETE CASCADE ); 4.
Izin Domain IzinID Int, length 11 Domain Keterangan variable length character string, length 15 Domain TanggalMulai datetime Domain TanggalSelesai datetime Domain KaryawanID fixed length character string, length 5 Izin( IzinID IzinID NOT NULL, Keterangan Keterangan NOT NULL,
95
TanggalMulai TanggalMulai NOT NULL, TanggalSelesai TanggalSelesai NOT NULL, KaryawanID KaryawanID NOT NULL, PRIMARY KEY (IzinID), FOREIGN MsKaryawan
KEY
KaryawanID
(KaryawanID)
REFERENCES ON
UPDATE
CASCADE ON DELETE CASCADE ); 5.
JamKerja Domain JamKerjaID Int, length 11 Domain NamaJamKerja variable length character string, length 10 Domain JamDatang Int, length 4 Domain BatasAwalCheckIn Int, length 4 Domain BatasAkhirCheckIn Int, length 4 Domain BataslAwalCheckOut Int, length 4 Domain BatasAwalCheckOutSabtu Int, length 4
96
Domain BayasAkhirCheckOut Int, length 4 JamKerja( JamKerjaID JamKerjaID NOTNULL, NamaJamKerja NamaJamKerja NOTNULL, JamDatang JamDatang NOTNULL, BatasAwalCheckIn BatasAwalCheckIn NOTNULL, BatasAkhirCheckIn BatasAkhirCheckIn NOTNULL, BataslAwalCheckOut BatasAwalCheckOut NOTNULL, BatasAwalCheckOutSabtu BatasAwalCheckOutSabtu NOTNULL, BatasAkhirCheckOut BatasAkhirCheckOut NOTNULL, PRIMARY KEY (JamKerjaID), ); 6.
Divisi Domain DivisiID Int, length 11 Domain NamaDivisi variable length character varchar, length 20
97
Divisi( DivisiID DivisiID NOT NULL, NamaDivisi NamaDivisi NOT NULL, PRIMARY KEY (DivisiID) );
4.4.3.2 Menganalisis Transaksi A.
Prosedur MsKaryawan
B.
Prosedur Absensi
C.
Prosedur Izin
D.
Prosedur JamKerja
E.
Prosedur Jabatan
F.
Prosedur Divisi
98
Tabel 4.23 Matriks Silang Transaksi dan Relasi Transaksi
Relasi A I
MsKaryawan
B R U D I
X X X X
C R U D I
R U D
X
X X
Absensi
X
X X X
Izin
X
X
JamKerja
X
X
Jabatan
X
Divisi
X
Transaksi
X X X X
Relasi D I
E R U D I
F R
U
D
X
X
X
I
R
U
D
MsKaryawan Absensi Izin JamKerja Jabatan Divisi
X X X X X
X X
X
X
99
4.4.3.3 Mengecek indeks CREATE UNIQUE INDEX idxMsKaryawan ON MsKaryawan (KaryawanID) CREATE UNIQUE INDEX idxAbsensi ON Absensi (AbsensiID) CREATE UNIQUE INDEX idxIzin ON Izin (IzinID) CREATE UNIQUE INDEX idxJamKerja ON JamKerja (JamKerjaID) CREATE UNIQUE INDEX idxJabatan ON Jabatan (JabatanID) CREATE UNIQUE INDEX idxDivisi ON Divisi (DivisiID)
4.4.3.4 Mengestimasi Kebutuhan Ruang Penyimpanan Tabel 4.24 Ukuran Entitas Tabel/Entitas
Atribut
Tipe
Ukuran
Data MsKaryawan
KaryawanID
Char
5
NamaKaryawan
Varchar
25
Password
Char
32
Alamat
Text
50
100
Email
Varchar
30
Role
Varchar
10
JenisKelamin
Enum
2
Foto
Varchar
100
CreatedDate
Datetime
8
IsActive
Enum
2
JabatanID
Int
11
JamKerjaID
Int
11
Total
286
Tabel/Entitas
Absensi
Atribut
Tipe Data
Ukuran
AbsensiID
Int
11
TanggalAbsensi
Datetime
8
JamMasuk
Datetime
8
JamKeluar
Datetime
8
KaryawanID
Char
5
Total
40
Tipe
Ukuran
Tabel/Entitas
Atribut
Data Izin
IzinID
Int
11
101
Keterangan
Varchar
15
TanggalMulai
Datetime
8
TanggalSelesai
Datetime
8
KaryawanID
Char
5
Total
47
Tipe
Ukuran
Tabel/Entitas
Atribut
Data Jabatan
JabatanID
Int
11
NamaJabatan
Varchar
20
GajiPokok
Int
11
DivisiID
Int
11
Tunjangan
Int
11
UpahHarian
In
11
Total
75
Tabel/Entitas
JamKerja
Tipe Atribut
Data
Ukuran
JamKerjaID
Int
11
NamaJamKerja
Varchar
10
JamDatang
Int
4
102
BatasAwalCheckIn
Int
4
BatasAkhirCheckIn
Int
4
BatasAwalCheckOut
Int
4
BatasAwalCheckOutSabtu Int
4
BatasAkhirCheckOut
Int
4
Total
45
Tipe
Ukuran
Tabel/Entitas
Atribut
Data Divisi
DivisiID
Int
11
NamaDivisi
Varchar
20
Total
31
103
Entitas dibawah ini mengalami pertambahan jumlah tiap bulan Tabel 4.25 Estimasi Ukuran Entitas Per Bulan Tabel
Estimasi Ukuran
Estimasi
Record ( Byte Transaksi )
Ukuran Record per per Bulan
Bulan
MsKaryawan
286
2
572
Absensi
40
26
1040
Izin
47
5
235
Divisi
31
1
31
Jabatan
84
1
84
JamKerja
45
1
45
Total ukuran record per bulan (byte)
2007
104
Entitas dibawah ini mengalami pertambahan jumlah tiap tahun Tabel 4.26 Estimasi Ukuran Entitas Per Tahun Tabel
Estimasi Ukuran Record ( Byte
Estimasi Transaksi per Tahun
)
Ukuran Record per Tahun
MsKaryawan
286
1
286
Absensi
40
2
80
Izin
47
1
47
Divisi
31
1
28
Jabatan
84
1
14
JamKerja
45
1
45
Total ukuran record per tahun (byte)
500
105
4.4.3.5 Mendesign Mekanisme Keamanan Tabel 4.27 Mekanisme Keamanan Transaksi
Pengguna Admin
Karyawan
I
R
U
D
I
R
MsKaryawan
X
X
X
X
Absensi
X
X
X
Izin
X
X
X
X
X
JamKerja
X
X
X
X
X
Jabatan
X
X
X
X
X
Divisi
X
X
X
X
X
U
X X
X
Grant Akses GRANT Select ON MsKaryawan, Izin, Absensi, JamKerja, Jabatan, Divisi, TO Admin
GRANT Insert ON MsKaryawan, Izin, Absensi, JamKerja, Jabatan, Divisi
D
106
TO Admin
GRANT Update ON MsKaryawan, Izin, Absensi, JamKerja, Jabatan, Divisi TO Admin
GRANT Delete ON MsKaryawan, Izin, Absensi, JamKerja, Jabatan, Divisi TO Admin
107
4.5 Application Design 4.5.1 Struktur Menu Admin
Gambar 4.4 Struktur Menu Admin 4.5.2 State Transition Diagram
Gambar 4.5 STD Validasi Login
108
Gambar 4.6 STD Menu Admin
Pilih menu Payroll tampilkan Halaman Payroll
Pilih menu Absence tampilkan Halaman Absence
Pilih menu My Profile tampilkan Halaman My Profile
Pilih menu Home tampilkan menu Home
Gambar 4.7 STD Menu Karyawan
109
«interface» Login
Klik Home tampilkan Halaman Home
«interface» Home
Gambar 4.8 STD Home Karyawan
«interface» Login
Klik My Profile tampilkan Halaman My Profile
«interface» My Profile
Gambar 4.9 STD My Profile Karyawan
110
«interface» Login
Klik Absence tampilkan Halaman Absence
«interface» Absence
Gambar 4.10 STD Absence Karyawan «interface» Login
Klik Payroll tampilkan Halaman Payroll
«interface» Payroll
Gambar 4.11 STD Payroll Karyawan
111
«interface» Login
Klik Home tampilkan Menu Home
«interface» Home
Gambar 4.12 STD Home «interface» Login
Klik Manage Jabatan tampilkan Menu Manage Jabatan
Klik search Mencari Jabatan
«interface» Manage Jabatan
Klik delete Menghapu s data Jabatan
Klik Edit Mengubah data Jabatan
Klik Add New Jabatan Menambah data Jabatan
Gambar 4.13 STD Manage Jabatan
112
«interface» Login
Klik List Employee tampilkan Menu List Employee
Klik search Mencari data Employee
«interface» List Employee
Klik Edit Mengubah data Employee
Klik delete Menghapu s data Employee
Gambar 4.14 STD List Employee «interface» Login
Klik Manage Jam Kerja tampilkan Menu Manage Jam Kerja Klik search Mencari data Jam Kerja
«interface» Manage Jam Kerja
Klik delete Menghapu s data Jam Kerja
Klik Edit Mengubah data Jam Kerja
Klik Add New Jam Kerja Menambah data Jam Kerja
Gambar 4.15 STD Manage Jam Kerja
113
«interface» Login
Klik Register Employee tampilkan Menu Regsiter Employee
«interface» Register Employee
Klik submit Memasuk an data employee
Klik reset mengapus inputan data employee
Gambar 4.16 STD Register Employee
Gambar 4.17 STD Set Absence
114
«interface» Login
Klik Manage Hari libur tampilkan Menu Manage Harilibur
Klik search Mencari data Hari Libur
«interface» Manage HariLibur
Klik delete Menghapu s data Hari Libur
Klik Edit Mengubah data HariLibur
Klik Add New Jabatan Menambah data HariLibur
Gambar 4.18 STD Manage Hari Libur «interface» Login
Klik Set payroll tampilkan Menu Set Absence
Klik search Mencari data payroll
«interface» Set Payroll
Klik Print untuk mencetak laporan
Gambar 4.19 STD Set Payroll
115
«interface» Login
Klik Manage Divisi tampilkan Menu Manage divisi
«interface» Manage Divisi
Klik delete Menghapu s data Divisi
Klik Add New Divisi Menambah data divisi
Gambar 4.20 STD Manage Divisi
116
4.5.3 Rancangan Layar Halaman Absensi Karyawan
Gambar 4.21 Halaman Absensi Karyawan KaryawanID : input (Karyawan ID) Tombol Check In/Out : Untuk Absen masuk dan keluar
117
Halaman Login
Gambar 4.22 Halaman Login • KaryawanID : Input (Karyawan ID) • Password: Input (Password Karyawan) • Role : Pilih • Tombol Login: Masuk ke menu utama
118
Halaman Home Karyawan
Gambar 4.23 Halaman Menu Home Karyawan
119
Halaman My Profile
Gambar 4.24 Halaman My Profile Change Password : Klik
120
Halaman Change Password
Gambar 4.25 Halaman Change Password Old Password
: Input
New Password
: Input
Confirm Password
: Input
121
Halaman Menu Absensi
Gambar 4.26 Halaman Menu Absensi
122
Halaman Menu Payroll
Gambar 4.27 Halaman Menu Payroll
123
Halaman Home Admin
Gambar 4.28 Halaman Home Admin
124
Halaman Manage Divisi
Gambar 4.29 Halaman Manage Divisi Nama Divisi : Input Search : Input
125
Halaman Manage Jabatan
Gambar 4.30 Halaman Manage Jabatan Search : Input
126
Halaman Add Jabatan
Gambar 4.31 Halaman Add Jabatan Nama Jabatan
: Input
Gaji Pokok
: Input
Tunjangan
: Input
Upah Harian
: Input
Divisi
: Pilih
127
Halaman Edit Jabatan
Gambar 4.32 Halaman Edit Jabatan Nama Jabatan
: Input
Gaji Pokok
: Input
Tunjangan
: Input
Upah Harian
: Input
Divisi
: Pilih
128
Halaman Manage Hari Libur
Gambar 4.33 Halaman Manage Hari Libur Search : Input
129
Halaman Edit Hari Libur
Gambar 4.34 Halaman Edit Hari Libur Nama Hari Libur
: Input
Tanggal Mulai Libur
: Input
Tanggal Selesai Libur
: Input
130
Halaman Add Hari Libur
Gambar 4.35 Halaman Add Hari Libur Nama Hari Libur
: Input
Tanggal Hari Libur
: Input
Tanggal Selesai Libur : Input
131
Halaman Manage Izin Employee
Gambar 4.36 Halaman Manage Izin Employee Search : Input
132
Halaman Edit Izin Employee
Gambar 4.37 Halaman Edit Izin Employee Nama Karyawan
: Input
Tanggal Mulai Izin
: Input
Tanggal Selesai Izin
: Input
Keterangan
: Pilih
133
Halaman Add New Izin
Gambar 4.38 Halaman Add New Izin Karyawan
: Pilih
From
: Input
To
: Input
Keterangan
: Pilih
134
Halaman Manage Jam Kerja
Gambar 4.39 Halaman Manage Jam Kerja Search
: Input
135
Halaman Edit Jam Kerja
Gambar 4.40 Halaman Edit Jam Kerja Nama Jam Kerja
: Input
Jam Datang
: Input
Batas Awal Check In
: Input
Batas Akhir Check In
: Input
Batas Awal Check Out
: Input
Batas Awal Check Out Sabtu
: Input
Batas Akhir Check Out
: Input
136
Halaman Register Employee
Gambar 4.41 Halaman Register Employee Nama
: Input
Jam Kerja
: Pilih
Password
: Input
Foto
: Input
Jenis Kelamin : Pilih Email
: Input
Alamat
: Input
Kontak
: Input
Jabatan
: Pilih
Role
: Pilih
137
Halaman List Employee
Gambar 4.42 Halaman List Employee Search
: Input
138
Halaman Set Absence
Gambar 4.43 Halaman Set Absence Search
: Input
139
Halaman Set Payroll
Gambar 4.44 Halaman Set Payroll Search
: Input Laporan Daftar Gaji
Gambar 4.45 Laporan Daftar Gaji
140
4.6 Implementation 4.6.1 Spesifikasi Perangkat Keras Minimun Requirement: • Processor Intel Pentium 4 • Memory RAM 512Mb • Hardisk Size 2Gb Reccommended Requirement: • Processor Intel Pentium Dual Core (2.0 Ghz) • Memory RAM 2Gb • Hardisk Size 10Gb • 4.6.2 Spesifikasi Perangkat Lunak • Windows XP • Microsoft Dreamweaver CS 6 • .XAMPP • Mozilla Firefox
141
4.6.3 Jadwal Perancangan Tabel 4.28 Jadwal Perancangan NO Kegiatan
Bulan 1
2
3
4
5
1 2 3 4 1 2 3 4 1 2 3 4 1 2 3 4 1 2 1
Analisa
2
Desain Database dan aplikasi
3
Pengujian
4
Pelatihan