4.2.2 Perancangan Basis Data Logikal
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..*
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
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
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
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…*]
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
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
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 Foreign key EmployeeID
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
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,
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,
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
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)
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)
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
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
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
StatusID di-post ke dalam Project sebagai foreign key
EmployeeID di-post ke dalam Privilege
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
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)
• 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
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)
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,
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,
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
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
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
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
• 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.
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
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
• 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
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
• 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 +
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 • Pada Entitas Client
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.
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