• Tidak ada hasil yang ditemukan

BAB 4 PERANCANGAN DAN IMPLEMENTASI. 4.1 Diagram Alir Data. Berikut ini adalah diagram konteks dari sistem yang akan dirancang

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 4 PERANCANGAN DAN IMPLEMENTASI. 4.1 Diagram Alir Data. Berikut ini adalah diagram konteks dari sistem yang akan dirancang"

Copied!
217
0
0

Teks penuh

(1)

BAB 4

PERANCANGAN DAN IMPLEMENTAS I

4.1 Diagram Alir Data

Berikut ini adalah diagram konteks dari sistem yang akan dirancang

(2)
(3)

4.2 Perancangan Basis Data

Perancangan basis data yang dilakukan pada PT. Prisma Global Solusi dibagi kedalam tiga tahapan utama. Yaitu :

1. Perancangan basis data konseptual ( Conceptual Database Design ). 2. Perancangan basis data logikal ( Logical Database Design ).

3. perancangan basis data fisikal ( Phyisical Database Design ).

4.2.1 Perancangan Basis Data Konseptual

Perancangan basis data konseptual merupakan suatu proses pembuatan model dengan menggunakan informasi yang diperoleh dari perusahaan. Beberapa langkah penting dalam merancang basis data konseptual, diantaranya :

1. Identifikasi tipe entitas 2. Identifikasi tipe relasional

3. Identifikasi dan asosiasi atribut suatu entitas 4. Identifikasi primary key setiap entitas

4.2.1.1 Mengidentifikasi Tipe Entiti

Tujuan dari tahapan ini adalah untuk menentukan entitas utama yang di butuhkan.

(4)

Tabel 4.1 Tabel Data Dictionary

Entity Name Description Aliases Occurences

Employee Informasi umum mengenai pegawai secara lengkap.

Pegawai Seseorang yang bekerja pada

perusahaan

Division Informasi mengenai divisi yang terdapat pada perusahaan

Divisi Setiap pegawai bekerja pada divisinya masing-masing

Privilege Informasi mengenai hak akses dari setiap pegawai pada

perusahaan

HakAkses Setiap memiliki hak akses yang berbeda-beda sesuai wewenang yang diberikan

perusahaan. Absence Informasi mengenai

absensi yang dilakukan pegawai secara lengkap

Absen Setiap pegawai

mengisi absen

LeaveRequest Informasi mengenai permohonan

cuti/ijin/sakit dari setiap pegawai

PermohonanCuti Setiap pegawai mengajukan permohonan cuti/ijin/sakit ke

(5)

perusahaan LeaveEntitle Informasi mengenai

jatah cuti dari setiap pegawai

JatahCuti Setiap pegawai memiliki jatah cutinya masing-masing selama setahun

AllowClaim Informasi mengenai detail pengajuan claim oleh pegawai yang berhubungan dengan absensi

AllowanceClaim Detail

Informasi mengenai pengajuan claim oleh pegawai yang

berhubungan dengan absensi secara lengkap NonAllowClaim Informasi mengenai

detail pengajuan claim oleh pegawai yang tidak berhubungan dengan absensi NonAllowanceCla imDetail Informasi mengenai pengajuan claim oleh pegawai yang tidak berhubungan dengan absensi secara lengkap

Project Informasi mengenai proyek yang sedang ditangani oleh perusahaan

Proyek Setiap proyek

ditangani oleh pegawai yang ada dalam

perusahaan ProjectStatus Informasi mengenai

status proyek

StatusProyek Setiap proyek memiliki status yang ditentukan oleh

(6)

perusahaan sesuai dengan

perkembangannya Client Informasi mengenai

klien dari perusahaan

Klien Perusahaan menangani

proyek yang diberikan oleh klien

Stage Informasi mengenai semua kemungkinan tahapan-tahapan yang ada pada project

Tahapan Setiap proyek memiliki pilihan

tahapan-tahapan pelaksanaan proyek yang disediakan oleh perusahaan

News Informasi mengenai berita-berita yang berkaitan dengan perusahaan

Berita Perusahaan menyediakan berita-berita yang berkaitan dengan perusahaan Holiday Informasi mengenai

daftar hari libur

HariLibur Perusahaan menetapkan hari libur setiap tahunnya AbsenceType Informasi mengenai

jenis absensi beserta besarnya ganti rugi yang berhubungan

JenisAbsen Perusahaan menetapkan besarnya ganti rugi dari claim sesuai dengan jenis

(7)

dengan absen tersebut absensi yang ada LeaveType Informasi mengenai

jenis cuti yang bisa diambil pegawai

JenisCuti Pegawai memilih jenis cuti dalam pengajuan cutinya sesuai kebutuhan

4.2.1.2 Mengidentifikasikan Tipe Relasional

Langkah ini bertujuan untuk mengidentifikasikan pentingnya relasi yang ada antara tipe entiti.

Tabel 4.2 Tabel Kamus Data yang Menunjukkan Relasi Antar Tipe Entiti Entity Name Multiplicity Relationship Entity Name Multiplicity

1..1 M emiliki Privilege 1..1 1..1 M engisi Absence 1..* 1..1 M emeriksa Absence 1..* 1..1 LM empunyai LeaveEntitle 1..* 1..1 M emohon LeaveRequest 0..* 1..1 M engijinkan LeaveRequest 0..* 1..1 AM engajukan AllowClaim 0..* 1..1 AM enyetujui AllowClaim 0..* 1..1 NM engajukan NonAllowClaim 0..* 1..1 NM enyetujui NonAllowClaim 0..* Employee 1..* M empunyai Division 1..1

(8)

1..* M enangani Project 1..*

1..1 M engatur Project 1..*

1..1 M empublikasikan News 0..* 0..* M engontrol Employee 0..* Absence 1..1 M enghasilkan AllowClaim 0..1 0..* Dipengaruhi Holiday 0..* LeaveRequest

1..* LM empengaruhi LeaveEntitle 1..1

Client 1..1 M emberikan Project 1..*

Project 0..* M engandung Stage 1..*

1..1 Dipilih dalam Absence 1..*

Stage 1..1 StDipilih dalam Absence 1..*

AbsenceType 1..1 Dimiliki Absence 1..*

LeaveType 1..1 LDimiliki LeaveRequest 1..*

(9)
(10)

4.2.1.3 Identifikasi dan Asosiasi Atribut Suatu Entiti

Langkah ini bertujuan untuk mengasosiasikan atribut dengan tipe entiti atau tipe relasi yang sesuai.

Tabel 4.3 Tabel Identifikasi Atribut dan Domain Atribut Entity Employee Employee

Attribute Description

Data type and

Length NULLS

Multi valued

Username Username dari pegawai Varchar (30) NO NO Password Password dari pegawai Varchar (40) NO NO EmployeeID Kode dari pegawai yang unik Char (8) must

be [current year][/][001-999]

NO NO

Name Nama lengkap dari pegawai Varchar (40) YES NO Gender Jenis Kelamin dari Pegawai Char (1) must

be one of ‘M or‘F’

YES NO

Title Jabatan dari pegawai Varchar (30) YES NO

Address Alamat tempat tinggal pegawai Varchar (100) YES NO Phone Nomor telepon pegawai yang

dapat dihubungi

(11)

OfficialEmail Email kantor setiap pegawai Varchar (50) YES NO PersonalEmail Email pribadi setiap pegawai Varchar (50) YES YES BirthDate Tanggal lahir dari pegawai

format (yyyy-mm-dd)

Date YES NO

Color Simbol warna yang mewakili setiap pegawai untuk digunakan pada gant chart project Char (7) must be [#][A-F or 0-9] [A-F or 0-9] [A-F or 0-9] [A-F or 0-9] [A-F or 0-9] [A-F or 0-9] YES NO

StartofService Tanggal pegawai mulai bekerja pada perusahaan

format (yyyy-mm-dd)

Date YES NO

EmpStatus Status pegawai yang

menandakan pegawai masih aktif atau tidak

Boolean YES NO

NPWP Nomor Pokok Wajib Pajak dari pegawai

Varchar (20) YES NO

(12)

ResignDate Tanggal keluar pegawai dari perusahaan (tidak aktif)

format (yyyy-mm-dd)

Date YES NO

Tabel 4.4 Tabel Identifikasi Atribut dan Domain Atribut Entity Division Division

Attribute Description

Data type and

Length NULLS

Multi valued

DivisionID Kode divisi dari setiap pegawai

Char (3) must be D01-D99

NO NO

DivisionName Nama divisi yang ada di perusahaan

(13)

Tabel 4.5 Tabel Identifikasi Atribut dan Domain Atribut Entity Privilege Privilege

Attribute Description

Data type and

Length NULLS

Multi valued

VerifierAbsence Hak pegawai dalam memverifikasi Absent pegawai lainnya

Boolean NO NO

AppLeave Hak pegawai dalam memverifikasi

pengajuan cuti/ijin/sakit

pegawai lainnya (ditentukan per divisi)

Boolean YES YES

AppClaim Hak pegawai dalam memverifikasi

pengajuan claim pegawai lainnya (ditentukan per divisi )

Boolean YES YES

Payer Hak pegawai dalam

melakukan pembayaran claim pegawai yang telah disetujui oleh approver claim

(14)

NewsEditor Hak pegawai dalam me-manage berita yang akan ditampilkan di website perusahaan

Boolean NO NO

HolidayEditor Hak pegawai dalam menetapkan hari libur yang berlaku di perusahaan

Boolean NO NO

ProjectManager Hak pegawai dalam menentukan segala hal yang berhubungan dengan proyek yang

ditangani oleh perusahaan

Boolean NO NO

SuperUser Hak pegawai dalam Boolean NO NO

Tabel 4.6 Tabel Identifikasi Atribut dan Domain Atribut Entity LeaveRequest LeaveRequest

Attribute Description

Data type and

Length NULLS

Multi valued

LeaveRequestID

Kode yang terdapat pada pengajuan cuti/ijin/sakit pegawai Char (7) must be [L][current year][/][001-NO year][/][001-NO

(15)

999] (L08/001)

LStartDate

Tanggal mulai dari cuti/ijin/sakit yang diajukan pegawai Date NO NO LEndDate Tanggal berakhirnya cuti/ijin/sakit yang diajukan pegawai Date NO NO Duration Lama cuti/ijin/sakit yang diajukan pegawai

Int (2) YES NO

LeaveNotes

Keterangan tambahan tentang segala sesuatu yang berhubungan dengan cuti/ijin/sakit yang diajukan pegawai

Varchar (50) YES NO LRequestDate Tanggal pengajuan cuti/ijin/sakit pegawai Date NO NO LeaveDate

Tanggal kapan cuti diambil Date NO YES LRequestStatus Keterangan yang menunjukkan apakah pengajuan cuti/ijin/sakit tersebut diterima atau ditolak (rejected or

Char (1) must be one of ‘1’,

(16)

approved) LeaveReason Alasan ditolaknya pengajuan cuti/ijin/sakit pegawai Varchar (50) YES NO DecisionDate Tanggal diputuskannya pengajuan cuti/ijin/sakit diterima oleh

perusahaan atau tidak

Datetime YES NO

Tabel 4.7 Tabel Identifikasi Atribut dan Domain Atribut Entity LeaveEntitle LeaveEntitle

Attribute Description

Data type and

Length NULLS

Multi valued

EntitleID

Kode unik yang berkaitan dengan history cuti pegawai

Char (10) must be [E] [current year] [current month] [current day] [/][01-99] (080101/01) NO NO Duration

Lama cuti yang pernah diajukan pegawai

Int (2) NO NO

(17)

dengan pengajuan dan penambahan cuti pegawai

EntitleStatus

Keterangan apakah data yang di input berupa ‘add’ or ‘leave’ Varchar (10) must be one of ‘Add’ or‘Leave’ NO NO EntitleActualDate Waktu yang menunjukkan kapan data pada tabel leave entitle dimasukkan

Datetime NO NO

Tabel 4.8 Tabel Identifikasi Atribut dan Domain Atribut Entity Absence Absence

Attribute Description

Data type and

Length NULLS

Multi valued

AbsenceID Kode absen

Char (10) must be [A] [current year][current month][current day][/] [01-99] (A080101/01) NO NO

(18)

AbsDate

Tanggal dan waktu pegawai melakukan absen ke perusahaan Date NO NO AbsenceNotes Keterangan tambahan yang berhubungan dengan absen yang dilakukan oleh pegawai

Varchar (50) YES NO

AbsenceStatus

Keterangan yang menunjukkan apakah absensi pegawai diterima atau ditolak (rejected or verified) Char (1) must be one of ‘0’, ‘1’ or ‘2’ NO NO AbsClaimStatus Keterangan mengenai status claim pegawai yang berhubungan dengan absensi (rejected, claimed, requested, paid ) Char (1) ) must be one of ‘0’ or‘1’ or ‘2’ or‘3’ YES NO AbsenceReason Alasan ditolaknya absensi yang diisi oleh pegawai

Varchar (50)

(19)

BackDate

Status yang menandakan absen yang dilakukan untuk hari yang telah lewat (masa lampau)

Boolean NO NO

AbsActualDate

Tanggal dan waktu pegawai melakukan absent.

DateTime NO NO

Tabel 4.9 Tabel Identifikasi Atribut dan Domain Atribut Entity AllowClaim AllowClaim

Attribute Description

Data type and

Length NULLS

Multi valued

ClaimID

Kode claim pengajuan pegawai Char (9) must be [C] [current year][/] [001-999] NO NO AllowClaimPrice

Besarnya jumlah ganti rugi untuk sesuai dengan jenis absensi yang diajukan pegawai, yang ditetapkan oleh perusahaan

Decimal (10,2)

(20)

CRequestDate

Tanggal pengajuan claim oleh pegawai

Datetime NO NO

CRequestStatus

Status claim yang telah diajukan karyawan yang ditentukan oleh

Approver Claim (rejected, pending, claimed dan paid)

Char (1) must be one of ‘0’, ‘1’ , ‘2’ or ‘3’ NO NO ClaimReason Alasan ditolaknya pengajuan claim pegawai Varchar (50) YES NO

Tabel 4.10 Tabel Identifikasi Atribut dan Domain Atribut Entity NonAllowClaim NonAllowClaim

Attribute Description

Data type and

Length NULLS

Multi valued

ClaimID

Kode claim pengajuan pegawai Char (9) must be [C] [current year][/] [001-999] (C2008/001) NO NO Sequence

Urutan dari claim yang diajukan

(21)

NACDescription

Keterangan dari claim non allowance yang diajukan

Varchar (50) NO NO

Price

Jumlah harga dari claim yang diajukan

Decimal (10,2) NO NO

CRequestDate

Tanggal pengajuan claim oleh pegawai

Datetime NO NO

CRequestStatus

Status claim yang telah diajukan karyawan yang ditentukan oleh

Approver Claim (rejected, pending, claimed dan paid)

Char (1) must be one of ‘0’, ‘1’ , ‘2’ or ‘3’ NO NO ClaimReason Alasan ditolaknya pengajuan claim pegawai Varchar (50) YES NO

Tabel 4.11 Tabel Identifikasi Atribut dan Domain Atribut Entity Project Project

Attribute Description

Data type and

Length NULLS

Multi valued

ProjectID

Kode dari proyek yang ditangani oleh

Char (9) must be [P] [current

(22)

perusahaan year][/] 001-999]

(P2008/001)

ProjectName

Nama proyek yang ditangani oleh perusahaan

Varchar (50) NO NO

IsFinished

Status yang menandakan apakah proyek yang ditangani telah selesai atau masih dalam proses pengerjaan Boolean NO NO CompletedDate Tanggal selesainya pengerjaan proyek Date YES NO

Tabel 4.12 Tabel Identifikasi Atribut dan Domain Atribut Entity ProjectStatu s ProjectStatus Attribute Description Data type and Length NULLS Multi valued StatusID

Kode status proyek yang ditangani perusahaan

Char (2) [S][1-9]

NO NO

(23)

mengenai status proyek yang ditangani oleh perusahaan (pending, active, cancelled, completed)

Tabel 4.13 Tabel Identifikasi Atribut dan Domain Atribut Entity Client Client

Attribute Description

Data type and

Length NULLS

Multi valued

ClientID

Kode dari klien yang berhubungan dengan perusahaan Char (6) must be [CL][0001-9999] NO NO ClientName

Nama dari klien yang berhubungan dengan perusahaan

Varchar (30) NO NO

ClientPhone

Telepon dari klien yang dapat dihubungi

Varchar (15) NO YES

ClientFax

Fax dari klien yang dapat dihubungi

Varchar (15) NO YES

(24)

masih aktif

ClientAddress

Alamat / lokasi tempat klien berada

Varchar (100) NO NO

Tabel 4.14 Tabel Identifikasi Atribut dan Domain Atribut Entity Stage Stage

Attribute Description

Data type and

Length NULLS

Multi valued

StageID

Kode stage dari proyek yang ditangani perusahaan Char (4) must be [SG] [01-99] NO NO StageDescription

Nama stage dari proyek yang ditangani

perusahaan

Varchar (30) NO NO

Tabel 4.15 Tabel Identifikasi Atribut dan Domain Atribut Entity News News

Attribute Description

Data type and

Length NULLS

Multi valued

NewsID

Kode berita yang ingin ditampilkan oleh perusahaan Char (9) must be [N][current year][/][current NO NO

(25)

month][/][01-99] (N08/01/01)

Title

Kode berita yang ingin ditampilkan oleh perusahaan

Varchar (30) NO NO

News

Isi dari berita yang ingin ditampilkan oleh

perusahaan

Varchar (300) NO NO

InsertedDate

Tanggal ditampilkannya berita di dalam website perusahaan

Date NO NO

DueDate

Tanggal batas akhir ditampilkannya berita

Date NO NO

Tabel 4.16 Tabel Identifikasi Atribut dan Domain Atribut Entity Holiday Holiday

Attribute Description

Data type and

Length NULLS

Multi valued

HolidayID

Kode unik yang berkaitan dengan hari libur perusahaan

Char (7) NO NO

HolidayDate

Tanggal libur pegawai yang ditetapkan

(26)

perusahaan dalam setahun

Event

Peristiwa yang berkaitan dengan hari libur

perusahaan

Varchar (30) NO NO

Tabel 4.17 Tabel Identifikasi Atribut dan Domain Atribut Entity AbsenceType AbsenceType

Attribute Description

Data type and

Length NULLS

Multi valued

AbsTypeID Kode yang berkaitan

dengan jenis absensi Char (1) NO NO

AbsTypeDescription

Keterangan mengenai jenis absensi yang dipilih oleh pegawai

Varchar (20) NO NO

ClaimPrice

Besarnya ganti rugi sesuai dengan jenis absennya

Decimal (10,2) YES NO

Tabel 4.18 Tabel Identifikasi Atribut dan Domain Atribut Entity LeaveType LeaveType

Attribute Description Data type and

Length

NULLS

Multi valued

LeaveTypeID Kode yang berkaitan

(27)

LeaveTypeDescription

Keterangan mengenai jenis cuti yang dipilih oleh pegawai

Varchar (20) NO NO

4.2.1.5 Identifikasi Kandidat dan Primary Key setiap Entiti Nama Entity Candidate key Primary Key Employee EmployeeID

Username Telephone Email

EmployeeID

Division DivisionID DivisionID

Privilege - -

Absence AbsenceID AbsenceID

LeaveRequest LeaveRequestID LeaveRequestID

Leave LeaveRequestID LeaveRequestID

LeaveEntitle EntitleID EntitleID

AllowClaim ClaimID ClaimID

NonAllowClaim ClaimID ClaimID

Project ProjectID ProjectID

ProjectStatus StatusID StatusID

Client ClientID ClientID

Stage StageID StageID

News NewsID NewsID

Holiday HolidayID HolidayID

AbsenceType AbsTypeID AbsTypeID

(28)

Employee EmployeeID Privilege Absence AbsenceID Le aveE ntitle Enti tleID LeaveReq uest Le aveReque stID Division Di visionID P roject Pro jectID AllowCl aim ClaimID NonAllowClaim ClaimID Stage StageID Cli ent Clien tID 1.. 1 1 ..1 1 ..1 1..1 1..* 1..* 0.. * 1..1 1..* 1 ..1 1.. * 0..* 1..* 1..1 1..* Holiday HolidayID News NewsID 1..1 1..* 1.. 1 0..* 1..1 0 ..* memiliki m em ohon m engi jink an Lmemp unyai memp unyai me mi lik i mem berikan menangani 1. .* 1..1 1..* m eng at ur Lmem pengaruh i 0..1 1..1 1. .1 0 ..* 0..* 0. .* mem publikasikan m engi s i me m e ri k sa dipe ngaruhi AMengajukan m engha s ilk an 0..1 1..1 0..* Lea veType LeaveType ID AbsenceType AbsenceTypeID 1..1 1 ..* 1. .* 1..1 P rojectSt at us S tat usID Pdimiliki 1..1 1. .* Ldi m ili ki di m ili ki S tD ipi lih dal am Dipilih dalam 1.. 1 0 ..* AMenyetujui 1..1 1.. 1 0..* 0..* N M eny et uj ui N M engaj uk an

Gambar 4.5 Conceptual Data Model Entity Relationship Diagram (ERD) with Primary Key

(29)

Emplo yee Employ eeID Priv ilege

Abs enc e Abs enc eID

LeaveEntitl e EntitleID

Leav eReq uest Leav eReques tID Div is ion

Div isio nID Projec t

Projec tID Allow Claim N onAllowC laim

Sta ge StageID C lient C lientID 1..1 1..1 1..1 1..1 1. .* 1..* 0..* 1..1 1..* 1..1 1..* 0..* 1..* 1..1 1..* H oliday H olidayID N ews N ews ID 1..1 1..* 0..* 1..1 0..* m em iliki me mo h on m en g ijin ka n Lm em puny ai m em punyai me mi lik i m em berik an m enangani 1..* 1..1 1..* m engatur Lm em pengaruhi 0..1 1..1 0..* 0..* 0..* m em pu b lika si ka n me ng is i me me ri ks a dipengaruhi M eng aj uk an m e ngh as ilk a n 0..1 1..1 0..* Leav eT ype Leav eTy peID Abs enc eTy pe Abs enceT y peID

1..1 1..* 1..* 1..1 P r oje ctS ta tus St atu sID P dim ilik i 1..1 1..* L di m ilik i di m ili ki S tD ipi lih da la m Dipilih dalam C laimR eques t Claim ID 1..1 0..* M en yet uj ui M anager 1..1 1..1

4.2.1.6 Pengunaan Enhanced Modeling Concept

Tahap ini bertujuan untuk mempertimbangkan penggunaan Enhanced Modeling Concept, dimana didalamnya termasuk spesialisasi / generalisasi, agregasi, dan komposisi

(30)

4.2.1.7 Validasi Model Konseptual Lokal Terhadap Transaksi Pengguna

Tahapan ini bertujuan untuk memastikan bahwa model konseptual lokal yang dibuat mendukung transaksi-transaksi yang dibutuhkan oleh pengguna. Pendekatan yang dipakai adalah menggunakan jalur arah transaksi (pathways) yang digambarkan dalam diagram ER untuk memeriksa terpenuhinya setiap transaksi. Adapun transaksi tersebut adalah sebagai berikut.

A. M enampilkan data absensi pegawai

B. M enampilkan data-data perkembangan proyek yang ditangani pegawai C. M enampilkan data-data pegawai

D. M enampilkan berita-berita yang dipublikasikan oleh pegawai E. M enampilkan tanggal status cuti pegawai

F. M enampilkan data-data claim pegawai

G. M enampilkan history cuti dan balance cuti pegawai

Dari transaksi-transaksi tersebut, maka dengan menggunakan gambar 4.5. (Diagram ER yang menggambarkan relasi antar entiti dengan penambahan primary key) akan dapat ditentukan pathways dari transaksi-transaksi yang ada. Sehingga model konseptual untuk mendukung transaksi pemakai dengan menggunakan pathways dapat dilihat pada gambar sebagai berikut :

(31)

Gambar 4.7 Model Konseptual yang Mendukung Transaksi User dengan Menggunakan Pathways

(32)

4.2.2 Perancangan Basis Data Logikal

Pada tahapan ini, model data konseptual yang telah dibuat akan dipetakan ke dalam model data logikal. Keseluruhan proses dari pengembangan pada tahap ini adalah penggunaan teknik normalisasi untuk menguji kebenaran model data logikal. Kemudian dari model data logikal lokal akan dikombinasikan menjadi model data logikal global tunggal. Adapun langkah-langkah dalam tahapan ini adalah sebagai berikut :

4.2.2.1 Menghilangkan Fitur yang Tidak Kompatibel

Tujuan pada langkah ini adalah untuk memperbaiki model data konseptual lokal dengan menghilangkan fitur yang tidak kompatibel dengan model relasional. Cara yang akan digunakan dalam langkah ini adalah dengan menghilangkan hubungan many-to-many (*:*) binary relationship types. Hasilnya dapat dilihat pada gambar diagram ER sebagai berikut :

1. M enghilangkan (*:*) many to many binary relationship

M enangani EmployeeID ProjectID Employee EmployeeID Project ProjectID 1..* 1..*

(33)

0..* 1..1 Holiday HolidayID Dimasukkan dalam Dipengaruhi 1..1 0..* 0..* LeaveRequest LeaveRequestID LeaveRequest LeaveRequestID LeaveRequestID HolidayID Holiday HolidayID LeaveHoliday LeaveRequestID HolidayID 0..* Dipengaruhi

(c)LeaveRequest dipengaruhi Holiday *:* relationship

(d) Dekomposisi relasi (c) kedalam 2 relasi (dipengaruhi dan dimasukkan dalam)

Ditangani 1..* 1..1 1..1 0..* ProjectMember EmployeeID ProjectID Employee EmployeeID Project ProjectID T erlibat dalam

(34)

1..1 Digunakan dalam 1..* 0..* 0..* Project ProjectID 1..1 1..* Stage StageID Project ProjectID ProjectID StageID Stage StageID ActivityPlan ProjectID StageID Sequence StartDate EndDate M engandung Memiliki

(e) Project mengandung Stage *:* relationship

(35)

2. M enghilangkan atribut multivalue Employee LeaveRequest Employee EmployeeID Phone [0…*] PersonalEm ail[0…*]

(a) Entiti Employee dengan atribut Phone dan PersonalEm ail yang multivalue

1..1 Employee EmployeeID EmpPhone EmpPhoneNum 0..* EPMempunyai 1..1 Employee EmployeeID PersonalEm ail EmpPersEmail 0..* EEMempunyai LeaveRequest LeaveRequestID LeaveDate[1…*]

(b) Entiti LeaveRequest dengan atribut LeaveDate yang m ultivalue

1..* 1..1 LeaveRequest LeaveRequestID Leave LeaveDate Dimiliki

(36)

Client 1..1 Client ClientID ClientFax ClientFaxNum 0..* CFMempunyai 0..* 1..1 0..* Client ClientID ClientPhone ClientPhoneNum CPMempunyai 1..1 Client ClientID ClientEmail ClientEmailAddr CMempunyai Client ClientID ClientPhone [0…*] ClientEmail[0…*] ClientFax[0…*]

(37)

EmployeeID di-post ke dalam Absence sebagai foreign key

4.2.2.2 Mendapatkan Relasi untuk Model Data Logikal Lokal 1. One to Many (1:*) binary relationship types

Untuk tiap-tiap relasi binary one-to-many (1:*), entity pertama dari relasi tersebut menjadi parent entity, dan entity berikutnya menjadi child entity.

Hubungan Employee mengisi Absence

Employee (EmployeeID, Username, Password , Name, Gender, Title, Address, Phone, OfficialEmail, PersonalEmail, BirthDate, Color, StartofService, EmpStatus, NPWP, EmpNotes, ResignDate)

Primary key EmployeeID

Absence(AbsenceID, EmployeeID, AbsDate , AbsenceNotes, AbsenceStatus, AbsClaimStatus, AbsenceReason,

BackDate,AbsActualDate) Primary key AbsenceID , Foreign key EmployeeID

(38)

EmployeeID di-post ke dalam LeaveRequest

sebagai foreign key

EmployeeID di-post ke dalam Project

sebagai foreign key

Hubungan Manager mengatur Project

Manager(EmployeeID, Username, Password , Name, Gender, Title, Address, Phone, OfficialEmail, PersonalEmail, BirthDate, Color, StartofService, EmpStatus, NPWP, EmpNotes, ResignDate)

Project(ProjectID, EmployeeID, ProjectName, IsFinished,

CompletedDate)

Primary key ProjectID Foreign key EmployeeID

Primary key EmployeeID

Hubungan Employee memohon LeaveRequest

Employee (EmployeeID, Username, Password , Name, Gender, Title, Address, Phone, OfficialEmail, PersonalEmail, BirthDate, Color, StartofService, EmpStatus, NPWP, EmpNotes, ResignDate)

Primary key EmployeeID

LeaveRequest(LeaveRequestID, EmployeeID, LStartDate, LEndDate, Duration, LeaveNotes, LRequestDate, LeaveDate, LRequestStatus,

LeaveReason, DecisionDate) Primary key LeaveRequestID Foreign key EmployeeID

(39)

EmployeeID di-post ke dalam LeaveRequest

sebagai foreign key

EmployeeID di-post ke dalam ClaimRequest

sebagai foreign key

Hubungan Employee LM empunyai LeaveEntitle

Employee (EmployeeID, Username, Password , Name, Gender, Title, Address, Phone, OfficialEmail, PersonalEmail, BirthDate, Color, StartofService, EmpStatus, NPWP, EmpNotes, ResignDate)

Primary key EmployeeID

LeaveEntitle (EmployeeID, EntitleID, LeaveRequestID , Duration, YearEntitle, EntitleStatus, EntitleActualDate)

Primary key EntitleID, Foreign key EmployeeID, LeaveRequestID

Hubungan Employee mengajukan ClaimRequest

Employee (EmployeeID, Username, Password , Name, Gender, Title, Address, Phone, OfficialEmail, PersonalEmail, BirthDate, Color, StartofService, EmpStatus, NPWP, EmpNotes, ResignDate)

Primary key EmployeeID

ClaimRequest (ClaimID, EmployeeID, ClaimType, CRequestDate,

CRequestStatus, ClaimReason) Primary key ClaimID

(40)

EmployeeID di-post ke dalam News sebagai

foreign key

DivisionID di-post ke dalam Em ployee

sebagai foreign key

Hubungan Manager mempublikasikan News

Employee (EmployeeID, Username, Password , Name, Gender, Title, Address, Phone, OfficialEmail, PersonalEmail, BirthDate, Color, StartofService, EmpStatus, NPWP, EmpNotes, ResignDate)

News (NewsID, EmployeeID, Title, News, InsertedDate, DueDate) Primary key NewsID

Foreign key EmployeeID

Primary key EmployeeID

Hubungan Employee mempunyai Division

Division(DivisionID, DivisionName) Primary key DivisionID

Employee (EmployeeID, DivisionID , Username, Password , Name, Gender, Title, Address, Phone, OfficialEmail, PersonalEmail, BirthDate, Color, StartofService, EmpStatus, NPWP, EmpNotes, ResignDate)

Primary key EmployeeID Foreign key DivisionID

(41)

ClientID di-post ke dalam Project sebagai

foreign key

LeaveRequestID di-post ke dalam

LeaveRequest sebagai foreign key

Hubungan Client memberikan Project

Client (ClientID, ClientName, ClientPhone, ClientFax, ClientEmail, ClientAddress)

Primary key ClientID

Project(ProjectID, ClientID , ProjectName, IsFinished, CompletedDate)

Primary key ProjectID

Foreign key ClientID

Hubungan LeaveEntitle Lmempengaruhi LeaveRequest

LeaveRequest(LeaveRequestID, EmployeeID, LStartDate, LEndDate, Duration, LeaveNotes, LRequestDate, LeaveDate, LRequestStatus,

LeaveReason, DecisionDate) Primary key LeaveRequestID Foreign key EmployeeID

LeaveEntitle (LeaveRequestID , EmployeeID, EntitleID, Duration, YearEntitle, EntitleStatus,

EntitleActualDate) Primary key EntitleID, Foreign key EmployeeID, LeaveRequestID

(42)

ProjectID di-post ke dalam Absence sebagai foreign key

StageID di-post ke dalam Absence sebagai foreign key

Hubungan Project dipilih dalam Absence

Project(ProjectID, EmployeeID, ProjectName, IsFinished,

CompletedDate)

Primary key ProjectID Foreign key EmployeeID

Absence(AbsenceID, ProjectID, EmployeeID, AbsDate , AbsenceNotes, AbsenceStatus, AbsClaimStatus, AbsenceReason,

BackDate,AbsActualDate) Primary key AbsenceID

Foreign key EmployeeID, ProjectID

Hubungan Stage Sdipilih dalam Absence

Stage(StageID, StageDescription) Primary key StageID

Absence(AbsenceID, StageID, ProjectID, EmployeeID, AbsDate , AbsenceNotes, AbsenceStatus, AbsClaimStatus,

AbsenceReason,

BackDate,AbsActualDate) Primary key AbsenceID

Foreign key EmployeeID, ProjectID, StageID

(43)

AbsT ypeID di-post ke dalam Absence sebagai foreign key

LeaveTypeID di-post ke dalam

LeaveRequest sebagai foreign key

Hubungan AbsenceType dimiliki Absence

AbsenceType(AbsTypeID,

AbsTypeDescription, ClaimPrice) Primary key AbsTypeID

Absence(AbsenceID, AbsTypeID, StageID, ProjectID, EmployeeID, AbsDate , AbsenceNotes, AbsenceStatus, AbsClaimStatus,

AbsenceReason,

BackDate,AbsActualDate) Primary key AbsenceID

Foreign key EmployeeID, ProjectID, StageID

Hubungan LeaveType Ldimiliki LeaveRequest

LeaveType(LeaveTypeID, LeaveTypeDescription) Primary key LeaveTypeID

LeaveRequest(LeaveTypeID , LeaveRequestID, EmployeeID, LStartDate, LEndDate, Duration, LeaveNotes, LRequestDate, LeaveDate, LRequestStatus, LeaveReason,

DecisionDate)

Primary key LeaveRequestID

(44)

Hubungan Employee terlibat dalam ProjectMember

Hubungan Project ditangani ProjectMember

Employee (EmployeeID, Username, Password , Name, Gender, Title, Address, Phone, OfficialEmail, PersonalEmail, BirthDate, Color, StartofService, EmpStatus, NPWP, EmpNotes, ResignDate)

Primary key EmployeeID

Project(ProjectID, ProjectName, IsFinished, CompletedDate) Primary key ProjectID

ProjectMember (EmployeeID, ProjectID)

Foreign key EmployeeID references Employee(EmployeeID) Foreign key ProjectID references Project(ProjectID)

(45)

Hubungan LeaveRequest dipengaruhi LeaveHoliday

Hubungan Holiday dimasukkan dalam LeaveHoliday

LeaveRequest(LeaveRequestID, LStartDate, LEndDate, Duration, LeaveNotes, LRequestDate, LeaveDate, LRequestStatus, LeaveReason,

DecisionDate)

Primary key LeaveRequestID

Holiday (HolidayID, HolidayDate, Event)

Primary key HolidayID

LeaveHoliday (LeaveRequestID, HolidayID)

Foreign key LeaveRequestID references LeaveRequest(LeaveRequestID) Foreign key HolidayID references Holiday(HolidayID)

(46)

EmployeeID di-post ke dalam EmpPhone sebagai foreign key

Hubungan Project Pmemiliki ActivityPlan

Hubungan Stage digunakan dalam ActivityPlan

Project(ProjectID, ProjectName, IsFinished, CompletedDate) Primary key ProjectID

Stage(StageID, StageDescription) Primary key StageID

ActivityPlan (ProjectID, StageID, Sequence, StartDate, EndDate) Foreign key ProjectID references Project(ProjectID)

Foreign key StageID references Stage (StageID)

Hubungan Employee EPmemiliki EmpPhone

Employee (EmployeeID, Username, Password , Name, Gender, Title,

Address, OfficialEmail, PersonalEmail, BirthDate, Color, StartofService,

EmpStatus, NPWP, EmpNotes, ResignDate)

Primary key EmployeeID

EmpPhone (EmployeeID , EmpPhoneNum,)

Primary key EmpPhoneNum Foreign key EmployeeID

(47)

EmployeeID di-post ke dalam EmpPhone sebagai foreign key

LeaveRequestID di-post ke dalam Leave

sebagai foreign key

Hubungan Employee EEmemiliki PersonalEmail

Employee (EmployeeID, Username, Password , Name, Gender, Title, Address, Phone, OfficialEmail, BirthDate, Color, StartofService, EmpStatus, NPWP, EmpNotes, ResignDate)

Primary key EmployeeID

PersonalEmail (EmployeeID, EmpPersEmail)

Primary key EmpPersEmail Foreign key EmployeeID

Hubungan Leave dimiliki LeaveRequest

LeaveRequest(LeaveRequestID, LStartDate, LEndDate, Duration, LeaveNotes, LRequestDate, LRequestStatus, LeaveReason, DecisionDate)

Primary key LeaveRequestID

Leave (LeaveDate, LeaveRequestID) Primary key LeaveRequestID, LeaveDate

(48)

ClientID di-post ke dalam ClientPhone sebagai foreign key

ClientID di-post ke dalam ClientEmail sebagai foreign key

ClientID di-post ke dalam ClientFax sebagai foreign key

Hubungan Client CPmemiliki ClientPhone

Client (ClientID, ClientName,

ClientFax, ClientEmail, ClientAddress) Primary key ClientID

ClientPhone (ClientID, ClientPhoneNum)

Primary key ClientPhoneNum Foreign key ClientID

Hubungan Client Cmemiliki ClientEmail

Client (ClientID, ClientName,

ClientPhone, ClientFax, ClientAddress) Primary key ClientID

ClientEmail (ClientID, ClientEmailAddr)

Primary key ClientEmailAddr Foreign key ClientID

Hubungan Client CFmemiliki ClientFax

Client (ClientID, ClientName, ClientPhone, ClientEmail, ClientAddress)

Primary key ClientID

ClientFax (ClientID, ClientFaxNum) Primary key ClientFaxNum

(49)

StatusID di-post ke dalam Project sebagai

foreign key

EmployeeID di-post ke dalamPrivilege

sebagai foreign key

Hubungan ProjectStatus Pdimiliki Project

ProjectStatus (StatusID, StatusProjectDescription) Primary key StatusID

Project (ProjectID, StatusID, ProjectName, IsFinished, CompletedDate)

Primary key ProjectID Foreign key StatusID

2. One toOne (1:1) binary relationship types

Mandatory participation di salah satu sisi dari 1:1 relationship

Hubungan Manager memiliki Privilege

Manager (EmployeeID, Username, Password , Name, Gender, Title, Address, Phone, OfficialEmail, BirthDate, Color, StartofService, EmpStatus, NPWP, EmpNotes, ResignDate)

Primary key EmployeeID

Privilege (Payer, EmployeeID ,

AppLeave, AppClaim, VerifierAbsence, SuperUser, NewsEditor, HolidayEditor, ProjectManager)

Primary key EmployeeID Foreign key EmployeeID

(50)

AbsenceID di-post ke dalam AllowClaim sebagai foreign key

Hubungan Absence menghasilkan AllowClaim

Absence(AbsenceID, AbsDate , AbsenceNotes, AbsenceStatus, AbsClaimStatus,

AbsenceReason,

BackDate,AbsActualDate) Primary key AbsenceID

AllowClaim (AbsenceID , ClaimID,

AllowClaimPrice,

CRequestDate,CRequestStatus, ClaimReason)

Primary key ClaimID Foreign key AbsenceID

3. Superclass / subclass relationship types

Mandatory participation disjoint constraint

AllowClaim (EmployeeID, AbsenceID, ClaimID, AllowClaimPrice, CRequestDate, CRequestStatus, ClaimReason)

Primary key ClaimID Foreign key AbsenceID

NonAllowClaim (EmployeeID, ClaimID, NACDescription, Price, CRequestDate, CRequestStatus, ClaimReason)

(51)

• Hubungan optional Manager dengan Employee

Tabel 4.19 Tabel Hasil Relasi Sebelum Normalisasi

Employee Employee (EmployeeID, DivisionID ,

Username, Password , Name, Gender, Title, Address, OfficialEmail, BirthDate, Color, StartofService, EmpStatus, NPWP, EmpNotes, ResignDate)

Primary key EmployeeID

Foreign key DivisionID references Division (DivisionID)

Manager Manager (EmployeeID, MgrEmployeeID)

Primary key MgrEmployeeID Foreign key EmployeeID references Employee(EmployeeID)

EmpPhone EmpPhone (EmployeeID ,

EmpPhoneNum)

Primary key EmpPhoneNum

Foreign key EmployeeID references Employee (EmployeeID) 1..1 Manager EmployeeID MgrEmployeeID Employee EmployeeID IS-A 1..1

(52)

PersonalEmail PersonalEmail (EmployeeID, EmpPersEmail)

Primary key EmpPersEmail

Foreign key EmployeeID references Employee (EmployeeID)

Division Division (DivisionID, DivisionName)

Primary key DivisionID

Privilege Privilege (MgrEmployeeID,

VerifierAbsence, AppLeave, AppClaim, Payer, NewsEditor, HolidayEditor, ProjectManager, SuperUser) Primary key MgrEmployeeID

Foreign key MgrEmployeeID references Manager (MgrEmployeeID)

LeaveRequest LeaveRequest (LeaveRequestID,

LeaveTypeID, EmployeeID,

MgrEmployeeID LStartDate, LEndDate, Duration, LeaveNotes, LRequestDate, LRequestStatus, LeaveReason,

DecisionDate)

Primary key LeaveRequestID

Foreign key EmployeeID references Employee (EmployeeID)

(53)

LeaveType (LeaveTypeID)

Foreign key MgrEmployeeID references Manager (MgrEmployeeID)

Leave Leave (LeaveDate, LeaveRequestID) Primary key LeaveRequestID, LeaveDate Foreign key LeaveRequestID references LeaveRequest (LeaveRequestID)

LeaveEntitle LeaveEntitle (LeaveRequestID ,

EmployeeID, EntitleID, Duration, YearEntitle, EntitleStatus,

EntitleActualDate) Primary key EntitleID

Foreign key EmployeeID references Employee (EmployeeID)

Foreign key LeaveRequestID references LeaveRequest (LeaveRequestID)

LeaveHoliday LeaveHoliday (LeaveRequestID, HolidayID)

Foreign key LeaveRequestID references LeaveRequest(LeaveRequestID)

Foreign key HolidayID references Holiday(HolidayID)

LeaveType LeaveType (LeaveTypeID,

(54)

Primary key LeaveTypeID

Absence Absence (AbsenceID, AbsTypeID,

StageID, ProjectID, EmployeeID, MgrEmployeeID, AbsDate , AbsenceNotes, AbsenceStatus, AbsClaimStatus,

AbsenceReason,

BackDate,AbsActualDate) Primary key AbsenceID

Foreign key EmployeeID references Employee (EmployeeID)

Foreign key ProjectID references Project (ProjectID)

Foreign key StageID references Stage (StageID)

Foreign key MgrEmployeeID references Manager (MgrEmployeeID)

Foreign key AbsTypeID references AbsenceType (AbsTypeID)

AbsenceType AbsenceType (AbsTypeID,

AbsTypeDescription, ClaimPrice) Primary key AbsTypeID

AllowClaim AllowClaim (AbsenceID, ClaimID,

(55)

CRequestDate, CRequestStatus, ClaimReason)

Primary key ClaimID

Foreign key AbsenceID references Absence (AbsenceID)

Foreign key EmployeeID references Employee (EmployeeID)

NonAllowClaim NonAllowClaim (ClaimID, EmployeeID ,

Sequence, NACDescription, Price, CRequestDate, CRequestStatus, ClaimReason)

Primary key ClaimID

Foreign key EmployeeID references Employee (EmployeeID)

Project Project (ProjectID, MgrEmployeeID ,

ClientID , StatusID, ProjectName, IsFinished, CompletedDate) Primary key ProjectID

Foreign key ClientID references Client (ClientID)

Foreign key StatusID references Status (StatusID)

Foreign key MgrEmployeeID references Manager (MgrEmployeeID)

(56)

ProjectMember ProjectMember (EmployeeID, ProjectID) Foreign key EmployeeID references Employee(EmployeeID)

Foreign key ProjectID references Project(ProjectID)

ProjectStatus ProjectStatus (StatusID,

StatusProjectDescription) Primary key StatusID

Client Client (ClientID, ClientName,

ClientAddress) Primary key ClientID

ClientPhone ClientPhone (ClientID, ClientPhoneNum) Primary key ClientPhoneNum

Foreign key ClientID references Client(ClientID)

ClientEmail ClientEmail (ClientID, ClientEmailAddr) Primary key ClientEmailAddr

Foreign key ClientID references Client(ClientID)

ClientFax ClientFax (ClientID, ClientFaxNum) Primary key ClientFaxNum

(57)

Client(ClientID)

Stage Stage(StageID, StageDescription) Primary key StageID

News News (NewsID, MgrEmployeeID, Title,

News, InsertedDate, DueDate) Primary key NewsID

Foreign key MgrEmployeeID references Manager(MgrEmployeeID)

Holiday Holiday (HolidayID, HolidayDate, Event) Primary key HolidayID

ActivityPlan ActivityPlan (ProjectID, StageID, Sequence, StartDate, EndDate) Foreign key ProjectID references Project(ProjectID)

Foreign key StageID references Stage (StageID)

(58)

4.2.2.3 Normalisasi

Tujuan dari normalisasi adalah untuk memvalidasi relasi-relasi dalam model data logikal lokal dengan menggunakan teknik-teknik normalisasi.

Semua relasi telah memenuhi 1NF karena tidak ditemukan field yang mengalami redundansi data.

Pada entitas Employee

Employee = (@EmployeeID + DivisionID +Username+ Password + Name + Gender + Title + Address + OfficialEmail + BirthDate + Color + StartofService + EmpStatus + NPWP + EmpNotes + ResignDate) 2NF

Di dalam entitas Employee, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak

diperlukan normalisasi 2NF. 3NF

Di dalam entitas Employee, tidak terdapat ketergantungan transitif.

Pada entitas Manager

Manager = (@MgrEmployeeID + EmployeeID) 2NF

Di dalam entitas Manager, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak diperlukan normalisasi 2NF.

3NF

(59)

Pada Entitas EmpPhone

EmpPhone = (@EmpPhoneNum + EmployeeID) 2NF

Di dalam entitas EmpPhone, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak

diperlukan normalisasi 2NF. 3NF

Di dalam entitas EmpPhone, tidak terdapat ketergantungan transitif.

Pada Entitas PersonalEmail

PersonalEmail = (@EmpPersEmail + EmployeeID)

2NF

Di dalam entitas PersonalEmail, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak

diperlukan normalisasi 2NF. 3NF

Di dalam entitas PersonalEmail, tidak terdapat ketergantungan transitif.

Pada Entitas Division

Division = (@DivisionID + DivisionName)

2NF

Di dalam entitas Division, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak diperlukan normalisasi 2NF.

(60)

3NF

Di dalam entitas Division, tidak terdapat ketergantungan transitif

Pada Entitas Privilege

Privilege = (@MgrEmployeeID + VerifierAbsence + AppLeave + AppClaim + Payer + NewsEditor + HolidayEditor + ProjectManager + SuperUser)

2NF

Di dalam entitas Privilege, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak diperlukan normalisasi 2NF.

3NF

Di dalam entitas Privilege, tidak terdapat ketergantungan transitif

Pada Entitas LeaveRequest

LeaveRequest = (@LeaveRequestID + LeaveTypeID + EmployeeID + MgrEmployeeID + LStartDate + LEndDate + Duration + LeaveNotes + LRequestDate + LRequestStatus + LeaveReason + DecisionDate)

2NF

Di dalam entitas LeaveRequest, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak

diperlukan normalisasi 2NF. 3NF

Di dalam entitas LeaveRequest, tidak terdapat ketergantungan transitif

Pada Entitas Leave

(61)

2NF

Di dalam entitas Leave, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak diperlukan normalisasi 2NF.

3NF

Di dalam entitas Leave, tidak terdapat ketergantungan transitif

Pada Entitas LeaveEntitle

LeaveEntitle = (@LeaveRequestID + EmployeeID + EntitleID + Duration + YearEntitle + EntitleStatus + EntitleActualDate)

2NF

Di dalam entitas LeaveEntitle, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak

diperlukan normalisasi 2NF. 3NF

Di dalam entitas LeaveEntitle, tidak terdapat ketergantungan transitif

Pada Entitas LeaveHoliday

LeaveHoliday = (@LeaveRequestID + HolidayID)

2NF

Di dalam entitas LeaveHoliday, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak

diperlukan normalisasi 2NF. 3NF

(62)

Pada Entitas LeaveType

LeaveType = (@LeaveTypeID, LeaveTypeDescription)

2NF

Di dalam entitas LeaveType, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak

diperlukan normalisasi 2NF. 3NF

Di dalam entitas LeaveType, tidak terdapat ketergantungan transitif

Pada Entitas Absence

Absence = (@AbsenceID + AbsTypeID + StageID + ProjectID + EmployeeID + MgrEmployeeID + AbsDate + AbsenceNotes + AbsenceStatus + AbsClaimStatus + AbsenceReason + BackDate + AbsActualDate)

2NF

Di dalam entitas Absence, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak diperlukan normalisasi 2NF.

3NF

Di dalam entitas Absence, tidak terdapat ketergantungan transitif

Pada Entitas AbsenceType

AbsenceType = (@AbsTypeID + AbsTypeDescription + ClaimPrice) 2NF

Di dalam entitas AbsenceType, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak

(63)

diperlukan normalisasi 2NF. 3NF

Di dalam entitas AbsenceType, tidak terdapat ketergantungan transitif

Pada Entitas AllowClaim UNF

AllowClaim= (EmployeeID + MgrEmployeeID + ClaimID+{ AllowClaimPrice+

AbsenceID}+ CRequestDate+CRequestStatus+ ClaimReason) 1NF

AllowClaim= @EmployeeID + MgrEmployeeID + @ClaimID+AllowClaimPrice+ @AbsenceID+

CRequestDate+CRequestStatus+ ClaimReason 2NF

AllowClaimDetail =@ClaimID+AllowClaimPrice+ @AbsenceID AllowClaimHeader=@EmployeeID + MgrEmployeeID + @ClaimID+

CRequestDate+CRequestStatus+ ClaimReason 3NF

AllowClaimDetail =@ClaimID+AllowClaimPrice+ @AbsenceID

Employee=@EmployeeID Manager = @MgrEmployeeID

AllowClaimHeader= EmployeeID + MgrEmployeeID + @ClaimID+CRequestDate+ CRequestStatus+ ClaimReason Absence=@AbsenceID

(64)

Pada Entitas NonAllowClaim UNF

NonAllowClaim = (EmployeeID + MgrEmployeeID + ClaimID + Sequence + {NACDescription + Price}+ CRequestDate + CRequestStatus + ClaimReason)

1NF

NonAllowClaim= @EmployeeID+ MgrEmployeeID + @ClaimID + @Sequence + NACDescription+ Price+ CRequestDate+ CRequestStatus+ ClaimReason

2NF

NonAllowClaimDetail = @ClaimID + NACDescription+ @Sequence+ Price

NonAllowClaimHeader= @EmployeeID + MgrEmployeeID + @ClaimID +

CRequestDate + CRequestStatus + ClaimReason 3NF

NonAllowClaimDetail = @ClaimID + NACDescription + @Sequence + Price Employee=@EmployeeID

Manager = @MgrEmployeeID

NonAllowClaimHeader==EmployeeID + MgrEmployeeID + @ClaimID +

CRequestDate + CRequestStatus + ClaimReason

Pada Entitas Project

Project = (@ProjectID + MgrEmployeeID + ClientID + ProjectName + IsFinished + CompletedDate)

(65)

2NF

Di dalam entitas Project , semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak diperlukan normalisasi 2NF.

3NF

Di dalam entitas Project, tidak terdapat ketergantungan transitif

Pada Entitas ProjectMember

ProjectMember = (@EmployeeID + ProjectID)

2NF

Di dalam entitas ProjectMember, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak

diperlukan normalisasi 2NF. 3NF

Di dalam entitas ProjectMember, tidak terdapat ketergantungan transitif

Pada Entitas ProjectStatu s

ProjectStatus = (@StatusID + StatusProjectDescription)

2NF

Di dalam entitas ProjectStatus, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak

diperlukan normalisasi 2NF. 3NF

Di dalam entitas ProjectStatus, tidak terdapat ketergantungan transitif

(66)

Client = (@ClientID + ClientName + ClientAddress)

2NF

Di dalam entitas Client, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak diperlukan normalisasi 2NF.

3NF

Di dalam entitas Client, tidak terdapat ketergantungan transitif

Pada Entitas Stage

Stage = (@StageID + StageDescription)

2NF

Di dalam entitas Stage, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak diperlukan normalisasi 2NF.

3NF

Di dalam entitas Stage, tidak terdapat ketergantungan transitif

Pada Entitas News

News = (@NewsID + EmployeeID + MgrEmployeeID + Title + News + InsertedDate + DueDate)

2NF

Di dalam entitas News, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak diperlukan normalisasi 2NF.

(67)

Di dalam entitas News, tidak terdapat ketergantungan transitif

Pada Entitas Holiday

Holiday = (@HolidayID + HolidayDate + Event)

2NF

Di dalam entitas Holiday, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak diperlukan normalisasi 2NF.

3NF

Di dalam entitas Holiday, tidak terdapat ketergantungan transitif

Pada Entitas ActivityPlan

ActivityPlan = (@ProjectID + StageID + Sequence + StartDate + EndDate)

2NF

Di dalam entitas ActivityPlan, semua atribut yang ada pada entitas tersebut sudah full-functional dependency sehingga tidak

diperlukan normalisasi 2NF. 3NF

Di dalam entitas ActivityPlan, tidak terdapat ketergantungan transitif

4.2.2.4 Mendefinisikan Integrity Constraint • Kebutuhan data

Beberapa atribut tertentu dari entitas ataupun relasi haruslah memiliki nilai yang valid, dengan kata lain atribut-atribut ini tidak diperkenankan memiliki nilai null.

(68)

Aturan-aturan seperti ini telah diidentifikasikan pada saat atribut didokumentasikan di kamus data.

• Kendala Atribut domain

Setiap atribut memiliki sebuah domain, yaitu kumpulan dari nilai yang legal. Aturan-aturan seperti ini harus telah diidentifikasikan pada saat memilih atribut-atribut domain untuk data model.

• Entity Integrity

Primary key dari suatu entitas tidak boleh memiliki nilai null. Aturan-aturan seperti ini harus telah dipertimbangkan pada saat mengidentifikasikan primary key untuk setiap entitas.

• Referential Integrity

Employee (EmployeeID, DivisionID, Username, Password , Name , Gender , Title , Address , OfficialEmail , BirthDate , Color , StartofService , EmpStatus , NPWP , EmpNotes , ResignDate)

Primary key EmployeeID

Foreign key DivisionID references Division (DivisionID) ON UPDATE CASCADE ON DELETE NO ACTION

Manager (EmployeeID, MgrEmployeeID)

Primary key MgrEmployeeID

Foreign key EmployeeID references Employee (EmployeeID) ON UPDATE CASCADE ON DELETE NO ACTION

EmpPhone (EmployeeID, EmpPhoneNum) Primary key EmpPhoneNum

(69)

Foreign key EmployeeID references Employee (EmployeeID) ON UPDATE CASCADE ON DELETE CASCADE

PersonalEmail (EmployeeID, EmpPersEmail) Primary key EmpPersEmail

Foreign key EmployeeID references Employee (EmployeeID) ON UPDATE CASCADE ON DELETE CASCADE

Division (DivisionID, DivisionName) Primary key DivisionID

Privilege (MgrEmployeeID , VerifierAbsence , AppLeave , AppClaim , Payer , NewsEditor , HolidayEditor , ProjectManager , SuperUser)

Primary key EmployeeID

Foreign key MgrEmployeeID references Manager (MgrEmployeeID) ON UPDATE CASCADE ON DELETE CASCADE

LeaveRequest (LeaveRequestID , LeaveTypeID , EmployeeID , MgrEmployeeID , LStartDate , LEndDate , Duration , LeaveNotes , LRequestDate , LRequestStatus , LeaveReason , DecisionDate)

Primary key LeaveRequestID

Foreign key EmployeeID references Employee (EmployeeID) ON UPDATE CASCADE ON DELETE CASCADE

(70)

Foreign key LeaveTypeID references LeaveType (LeaveTypeID) ON UPDATE CASCADE ON DELETE NO ACTION

Foreign key MgrEmployeeID references Manager (MgrEmployeeID) ON UPDATE CASCADE ON DELETE NO ACTION

Leave (LeaveRequestID , LeaveDate) Primary key LeaveRequestID, LeaveDate

Foreign key LeaveRequestID references LeaveRequest (LeaveRequestID) ON UPDATE CASCADE ON DELETE CASCADE

LeaveEntitle (LeaveRequestID , EmployeeID , EntitleID , Duration , YearEntitle , EntitleStatus , EntitleActualDate)

Primary key EntitleID

Foreign key EmployeeID references Employee (EmployeeID) ON UPDATE CASCADE ON DELETE CASCADE

Foreign key LeaveRequestID references LeaveRequest (LeaveRequestID) ON UPDATE CASCADE ON DELETE CASCADE

LeaveHoliday (LeaveRequestID , HolidayID)

Foreign key LeaveRequestID references LeaveRequest(LeaveRequestID) ON UPDATE CASCADE ON DELETE NO ACTION

Foreign key HolidayID references Holiday(HolidayID) ON UPDATE CASCADE ON DELETE NO ACTION

LeaveType (LeaveTypeID, LeaveTypeDescription) Primary key LeaveTypeID

(71)

Absence (AbsenceID , AbsTypeID , StageID , ProjectID , EmployeeID , MgrEmployeeID , AbsDate , AbsenceNotes , AbsenceStatus , AbsClaimStatus , AbsenceReason , BackDate , AbsActualDate)

Primary key AbsenceID

Foreign key EmployeeID references Employee (EmployeeID) ON UPDATE CASCADE ON DELETE CASCADE

Foreign key ProjectID references Project (ProjectID) ON UPDATE CASCADE ON DELETE NO ACTION

Foreign key StageID references Stage (StageID) ON UPDATE CASCADE ON DELETE NO ACTION

Foreign key MgrEmployeeID references Manager (MgrEmployeeID) ON UPDATE CASCADE ON DELETE NO ACTION

Foreign key AbsTypeID references AbsenceType (AbsTypeID) ON UPDATE CASCADE ON DELETE NO ACTION

AbsenceType (AbsTypeID , AbsTypeDescription , ClaimPrice) Primary key AbsTypeID

AllowClaimDetail (ClaimID,AllowClaimPrice, AbsenceID) Primary key ClaimID

Foreign key AbsenceID references Absence (AbsenceID) ON UPDATE CASCADE ON DELETE NO ACTION

(72)

Foreign key ClaimID references AllowClaimHeader (ClaimID) ON UPDATE CASCADE ON DELETE CASCADE

AllowClaimHeader (EmployeeID, MgrEmployeeID , ClaimID,CRequestDate, CRequestStatus, ClaimReason)

Primary key ClaimID

Foreign key MgrEmployeeID references Manager (MgrEmployeeID) ON UPDATE CASCADE ON DELETE NO ACTION

Foreign key EmployeeID references Employee (EmployeeID) ON UPDATE CASCADE ON DELETE NO ACTION

NonAllowClaimDetail (ClaimID , NACDescription, Sequence, Price)

Primary key ClaimID, Sequence

Foreign key ClaimID references AllowClaimHeader (ClaimID) ON UPDATE CASCADE ON DELETE CASCADE

NonAllowClaimHeader (EmployeeID, MgrEmployeeID , ClaimID,

CRequestDate,CRequestStatus, ClaimReason)

Primary key ClaimID

Foreign key EmployeeID references Employee (EmployeeID) ON UPDATE CASCADE ON DELETE NO ACTION

Foreign key MgrEmployeeID references Manager (MgrEmployeeID) ON UPDATE CASCADE ON DELETE NO ACTION

(73)

Project (ProjectID , ClientID , MgrEmployeeID, ProjectName , IsFinished , CompletedDate)

Primary key ProjectID

Foreign key ClientID references Client (ClientID) ON UPDATE CASCADE ON DELETE NO ACTION

Foreign key StatusID references Status (StatusID) ON UPDATE CASCADE ON DELETE NO ACTION

Foreign key MgrEmployeeID references Manager (MgrEmployeeID) ON UPDATE CASCADE ON DELETE NO ACTION

ProjectMember (EmployeeID , ProjectID)

Foreign key EmployeeID references Employee(EmployeeID) ON UPDATE CASCADE ON DELETE CASCADE

Foreign key ProjectID references Project(ProjectID) ON UPDATE CASCADE ON DELETE CASCADE

ProjectStatus (StatusID , StatusProjectDescription) Primary key StatusID

Client (ClientID , ClientName, ClientAddress ) Primary key ClientID

ClientPhone (ClientID, ClientPhoneNum)

Gambar

Tabel 4.2 Tabel Kamus Data yang Menunjukkan Relasi Antar Tipe Entiti Entity Name  Multiplicity  Relationship  Entity Name  Multiplicity
Tabel 4.4 Tabel Identifikasi Atribut dan Domain Atribut Entity Division  Division
Tabel 4.6 Tabel Identifikasi Atribut dan Domain Atribut Entity LeaveRequest  LeaveRequest
Tabel 4.7 Tabel Identifikasi Atribut dan Domain Atribut Entity LeaveEntitle  LeaveEntitle
+7

Referensi

Dokumen terkait

Kelurahan yang termasuk kategori ini adalah Kelurahan Pabatu (Kecamatan Padang Hulu); Kelurahan Lalang (Kecamatan Rambutan); Kelurahan Teluk Karang (Kecamatan

Manajemen berkeyakinan bahwa asumsi-asumsi yang digunakan dalam estimasi nilai pakai dalam laporan keuangan konsolidasian adalah tepat dan wajar, namun demikian,

Sebagai rekomendasi dari penulis, akan lebih sempurna jika multimedia ini dilakukan uji efektifitas agar dapat digunakan guru dalam proses pembelajaran fisika untuk meningkatkan

Dengan rahmat Allah SWT alhamdulillah penulis dapat menyelesaikan skripsi ini dengan judul “Manajemen Bank Sampah Dalam Pemberdayaan Ekonomi Nasabah (Studi Kasus

Dari penjelasan diatas, maka tujuan dari penelitian ini adalah untuk mengetahui pengaruh struktur kepemilikan, profitabilitas, pertumbuhan aktiva terhadap struktur modal

Metode yang digunakan untuk mengetahui pengaruh harga dasar gabah, produktivitas dan upah kerja terhadap nilai tukar petani di Provinsi Jawa Timur adalah metode Ordinary Least

Kewajiban tersebut saat ini diatur dalam Pasal 11 ayat (2) PP Nomor 83 tahun 2008 yang menyatakan pelaksanaan pemberian bantuan hukum secara cuma-cuma dilaporkan

Hasil penelitian ini akan memberikan wawasan pengetahuan tentang masalah yang diteliti, sehingga dapat memperoleh gambaran yang lebih jelas mengenai peranan sistem pengolahan