BAB 4 PERANCANGAN DAN I MPLEMENTASI
4.1 Perancangan Basis Data Untuk merancang basis data yang nantinya akan digunakan pada PT. Bajra M andalasakti, teknik perancangan ini secara garis besar akan terbagi menjadi: a. Perancangan basis data konseptual b. Perancangan basis data logikal c. Perancangan basis data fisikal
4.1.1
Perancangan Basis Data Konseptual Perancangan basis data konseptual adalah proses membuat atau menyusun model data dari sistem yang berjalan di perusahaan. M odel data yang disusun berupa pertimbangan secara fisik dan independen. Ada langkah-langkah dalam perancangan basis data konseptual, di antaranya: a.
M enentukan entitas-entitas
b.
M enentukan relasi antara entitas
c.
M engidentifikasi dan mengasosiasikan atribut dengan entitas atau relasi
d.
M enentukan key seperti candidate dan primary key
e.
M empertimbangkan Enhanced Modelling Concept.
f.
Validasi antara model data yang disusun dengan proses bisnis yang berjalan 78
79
4.1.1.1 Menentukan Entitas-Entitas Yaitu menentukan entitas dari kebutuhan perusahaan. Pertama-tama kita pisahkan bagian yang bersifat kata benda seperti gambar, proyek, klien, drafters, checkers, engineers, dan project manager.
Setelah
itu
menentukan
apakah
ada yang bisa
ditambahkan ke entitas yang telah didapatkan dari kebutuhan perusahaan seperti waktu pengerjaan. Agar lebih mudah dimengerti lihat tabel di bawah ini. Tabel 4.1 Kamus Data Entitas Entity
Description
Alias
Occurence
Projects
M enggambarkan
Proyek
Ketika klien memesan
proyek drawing yang
suatu pekerjaan kepada
diterima oleh PT.
PT. Bajra M andalasakti
Bajra M andalasakti
maka proyek akan dibentuk.
Drawings
Gambar-gambar
Gambar
Drawing terjadi ketika
yang diproduksi
proyek yang sedang
terhadap permintaan
berjalan membutuhkan
proyek dari Client
gambar baru yang diinisialisasi oleh Project M anager/
80
Engineers. DrawingRead
Berisi seluruh
ReadHistory
Ketika ada yang
History
catatan riwayat
melakukan
pembacaan gambar
pengunduhan terhadap gambar UpdateHistory Ketika ada yang
DrawingUpdate
Berisi seluruh
History
catatan riwayat
melakukan upload
peng-update-an
gambar
gambar Drafters
Istilah umum untuk
Penggambar
Drafters adalah orang
orang yang
yang bertugas untuk
berwenang membuat
membuat gambar.
gambar di PT. Bajra
Seorang drafters dapat
M andalasakti
mengerjakan beberapa gambar.
ClientCompanies Istilah umum untuk
Klien
M uncul ketika ada
perusahaan yang
permintaan akan
melakukan
sebuah proyek ke
permintaan proyek
perusahaan. Seorang
ke PT. Bajra
klien dapat meminta
M andalasakti
lebih dari satu proyek ke PT. Bajra
81
M andalasakti Engineers
Checkers
Istilah umum untuk
Engineers
M uncul ketika seorang
orang yang
karyawan dipilih
melakukan sketsa
menduduki jabatan
atau rancangan
engineers. Seorang
gambar suatu proyek
engineers dapat
di PT. Bajra
disandingkan dengan
M andalasakti
beberapa proyek.
Istilah umum untuk
Checkers
M uncul ketika seorang
orang yang
karyawan dipilih
melakukan
menduduki jabatan
pengecekan gambar
checkers. Seorang
terhadap spesifikasi
checkers memeriksa
dari klien
semua gambar yang ada berdasarkan spesifikasi teknis dari klien.
Project
Istilah umum untuk
Manager
M uncul ketika seorang
Managers
orang yang
karyawan dipilih
bertanggung jawab
menduduki jabatan
dan melakukan
project manager.
inisialisasi terhadap
Sebuah proyek hanya
82
keseluruhan proyek
ditangani oleh satu
yang ditanganinya di
project manager.
PT. Bajra M andalasakti Notifications
Istilah umum untuk
Pemberitahuan
M uncul ketika ada
pemberitahuan
suatu kejadian yang
mengenai tugas dan
membutuhkan
lain-lain berkaitan
karyawan tertentu tahu
dengan proyek atau
akan hal itu.
gambar kepada karyawan tertentu
4.1.1.2
Mengidentifikasi Tipe Relasional Tabel 4.2 Tabel Relasi Antar Tipe Entitas
Entity
Multiplicity
Relation
Multiplicity
Entity
ClientCompani
1..1
M emiliki
1..*
Projects
Projects
1..1
Terdiri dari
0..*
Drawings
Drawings
1..1
M emiliki
0..*
DrawingReadHistor
es
y
83
Drawings
1..1
M emiliki
0..*
DrawingUpdateHist ory
Drawings
1..1
Revisi Dari
0..1
Drawings
Drawings
1..1
Referensi Dari
0..*
Drawings
Project
1..1
Inisialisasi
1..*
Drawings
1..1
M engecek
0..*
Drawings
Engineers
1..1
M erancang
0..*
Drawings
Engineers
1..1
Inisialisasi
1..*
Drawings
Drafters
1..1
M enggambar
0..*
Drawings
Checkers
1..1
M engecek
0..*
Drawings
Projects
0..*
Ditangani
1..*
Checkers
Projects
0..*
Ditangani
1..*
Drafters
Projects
0..*
Ditangani
1..*
Engineers
Projects
0..*
Ditangani
1..*
Project Manager
Projects
1..1
Dikabarkan
1..*
Notifications
Manager Project Manager
84
Drawings
1..1
Dikabarkan
1..*
Notifications
Gambar 4.1 Entity Relationship Diagram (ERD) Model Data Konseptual
85
4.1.1.3
Identifikasi dan Asosiasi Atribut Suatu Entitas Tabel 4.3 Tabel Dokumen Atribut Entitas
Entity
Attribute
Description
DataType
NULL
Multivalue
ClientC
CmpID
Nomor unik yang
Number(3)
NO
NO
Varchar2(50)
NO
NO
Varchar2(100)
YES
NO
Varchar2(50)
NO
NO
Varchar2(15)
YES
NO
ompani
mengidentifikasi
es
perusahaan klien PT. Bajra M andalasakti CmpNam Nama perusahaan e
klien PT. Bajra M andalasakti
CmpAdd
Alamat perusahaan
ress
klien PT. Bajra M andalasakti
CmpEma
E-mail perusahaan
il
klien yang digunakan untuk tempat pengiriman dokumen/gambar yang sudah selesai dari PT. Bajra M andalasakti
CmpPho
Nomor telepon dari
86
ne
perusahaan klien PT. Bajra M andalasakti
ClName
Nama representatif
Varchar2(50)
NO
YES
Varchar2(15)
YES
YES
Varchar2(10)
NO
NO
Varchar2(100)
YES
NO
Date
NO
NO
dari perusahaan klien PT. Bajra M andalasakti ClPhone
Nomor telepon representatif klien
Projects
PrjID
Kode unik yang mengidentifikasikan suatu proyek yang diterima oleh PT. Bajra M andalasakti
PrjTitle
Nama atau judul dari proyek yang diterima PT. Bajra M andalasakti
PrjStartD
Tanggal saat proyek
ate
tersebut disetujui oleh klien dan PT. Bajra M andalasakti sehingga proyek dapat
87
mulai dijalankan, format:( DD-MM YYYY ) PrjFinish
Tanggal saat proyek
Date
tersebut telah selesai
Date
YES
NO
Date
YES
NO
Varchar2(500)
YES
NO
Number(1)
YES
NO
dikerjakan seluruhnya, format:( DD-MM YYYY ) PrjDeadli
Tanggal proyek
ne
tersebut diharuskan selesai berdasarkan kesepakatan klien dengan PT. Bajra M andalasakti, format:( DD-MM -YYYY )
PrjComm Komentar dari pihak ent
PT. Bajra M andalasakti mengenai proyek bersangkutan
PrjStateI
Nomor unik yang
D
mengidentifikasikan
88
status dari proyek bersangkutan PrjState
Status dari proyek
Varchar2(30)
NO
NO
Number(8)
NO
NO
Number(5)
YES
NO
Varchar2(50)
YES
NO
Date
NO
NO
Number(5)
NO
NO
Varchar2(50)
NO
NO
yang bersangkutan PrjWork
Total waktu yang
Time
dihabiskan untuk proyek bersangkutan, default value:0
PrjPricep
Harga kesepakatan
erM anHo antara pihak klien ur
dengan PT. Bajra M andalasakti per 1 jam pengerjaan proyek
Drafters
PrjLocati
Lokasi dimana proyek
on
dilaksanakan
CreatedD
Tanggal saat proyek
ate
diinisialisasi di sistem
DREmpI
Nomor unik untuk
D
mengidentifikasi setiap drafter
DrafterN
Nama dari drafter
ame
bersangkutan
89
DrafterNi Singkatan nama dari ckName
NO
NO
Number(2)
NO
NO
Varchar2(30)
NO
NO
Varchar2(5)
NO
NO
Varchar2(50)
NO
NO
Number(1)
NO
NO
Date
NO
NO
Number(8)
NO
NO
Varchar2(20)
YES
NO
drafter bersangkutan
EmpStatu Nomor unik untuk sID
Varchar2(5)
mengidentifikasi status dari karyawan
EmpStatu Status dari drafter s
bersangkutan
EmpClas
Kode unik untuk
sID
mengidentifikasi jabatan karyawan
EmpClas
Jabatan drafter
s
bersangkutan
EmpClas
Status dari jabatan
sStatus
yang ada, apakah masih valid atau tidak
ClassCre
Tanggal dibuatnya
atedDate
jabatan tersebut, format:( DD-MM YYYY )
WorkTim Waktu kerja drafter e
bersangkutan
Usernam
Nama yang digunakan
90
e
untuk masuk ke dalam aplikasi
Userpass
Kode sandi untuk
Char(50)
YES
NO
Number(1)
YES
NO
Number(1)
YES
NO
Varchar2(15)
YES
NO
Number(1)
YES
NO
Number(5)
NO
NO
Varchar2(50)
NO
NO
masuk ke aplikasi UserStatu Status dari user s
tersebut, apakah masih valid atau tidak
LevelID
Nomor unik yang mengidentifikasi tingkat akses user bersangkutan
LevelNa
Tingkat akses drafter
me
bersangkutan dalam aplikasi
LevelStat
Status dari level yang
us
ada, apakah masih valid atau tidak
Enginee
ENEmpI
Nomor unik untuk
rs
D
mengidentifikasi setiap engineer
Engineer
Nama dari engineer
Name
bersangkutan
91
Engineer
Singkatan nama dari
Varchar2(5)
NO
NO
Number(2)
NO
NO
Varchar2(30)
NO
NO
Varchar2(5)
NO
NO
Varchar2(50)
NO
NO
Number(1)
NO
NO
Date
NO
NO
Number(8)
NO
NO
NickNam engineer bersangkutan e EmpStatu Nomor unik untuk sID
mengidentifikasi status dari karyawan
EmpStatu Status dari engineer s
bersangkutan
EmpClas
Kode unik untuk
sID
mengidentifikasi jabatan karyawan
EmpClas
Jabatan engineer
s
bersangkutan
EmpClas
Status dari jabatan
sStatus
yang ada, apakah masih valid atau tidak
ClassCre
Tanggal dibuatnya
atedDate
jabatan tersebut, format:( DD-MM YYYY )
WorkTim Waktu kerja engineer e
bersangkutan
92
Usernam
Nama yang digunakan
e
untuk masuk ke dalam
Varchar2(20)
YES
NO
Char(50)
YES
NO
Number(1)
YES
NO
Number(1)
YES
NO
Varchar2(15)
YES
NO
Number(1)
YES
NO
Number(5)
NO
NO
aplikasi Userpass
Kode sandi untuk masuk ke aplikasi
UserStatu Status dari user s
tersebut, apakah masih valid atau tidak
LevelID
Nomor unik yang mengidentifikasi tingkat akses user bersangkutan
LevelNa
Tingkat akses
me
engineer bersangkutan dalam aplikasi
LevelStat
Status dari level yang
us
ada, apakah masih valid atau tidak
Project
PM EmpI
Nomor unik untuk
M anage
D
mengidentifikasi
rs
setiap project manager
93
ProjM an
Nama dari project
Name
manager bersangkutan
ProjM an
Singkatan nama dari
Varchar2(50)
NO
NO
Varchar2(5)
NO
NO
Number(2)
NO
NO
Varchar2(30)
NO
NO
Varchar2(5)
NO
NO
Varchar2(50)
NO
NO
Number(1)
NO
NO
Date
NO
NO
NickNam project manager e
bersangkutan
EmpStatu Nomor unik untuk sID
mengidentifikasi status dari karyawan
EmpStatu Status dari project s
manager bersangkutan
EmpClas
Kode unik untuk
sID
mengidentifikasi jabatan karyawan
EmpClas
Jabatan project
s
manager bersangkutan
EmpClas
Status dari jabatan
sStatus
yang ada, apakah masih valid atau tidak
ClassCre
Tanggal dibuatnya
atedDate
jabatan tersebut, format:( DD-MM YYYY )
94
WorkTim Waktu kerja project e
manager bersangkutan
Usernam
Nama yang digunakan
e
untuk masuk ke dalam
Number(8)
NO
NO
Varchar2(20)
YES
NO
Char(50)
YES
NO
Number(1)
YES
NO
Number(1)
YES
NO
Varchar2(15)
YES
NO
Number(1)
YES
NO
Number(5)
NO
NO
aplikasi Userpass
Kode sandi untuk masuk ke aplikasi
UserStatu Status dari user s
tersebut, apakah masih valid atau tidak
LevelID
Nomor unik yang mengidentifikasi tingkat akses user bersangkutan
LevelNa
Tingkat akses project
me
manager bersangkutan dalam aplikasi
LevelStat
Status dari level yang
us
ada, apakah masih valid atau tidak
Checker
CHEmpI
Nomor unik untuk
s
D
mengidentifikasi
95
setiap checker Checker
Nama dari checker
Name
bersangkutan
Checker
Singkatan nama dari
Varchar2(50)
NO
NO
Varchar2(5)
NO
NO
Number(2)
NO
NO
Varchar2(30)
NO
NO
Varchar2(5)
NO
NO
Varchar2(50)
NO
NO
Number(1)
NO
NO
Date
NO
NO
NickNam checker bersangkutan e EmpStatu Nomor unik untuk sID
mengidentifikasi status dari karyawan
EmpStatu Status dari checker s
bersangkutan
EmpClas
Kode unik untuk
sID
mengidentifikasi jabatan karyawan
EmpClas
Jabatan checker
s
bersangkutan
EmpClas
Status dari jabatan
sStatus
yang ada, apakah masih valid atau tidak
ClassCre
Tanggal dibuatnya
atedDate
jabatan tersebut, format:( DD-MM -
96
YYYY ) WorkTim Waktu kerja checker e
bersangkutan
Usernam
Nama yang digunakan
e
untuk masuk ke dalam
Number(8)
NO
NO
Varchar2(20)
YES
NO
Char(50)
YES
NO
Number(1)
YES
NO
Number(1)
YES
NO
Varchar2(15)
YES
NO
Number(1)
YES
NO
Varchar2(20)
NO
NO
aplikasi Userpass
Kode sandi untuk masuk ke aplikasi
UserStatu Status dari user s
tersebut, apakah masih valid atau tidak
LevelID
Nomor unik yang mengidentifikasi tingkat akses user bersangkutan
LevelNa
Tingkat akses checker
me
bersangkutan dalam aplikasi
LevelStat
Status dari level yang
us
ada, apakah masih valid atau tidak
Drawin
DwgID
Kode unik gambar
97
gs
yang membedakan antara gambar 1 dengan yang lain agar mudah dikenali ClientDw Kode unik yang gID
Varchar2(20)
YES
NO
Char(1)
NO
NO
Varchar2(50)
NO
NO
Varchar2(20)
YES
YES
Number(1)
YES
YES
merupakan kode gambar sesuai dengan permintaan klien.
DwgTyp
Kode unik yang
eID
menunjukkan tipe gambar yang dibuat
DwgTyp
Tipe gambar
e
bersangkutan
DwgRefI
Kode unik yang
D
mengidentifikasi gambar referensi yang mendukung gambar bersangkutan.
RefStatus Status dari gambar sebagai referensi, apakah valid atau tidak
98
DwgRevI
Kode unik dari
D
gambar sebelumnya
Varchar2(20)
YES
NO
Date
YES
NO
Date
YES
NO
Varchar2(30)
YES
NO
Varchar2(40)
NO
NO
Varchar2(40)
YES
NO
Varchar2(40)
YES
NO
yang membutuhkan revisi DateStart
Tanggal dimana
ed
gambar mulai ada dan dikerjakan, format:( DD-MM -YYYY)
DateIssue Tanggal dimana d
gambar telah selesai dan siap untuk dikirim, format:( DDMM-YYYY)
RevTitle
Judul revisi gambar tersebut jika gambar tersebut merupakan revisi dari gambar lain
TitleLine
Judul gambar baris 1
1
dengan bentuk string
TitleLine
Judul gambar baris 2
2
dengan bentuk string
TitleLine
Judul gambar baris 3
99
3
dengan bentuk string
TitleLine
Judul gambar baris 4
4
dengan bentuk string
HoldID
Nomor unik yang
Varchar2(40)
YES
NO
Number(10)
YES
YES
Varchar2(500)
YES
YES
Date
YES
YES
Number(5)
YES
YES
Varchar2(100)
YES
YES
Varchar2(500)
YES
YES
Varchar2(500)
YES
NO
Varchar2(500)
YES
NO
mengidentifikasi hold yang diberikan HoldDes
Deskripsi tentang hold
c
yang diberikan
HoldDate Tanggal hold tersebut diberikan RaisedBy
Oleh siapa hold tersebut dibuat
ActionBy Untuk siapa hold tersebut diberikan ActionRe Apa yang harus quired
dikerjakan oleh penerima hold
Designer
Komentar yang
Comment diberikan oleh engineer terhadap gambar Checker
Komentar yang
100
Comment diberikan oleh checker terhadap gambar Approver Komentar yang
Varchar2(500)
YES
NO
Varchar2(500)
YES
NO
Varchar2(500)
YES
NO
BFILE
YES
NO
Number(5)
YES
NO
Comment diberikan oleh project manager terhadap gambar Remarks
Kolom yang menjelaskan keterangan dari project manager ketika gambar tersebut ditahan
ClientCo
Komentar yang
mment
diberikan klien mengenai gambar tersebut
DwgFile
Kolom BFILE yang mencatat lokasi gambar pada media penyimpanan.
ExpTime
Ekspektasi waktu pengerjaan gambar
101
tersebut DwgTim
Waktu pengerjaan
e
gambar tersebut
DwgCeh
Nomor unik yang
ckHistID
mengidentifikasi
Number(5)
NO
NO
Number(10)
YES
YES
Number(2)
YES
YES
Number(10)
YES
YES
Number(2)
NO
YES
Varchar2(30)
NO
YES
Varchar2(30)
NO
YES
sejarah pengecekan gambar tersebut CheckSta
Nomor unik yang
tID
mengidentifikasi status pengecekan gambar tersebut
DwgStat
Nomor unik yang
HistID
mengidentifikasi sejarah pengecekan gambar tersebut
DwgStatI
Nomor unik yang
D
mengidentifikasi status/ keadaan dari gambar tersebut
CheckSta
Status pengecekan
te
gambar tersebut
DwgState Status atau keadaan
102
gambar tersebut DwgStat
Nomor karyawan yang Number(5)
YES
YES
EmpID
melakukan perubahan
Varchar2(100)
YES
NO
Number(10)
NO
NO
Number(2)
NO
NO
Varchar2(15)
NO
NO
NO
NO
NO
NO
status gambar tersebut TransNo
Nomor transmittal dari gambar tersebut
Drawin
DwgRea
Nomor unik yang
gReadH
dHistID
mengidentifikasi
istory
history pembacaan gambar AccType
Nomor unik yang
ID
mengidentifikasi tipe akses file
AccType
Jenis akses file yang dilakukan
AccEmpI
Nomor karyawan yang Number(5)
D
mengakses file tersebut
Downloa
Waktu dimana gambar
dTime
tersebut diunduh, format:( DD-MM YYYY HH24:M I)
Date
103
Drawin
DwgUpd
gUpdat
ateHistID mengidentifikasi
Nomor unik yang
eHistor
history peng-update-
y
an gambar AccType
Nomor unik yang
ID
mengidentifikasi tipe
Number(10)
NO
NO
Number(2)
NO
NO
Varchar2(15)
NO
NO
NO
NO
Date
NO
NO
Date
YES
NO
Number(5)
YES
NO
akses file AccType
Jenis akses file yang dilakukan
AccEmpI
Nomor karyawan yang Number(5)
D
mengakses file tersebut
Downloa
Waktu dimana gambar
dTime
tersebut diunduh, format:( DD-MM YYYY HH24:M I)
UploadTi Waktu dimana gambar me
tersebut diperbaharui di server, format:( DD-MM -YYYY HH24:M I)
IdleTime
Berapa lama seorang
104
karyawan tidak sedang mengerjakan gambarnya Notifica
Number(10)
NO
NO
Number(2)
NO
NO
Number(1)
NO
NO
NotifEm
Nomor karyawan yang Number(5)
NO
YES
pID
mendapat
NO
NO
NotifID
Nomor unik yang mengidentifikasi
tions
pemberitahuan ke karyawan NotifTyp
Nomor unik yang
eID
mengidentifikasi tipe pemberitahuan tersebut
NotifStat
Status pemberitahuan
us
tersebut, masih valid atau tidak
pemberitahuan tersebut Date
Waktu dikirimnya pemberitahuan tersebut, format: ( DD-MM -YYYY
Date
105
HH24:M I) M essage
Isi pesan dari
Varchar2(50)
NO
NO
pemberitahuan tersebut
4.1.1.4
Identifikasi Primary and Candidate Key setiap Entitas
Tabel 4.4 Tabel Identifikasi Candidate and Primary Key Tiap Entitas Entity
Candidate key
Primary key
Projects
PrjID, PrjTitle
PrjID
Drawing
TitleLine1-4
DwgID
DwgFile ClientDwgID DwgID DrawingReadHistory
DwgReadHistID
DwgReadHistID
DrawingUpdateHistory DwgUpdateHistID DwgUpdateHistID
Drafters
DREmpID
DREmpID
CheckerName Username ClientCompanies
CmpID CmpName
CmpID
106
CmpEmail Engineers
ENEmpID
ENEmpID
EngineerName Username Checkers
CHEmpID
CHEmpID
CheckerName Username ProjectManagers
PM EmpID
PM EmpID
ProjM anName Username Notifications
NotifID M essage
NotifID
107
Gambar 4.2 Entity Relationship Diagram (ERD) Model Data Konseptual dengan Primary Key
4.1.1.5
Penggunaan Enhanced Modelling Concepts Tahapan penggunaan
ini
bertujuan
Enhanced
untuk
Modelling
mempertimbangkan Concept,
dimana
108
penggunaannya
mencakup
spesialisasi,
generalisasi,
komposisi.
Gambar 4.3 Enhanced Entity Relationship Diagram (EERD)
dan
109
4.1.1.6
Validasi Transaksi Tahap ini bertujuan untuk memastikan agar model konseptual yang dibuat mendukung transaksi-transaksi yang dibutuhkan. Dalam hal ini, jalur transaksi(pathway) yang digambarkan dalam diagram ER dimaksudkan untuk memeriksa model konseptual lokal untuk mendukung transaksi. Transaksi-transaksi yang terjadi adalah sebagai berikut: a. Pengontrakan proyek dari client kepada perusahaan. b. Penugasan karyawan untuk menangani proyek. c. Pembuatan ide gambar oleh originator. d. Perancangan gambar yang dilakukan oleh engineers atas ide originator. e. Pembuatan gambar yang dilakukan drafters. f. Penyimpanan gambar yang dilakukan drafters selama proses pembuatan. g. Pemeriksaan gambar yang dilakukan oleh checkers. h. Pemeriksaan gambar yang dilakukan oleh engineers. i. Pemeriksaan gambar yang dilakukan oleh project manager. j. Pengiriman gambar kepada client. k. Pembaharuan gambar yang diminta sesuai dengan keinginan client. l. Pembaharuan gambar berupa revisi.
110
m. Setiap perubahan status proyek dinotifikasi ke karyawan yang termasuk dalam proyek. n. Setiap transaksi g,h,i akan dinotifikasi ke karyawan yang mengerjakan.
Dari
transaksi-transaksi
berikut,
maka
dengan
menggunakan gambar 4.4 di bawah ini akan dapat ditentukan pathways dari transaksi yang ada. Sehingga model konseptual untuk mendukung transaksi pemakai dengan menggunakan pathways yang dapat dilihat di gambar di bawah ini.
111
Gambar 4.4 Model Konseptual dengan Pathway yang Mendukung Transaksi User
4.1.2
Perancangan Basis Data Logikal Setelah kita mendapatkan model data konseptual, kita akan memetakannya ke dalam model data logikal. Proses ini meliputi pencarian relasi untuk model data logikal dan penggunaan teknik normalisasi untuk
112
menguji model data logikal tersebut. Pada akhirnya, model data logikal lokal akan dikombinasikan menjadi model data logikal tunggal. Tahapan-tahapan dari perancangan basis data logikal ini adalah:
4.1.2.1 Menghilangkan Fitur yang Tidak Kompatibel Tahapan ini bertujuan untuk memperbaiki model data konseptual dengan menghilangkan fitur yang tidak kompatibel dengan model data relasional. Cara yang digunakan dalam tahapan ini adalah menghilangkan many to many relationship dan menghilangkan atribut multi-valued. 1. M enghilangkan many to many binary relationship
(a) Projects ditangani oleh employees *:* relationship
(b) Dekomposisi relasi(a) ke dalam relasi ditangani oleh dan terdiri dari(1:*relationship) Gambar 4.5 Menghilangkan many to many binary relationship
113
2. M enghilangkan many to many recursive relationship Dalam ER diagram yang dibuat dalam model konseptual tidak terdapat many to many recursive relationship sehingga langkah ini tidak perlu dilakukan. 3. M enghilangkan complex relationship Dalam ER diagram yang dibuat dalam model konseptual tidak terdapat complex relationship sehingga langkah ini tidak perlu dilakukan. 4. M enghilangkan multi-valued attributes
(a)
(b)
Entitas Drawings dengan DrawingRefID yang multi-valued
Dekomposisi atribut DrawingRefID pada entitas Drawings menjadi entitas baru bernama DrawingReference dengan atribut RefID(primary key, foreign key)
114
(c)
Entitas Drawings dengan CheckStat yang multi-valued
(d) Dekomposisi atribut DwgCheckHistID pada entitas Drawings menjadi entitas baru bernama DrawingCheckHistories dengan atribut DwgCheckHistID(primary key)
(e) Entitas Drawings dengan DrawingtStat yang multi-valued
(f) Dekomposisi atribut DwgStatHistID pada entitas Drawings menjadi entitas baru bernama DrawingStateHistories dengan atribut DwgStatHistID(primary key)
115
(g) Entitas ClientCompanies dengan ClName yang multi-valued
(h) Dekomposisi atribut Clname pada entitas ClientCompanies menjadi entitas baru bernama ClientReps dengan atribut ClRepID(primary key)
Drawings
DwgID[PK] HoldID[0..*]
(i) Entitas Drawings dengan HoldID yang multi-valued
116
(j) Dekomposisi atribut HoldDesc pada entitas Drawings menjadi entitas
baru
bernama
HoldHistories
dengan
atribut
HoldID(primary key)
Gambar 4.6 Menghilangkan atribut multi-valued
4.1.2.2 Memperoleh Relasi untuk Model Data Logikal Lokal 1. One to Many binary relationship types M asukkan clrepid ke dalam projects untuk mendapatkan relas i memiliki(1:*)
ClientReps(ClRepID, ClName, ClPhone, Projects(ClRepID, CmpID)
PrjID,
PrjStartDate, PrjFinishDate, PrjDeadline, PrjComment,
PrjStateID,
PrjWorkTime,
PrjState,
PrjPriceperM anHour,
PrjLocation, CreatedDate) Primary Key ClRepID
PrjTitle,
Primary Key PrjID Foreign Key ClRepID
117
M asukkan prjid ke dalam drawings untuk mendapatkan relasi terdiri dari(1:*)
Projects(PrjID, ClRepID, PrjTitle,
Drawings(Prjid, DwgID, ClientDwgID,
PrjStartDate, PrjFinishDate, PrjDeadline,
DwgTypeID, DwgType, DwgRefID,
PrjComment, PrjStateID, PrjState,
RefStatus, DwgRevID, DateStarted,
PrjWorkTime, PrjPriceperM anHour,
DateIssued, RevTitle, TitleLine1,
PrjLocation, CreatedDate)
TitleLine2, TitleLine3, TitleLine4, HoldDesc, HoldDate, RaisedBy, ActionBy, ActionRequired, DesignerComment, CheckerComment, ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime, CheckStatID, DwgStatID, CheckState, DwgState, DwgStatEmpID, TransNo)
Primary Key PrjID
Primary Key DwgID Foreign Key PrjID
118
M asukkan dwgid ke dalam drawingreadhistory untuk mendapatkan relasi memiliki (1:*)
Drawings(DwgID, Prjid, ClientDwgID,
DrawingReadHistory(DwgID,
DwgTypeID, DwgType, DwgRefID,
DwgReadHistID, AccTypeID, AccType,
RefStatus, DwgRevID, DateStarted,
AccEmpID, DownloadTime)
DateIssued, RevTitle, TitleLine1, TitleLine2, TitleLine3, TitleLine4, HoldDesc, HoldDate, RaisedBy, ActionBy, ActionRequired, DesignerComment, CheckerComment, ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime, CheckStatID, DwgStatID, CheckState, DwgState, DwgStatEmpID, TransNo) Primary Key DwgID
Primary Key DwgReadHistID Foreign Key DwgID
119
M asukkan dwgid ke dalam drawingupdatehistory untuk mendapatkan relasi memiliki (1:*)
Drawings(DwgID, Prjid, ClientDwgID,
DrawingUpdateHistory(DwgID,
DwgTypeID, DwgType, DwgRefID,
DwgUpdateHistID, AccTypeID, AccType,
RefStatus, DwgRevID, DateStarted,
AccEmpID, DownloadTime, UploadTime,
DateIssued, RevTitle, TitleLine1,
IdleTime)
TitleLine2, TitleLine3, TitleLine4, HoldDesc, HoldDate, RaisedBy, ActionBy, ActionRequired, DesignerComment, CheckerComment, ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime, CheckStatID, DwgStatID, CheckState, DwgState, DwgStatEmpID, TransNo) Primary Key DwgID
Primary Key DwgUpdateHistID Foreign Key DwgID
120
M asukkan dwgid ke dalam notifications untuk mendapatkan relasi dikabari (1:*)
Drawings(DwgID, Prjid, ClientDwgID,
Notifications(DwgID, NotifID,
DwgTypeID, DwgType, DwgRefID,
NotifTypeID, NotifStatus, NotifEmpID,
RefStatus, DwgRevID, DateStarted,
Date, M essage)
DateIssued, RevTitle, TitleLine1, TitleLine2, TitleLine3, TitleLine4, HoldDesc, HoldDate, RaisedBy, ActionBy, ActionRequired, DesignerComment, CheckerComment, ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime, CheckStatID, DwgStatID, CheckState, DwgState, DwgStatEmpID, TransNo) Primary Key DwgID
Primary Key NotifID Foreign Key DwgID
121
M asukkan prjid ke dalam notifications untuk mendapatkan relasi dikabari (1:*)
Projects(PrjID, ClRepID, PrjTitle,
Notifications(PrjID, DwgID, NotifID,
PrjStartDate, PrjFinishDate, PrjDeadline,
NotifTypeID, NotifStatus, NotifEmpID,
PrjComment, PrjStateID, PrjState,
Date, M essage)
PrjWorkTime, PrjPriceperM anHour, PrjLocation, CreatedDate) Primary Key PrjID
Primary Key NotifID Foreign Key PrjID
M asukkan pmempid ke dalam drawings untuk mendapatkan relasi mengecek (0:*)
ProjectManagers(PM EmpID,
Drawings(ApproverID, DwgID, Prjid,
ProjM anName, ProjM anNickName,
ClientDwgID, DwgTypeID, DwgType,
EmpStatusID, EmpStatus, EmpClassID,
DwgRefID, RefStatus, DwgRevID,
EmpClass, EmpClassStatus,
DateStarted, DateIssued, RevTitle,
ClassCreatedDate, WorkTime, Username,
TitleLine1, TitleLine2, TitleLine3,
Userpass, UserStatus, LevelID,
TitleLine4, HoldDesc, HoldDate,
122
LevelName, LevelStatus)
RaisedBy, ActionBy, ActionRequired, DesignerComment, CheckerComment, ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime, CheckStatID, DwgStatID, CheckState, DwgState , DwgStatEmpID, TransNo)
Primary Key PM EmpID
Primary Key DwgID Foreign Key ApproverID
M asukkan enempid ke dalam drawings untuk mendapatkan relasi merancang (0:*)
Engineers(ENEmpID, EngineerName,
Drawings(DesignerID, ApproverID,
EngineerNickName, EmpStatusID,
DwgID, Prjid, ClientDwgID, DwgTypeID,
EmpStatus, EmpClassID, EmpClass,
DwgType, DwgRefID, RefStatus,
EmpClassStatus, ClassCreatedDate,
DwgRevID, DateStarted, DateIssued,
WorkTime, Username, Userpass,
RevTitle, TitleLine1, TitleLine2,
UserStatus, LevelID, LevelName,
TitleLine3, TitleLine4, HoldDesc,
LevelStatus)
HoldDate, RaisedBy, ActionBy, ActionRequired, DesignerComment,
123
CheckerComment, ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime, CheckStatID, DwgStatID, CheckState, DwgState, DwgStatEmpID, TransNo) Primary Key ENEmpID
Primary Key DwgID Foreign Key DesignerID
M asukkan drempid ke dalam drawings untuk mendapatkan relasi menggambar (0:*)
Drafters(DREmpID, DrafterName,
Drawings(DrafterID, DesignerID,
DrafterNickName, EmpStatusID,
ApproverID, DwgID, Prjid, ClientDwgID,
EmpStatus, EmpClassID, EmpClass,
DwgTypeID, DwgType, DwgRefID,
EmpClassStatus, ClassCreatedDate,
RefStatus, DwgRevID, DateStarted,
WorkTime, Username, Userpass,
DateIssued, RevTitle, TitleLine1,
UserStatus, LevelID, LevelName,
TitleLine2, TitleLine3, TitleLine4,
LevelStatus)
HoldDesc, HoldDate, RaisedBy, ActionBy, ActionRequired, DesignerComment, CheckerComment,
124
ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime, CheckStatID, DwgStatID, CheckState, DwgState, DwgStatEmpID, TransNo) Primary Key DrEmpID
Primary Key DwgID Foreign Key DrafterID
2. Superclass/ subclass relationship types • Superclass Employees
Gambar 4.7 Relasi Superclass Employees Dalam relasi ini karyawan harus memiliki satu jabatan (mandatory) dan juga setiap karyawan hanya memiliki 1 jabatan, tapi tidak ada field-field
125
khusus yang membedakan 1 jabatan dengan yang lain(and) sehingga relasinya menjadi:
Gambar 4.8 Hasil Relasi Superclass Employees(Mandatory, And) Dengan Primary key dan Foreign Key, untuk memperjelas hubungan dari employees ke karyawan secara spesifik. Employees
(EmpID,
EmpName,
EmpNickName,
EmpStatusID,
EmpStatus, EmpClassID, EmpClass, EmpClassStatus, ClassCreatedDate, WorkTime, Username, Userpass, UserStatus, LevelID, LevelName, LevelStatus) Primary Key : EmpID • Superclass Originator
126
Gambar 4.9 Relasi Superclass Originator Relasi super class disini diperlukan karena originator pastilah diantara project manager atau engineers(mandatory), tetapi sesuai generalisasi yang sebelumnya seorang engineers tidak mungkin menjadi project manager(or),
serta engineers
dan projectmanagers
yang sudah
disederhanakan menjadi employees, maka dibentuk generalisasi sebagai berikut
127
Drawings DwgID[PK] OriginatorID[FK] 1..*
Memiliki ide gambar
1..1 Employees
EmpID[PK]
Gambar 4.10 Hasil Relasi Superclass Originator(Mandatory, Or)
Setiap Drawings diberi OriginatorId agar kita bisa tahu dari mana ide gambar tersebut berasal. Employees
(EmpID,
EmpName,
EmpNickName,
EmpStatusID,
EmpStatus, EmpClassID, EmpClass, EmpClassStatus, ClassCreatedDate, WorkTime, Username, Userpass, UserStatus, LevelID, LevelName, LevelStatus) Primary key: EmpID
Drawings (OriginatorID, DesignerID, ApproverID, DwgID, Prjid, ClientDwgID,
DwgTypeID,
DwgType,
DwgRefID,
RefStatus,
DwgRevID, DateStarted, DateIssued, RevTitle, TitleLine1, TitleLine2, TitleLine3, TitleLine4, HoldDesc, HoldDate, RaisedBy, ActionBy,
128
ActionRequired,
DesignerComment,
CheckerComment,
ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime,
CheckStatID,
DwgStatID,
CheckState,
DwgState,
DwgStatEmpID, TransNo)
Primary key: DwgID Foreign key: OriginatorID references Employees(EmpID)
• Superclass DrawingAccessHistories
Gambar 4.11 Relasi Superclass DrawingAccessHistories Dapat ditemukan fakta bahwa sebuah DrawingUpdateHistory
sama
dengan DrawingReadHistory dengan penambahan kolom uploadtime dan idltime saja. Jadi sebuah baris dari DrawingAccessHistories harus menempati subclass (mandatory) dan sebuah baris bisa menduduki kedua subclass secara bersamaan (and).
129
Gambar 4.12 Hasil Relasi Superclass DrawingAccessHistories(Mandatory, And)
DrawingAccessHistories
(DwgAccHistID,
DwgID,
AccTypeID,
AccType, AccEmpID, DownloadTime, UploadTime, IdleTime) Primary key: DwgAccHistID • Superclass Notifications
Gambar 4.13 Relasi Superclass Notifications Dapat ditemukan fakta bahwa sebuah ProjectNotifications sama dengan DrawingNotifications dengan perbedaan kolom prjid dan dw gid saja. Jadi sebuah baris dari Notifications harus menempati subclass (mandatory) dan sebuah baris bisa menduduki kedua subclass secara bersamaan (and).
130
Gambar 4.14 Hasil Relasi Superclass Notifications(Mandatory, And)
DrawingAccessHistories
(NotifID,
NotifTypeID,
PrjID,
DwgID,
NotifStatus, NotifEmpID, Date, M essage) Primary key: NotifID 3. Many to many binary relationship types Projects (PrjID, ClRepID, PrjTitle,
Employees( EmpID, EmpName,
PrjStartDate, PrjFinishDate, PrjDeadline,
EmpNickName, EmpStatusID, EmpStatus,
PrjComment, PrjStateID, PrjState,
EmpClassID, EmpClass, EmpClassStatus,
PrjWorkTime, PrjPriceperM anHour,
ClassCreatedDate, WorkTime, Username,
PrjLocation, CreatedDate)
Userpass, UserStatus, LevelID, LevelName, LevelStatus)
Primary Key: PrjID
ProjectTeam (EmpID, PrjID) Primary Key: EmpID, PrjID
Primary key: EmpID
131
Foreign Key PrjID references Projects(PrjID) Foreign Key EmpID references Employees(EmpID)
4. Multi-valued attributes
M asukkan DwgID ke dalam DrawingReferences
Drawings (DwgID, Prjid, ClientDwgID,
DrawingReferences(DwgRefID, DwgID,
DwgTypeID, DwgType, DwgRevID,
RefStatus)
DateStarted, DateIssued, RevTitle, TitleLine1, TitleLine2, TitleLine3, TitleLine4, HoldDesc, HoldDate, RaisedBy, ActionBy, ActionRequired, DrafterID, DesignerID, ApproverID, OriginatorID, DesignerComment, CheckerComment, ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime, CheckStatID, DwgStatID, CheckState, DwgState, TransNo)
132
Primary Key: DwgID
Primary Key: DwgRefID, DwgID Foreign Key: DwgRefID, DwgID
M asukkan DwgID ke dalam DrawingCheckHistories
Drawings (DwgID, Prjid, ClientDwgID,
DrawingCheckHistories (DwgID,
DwgTypeID, DwgType, DwgRevID,
DwgCheckHistID, DwgCheckStatID,
DateStarted, DateIssued, RevTitle,
DwgCheckState, Date)
TitleLine1, TitleLine2, TitleLine3, TitleLine4, HoldDesc, HoldDate, RaisedBy, ActionBy, ActionRequired, DrafterID, DesignerID, ApproverID, OriginatorID, DesignerComment, CheckerComment, ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime, Dw gStatID, DwgState, DwgStatEmpID, TransNo) Primary Key: DwgID
Primary Key: DwgCheckHistID Foreign Key: DwgID
133
M asukkan DwgID ke dalam DrawingS tateHistories
Drawings (DwgID, Prjid, ClientDwgID,
DrawingS tateHistories ( DwgID,
DwgTypeID, DwgType, DwgRevID,
DwgStatHistID, DwgStatID,
DateStarted, DateIssued, RevTitle,
DwgStatEmpID, DwgState, Date)
TitleLine1, TitleLine2, TitleLine3, TitleLine4, HoldDesc, HoldDate, RaisedBy, ActionBy, ActionRequired, DrafterID, DesignerID, ApproverID, OriginatorID, DesignerComment, CheckerComment, ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime, TransNo) Primary Key: DwgID
Primary Key: DwgStatHistID Foreign Key: DwgID
M asukkan DwgID ke dalam HoldHistories
Drawings (DwgID, Prjid, ClientDwgID,
HoldHistories ( DwgID, HoldID,
DwgTypeID, DwgType, DwgRevID,
HoldDesc, HoldDate, RaisedBy,
DateStarted, DateIssued, RevTitle,
ActionBy, ActionRequired)
134
TitleLine1, TitleLine2, TitleLine3, TitleLine4, DrafterID, DesignerID, ApproverID, OriginatorID, DesignerComment, CheckerComment, ApproverComment, Remarks, ClientComment, DwgFile, ExpTime, DwgTime, TransNo) Primary Key: DwgID
Primary Key: HoldID Foreign Key: DwgID
M asukkan NotifID ke dalam NoteReceiver
Notifications(NotifID, NotifTypeID,
NoteReceiver ( NotifID, EmpID)
PrjID, DwgID, NotifStatus, Date, M essage) Primary Key: NotifID
Primary Key: NotifID, EmpID Foreign Key: NotifID, EmpID
135
M asukkan CmpID ke dalam ClientReps
ClientCompanies(CmpID, CmpName,
ClientReps(ClRepID, ClName,ClPhone,
CmpAddress, CmpEmail, CmpPhone)
CmpID)
Primary Key: CmpID
Primary Key: ClRepID Foreign Key: CmpID
5. Document Relations and Foreign Key Attributes Tabel 4.5 Tabel Dokumen Hasil Relasi Projects (PrjID, ClRepID, PrjTitle, PrjStartDate, PrjFinishDate, PrjDeadline, PrjComment, PrjStateID, PrjState, PrjWorkTime, PrjPriceperM anHour, PrjLocation, CreatedDate) Primary Key: Project ID Foreign Key: ClRepID references ClientReps(ClRepID) ClientReps(ClRepID, ClName,ClPhone, CmpID) Primary Key: ClRepID Foreign Key: CmpID references ClientCompanies(CmpID) Drawings (DwgID, Prjid, ClientDwgID, DwgTypeID, DwgType, DwgRevID, DateStarted, DateIssued, RevTitle, TitleLine1, TitleLine2, TitleLine3, TitleLine4, DrafterID, DesignerID, ApproverID, OriginatorID, DesignerComment, CheckerComment, ApproverComment, Remarks, ClientComment, DwgFile, ExpTime,
136
DwgTime, TransNo) Primary Key: DwgID Foreign Key: DesignerID references Employees(EmpID) Foreign Key: CheckerID references Employees(EmpID) Foreign Key: DrafterID references Employees(EmpID) Foreign Key: ApproverID references Employees(EmpID) Foreign Key: OriginatorID references Employees(EmpID) Foreign Key: PrjID references Projects(PrjID) DrawingAccessHistories
(DwgAccHistID,
DwgID,
AccTypeID,
AccType,
AccEmpID, DownloadTime, UploadTime, IdleTime) Primary Key: DwgAccHistID Foreign Key: DwgID references Drawing(DwgID) Foreign Key: AccEmpID references Employees(EmpID) Employees
(EmpID,
EmpName,
EmpNickName,
EmpStatusID,
EmpStatus,
EmpClassID, EmpClass, EmpClassStatus, ClassCreatedDate, WorkTime, Username, Userpass, UserStatus, LevelID, LevelName, LevelStatus) Primary Key : EmpID DrawingReferences(DwgRefID, DwgID) Primary Key: RefID, DwgID Foreign Key: RefID references Drawings(DwgID) Foreign Key: DwgID references Drawings(DwgID) DrawingCheckHistories (DwgID, DwgCheckHistID, DwgCheckStatID,
137
DwgCheckState, Date) Primary Key: DwgCheckHistID Foreign Key: DwgID references Drawings(DwgID) DrawingS tateHistories ( DwgID, DwgStatHistID, DwgStatID, DwgStatEmpID, DwgState, Date) Primary Key: DwgStatHistID Foreign Key: DwgID references Drawings(DwgID) Foreign Key: DwgStatEmpID references Employees(EmpID) ProjectTeam (EmpID, Prjid) Primary Key: EmpID, Prjid Foreign Key: Prjid references Projects(Prjid) Foreign Key: EmpID references Employees(EmpID) ClientCompanies(CmpID, CmpName, CmpAddress, CmpEmail, CmpPhone) Primary Key : CmpID Notifications(NotifID, NotifTypeID, PrjID, DwgID, NotifStatus , Date, M essage) Primary Key: NotifID Foreign Key: PrjID references Projects(PrjID) Foreign Key: DwgID references Drawings(DwgID) Foreign Key: NotifEmpID references Employees(EmpID) NoteReceiver(NotifID, EmpID) Primary Key: NotifID, EmpID Foreign Key: NotifID references Notifications(NotifID)
138
Foreign Key: EmpID references Employees(EmpID)
4.1.2.3 Normalisasi Tujuan dari normalisasi adalah untuk memvalidasi relasirelasi yang ada dalam model data logikal dengan menggunakan aturan-aturan normalisasi.
Projects UNF Projects = PrjID+ ClRepID+ PrjTitle+ PrjStartDate+ PrjFinishDate+ PrjDeadline+ PrjWorkTime+
PrjComment+
PrjStateID+
PrjPriceperM anHour+
PrjState+ PrjLocation+
CreatedDate
1NF Projects = Prjid+ ClRepID+ PrjTitle+ PrjStartDate+ PrjFinishDate+ PrjDeadline+ PrjWorkTime+ CreatedDate
PrjComment+
PrjStateID+
PrjPriceperM anHour+
PrjState+ PrjLocation+
139
2NF Projects
= Prjid+
ClRepID+
PrjTitle+
PrjStartDate+
PrjFinishDate+ PrjDeadline+ PrjComment+ PrjStateID PrjWorkTime+
PrjPriceperM anHour+
PrjLocation+
CreatedDate ProjectStates = PrjStateID + PrjState
Drawings UNF Drawings
= DwgID+ Prjid+ ClientDwgID+ DwgTypeID+ DwgType+ DwgRevID+
DateStarted+
DateIssued+
TitleLine1+
TitleLine2+
TitleLine3+
DrafterID+
DesignerID+
ApproverID+
DesignerComment+ ApproverComment+
RevTitle+
TitleLine4
+
OriginatorID+
CheckerComment+ Remarks+
DwgFile+ ExpTime+ DwgTime+ TransNo
ClientComment+
140
1NF Drawings
= DwgID+ Prjid+ ClientDwgID+ DwgTypeID+ DwgType+ DwgRevID+
DateStarted+
DateIssued+
TitleLine1+
TitleLine2+
TitleLine3+
DrafterID+
DesignerID+
ApproverID+
DesignerComment+ ApproverComment+
RevTitle+
TitleLine4
+
OriginatorID+
CheckerComment+ Remarks+
ClientComment+
DwgFile+ ExpTime+ DwgTime+ TransNo
2NF Drawings
= DwgID+
Prjid+
ClientDwgID+
DwgTypeID+
DwgRevID+ DateStarted+ DateIssued+ RevTitle+ TitleLine1+
TitleLine2+
TitleLine3+
TitleLine4+
DrafterID+ DesignerID+ ApproverID+ OriginatorID+ DesignerComment+ ApproverComment+
CheckerComment+ Remarks+
ClientComment+
DwgFile+ ExpTime+ DwgTime+ TransNo DrawingTypes = DwgTypeID + DwgType
141
DrawingCheckHistories
UNF DrawingCheckHistories = DwgCheckHistID+DwgID+ DwgCheckStatID+ DwgCheckState+ Date
1NF DrawingCheckHistories
= DwgCheckHistID+ DwgID+ DwgCheckStatID+ DwgCheckState+ Date
2NF DrawingCheckHistories
= DwgCheckHistID+DwgID+ DwgCheckStatID + Date
DrawingCheckStates
= DwgCheckStatID + DwgCheckState
DrawingS tateHistories UNF DrawingStateHistories = DwgID+
DwgStatHistID+
DwgStatID+
DwgStatEmpID+ DwgState+ Date
142
1NF DrawingStateHistories = DwgID+ DwgStatHistID + DwgStatID+ DwgStatEmpID+ DwgState+ Date
2NF DrawingStateHistories = DwgID+ DwgStatHistID + DwgStatID + DwgStatEmpID+ Date
DrawingStates
= DwgStatID + DwgState
Employees UNF Employees
= EmpID+ EmpName+ EmpNickName+ EmpStatusID+ EmpStatus+ EmpClassID+ EmpClass+ EmpClassStatus+ ClassCreatedDate+ WorkTime+ Username+ Userpass+ UserStatus+ LevelID+ LevelName+ LevelStatus
1NF Employees =
EmpID+ EmpName+ EmpNickName+ EmpStatusID+ EmpStatus+
EmpClassID+
EmpClass+
143
EmpClassStatus+ Username+
ClassCreatedDate+
Userpass+
WorkTime+
UserStatus+
LevelID+
LevelName+ LevelStatus
2NF Employees
=
EmpID+ EmpName+ EmpNickName+ EmpSt atusID + EmpClassID + WorkTime+ UserID
EmployeeStatus
=
EmpStatusID+ EmpStatus
Class
=
ClassID+
EClassName+
ClassStatus+
ClassCreatedDate Users
=
Username+ Userpass + UserStatus+ LevelID+ LevelName+ LevelStatus
3NF Employees
=
EmpID+
EmpName+
EmpNickName+
EmpStatusID + EmpClassID + WorkTime+ UserID EmployeeStatus
=
EmpStatusID + EmpStatus
Class
=
ClassID+
EClassName+
ClassStatus+
ClassCreatedDate Users
=
Username+ Userpass + UserStatus+ LevelID
Level
=
LevelID + LevelName+ LevelStatus
144
DrawingAccessHistories UNF DrawingAccessHistories =
DwgAccHistID
+
DwgID+
AccTypeID+ AccType+ AccEmpID+ DownloadTime+
UploadTime+
IdleTime
1NF DrawingAccessHistories =
DwgAccHistID
+
DwgID+
AccTypeID+ AccType+ AccEmpID+ DownloadTime+
UploadTime+
IdleTime
2NF DrawingAccessHistories =
DwgAccHistID AccTypeID
+ +
DwgID+ AccEmpID+
DownloadTime+ UploadTime
DrawingAccessTypes
=
AccTypeID + AccType
145
Notifications UNF Notifications
=
NotifID+ NotifTypeID+ PrjID+ DwgID+ NotifStatus+ NotifEmpID+ Date+ M essage
1NF Notifications
=
NotifID+ NotifTypeID+ PrjID+ DwgID+ NotifStatus+ NotifEmpID+ Date+ M essage
2NF Notifications
=
NotifID+ NotifTypeID+ PrjID+ DwgID+ NotifStatus+ Date
NotificationType
=
NotifTypeID + M essage
146
4.1.2.4 Model Diagram Relasional Global
Gambar 4.15 Model Diagram Relasi Global
147
Tabel 4.6 Kamus Data Multiplicity(Logikal) Entity
Multipli
Relation
city
Multipli
Entity
city
ClientReps
1..*
M ewakili
1..1
ClientCompanies
ClientReps
1..1
M engajukan
1..*
Projects
ProjectStates
1..1
M enjelaskan
1..*
Projects
ProjectTeam
1..*
M enangani
1..1
Projects
Employees
1..1
Bekerja Sebagai
1..*
ProjectTeam
Projects
1..1
Terdiri Dari
0..*
Drawings
Employees
1..*
M emiliki Kedudukan
1..1
Class
Drawings
1..1
M enggunakan
0..*
DrawingReference
Referensi Drawings
1..*
M empunyai Jenis
1..1
DrawingTypes
ProjectM anagers
1..1
Bertanggung Jawab
0..*
Drawings
Employees
1..1
M enggambar
0..*
Drawings
Employees
1..1
M engecek
0..*
Drawings
Employees
1..1
M erancang
0..*
Drawings
Employees
1..1
M enginisialisasi
0..*
Drawings
Employees
1..1
Dicatat Dalam
0..*
DrawingAccesHist ories
Employees
1..1
Dicatat Dalam
0..*
DrawingCheckHist ories
148
Employees
1..*
Berstatus
1..1
EmployeeStatus
Employees
1..1
M emiliki Account
0..1
Users
Users
1..*
M emiliki
1..1
Level
DrawingAccess
1..1
M enjelaskan
0..*
DrawingAccessHis
Types Drawings
tories 1..1
M emiliki Catatan
1..*
Akses DrawingCheckS
1..1
M enjelaskan
tories 0..*
tates Drawings
1..1
M emiliki Catatan
1..*
1..1
M emiliki Catatan
1..1
M enjelaskan
DrawingCheckHist ories
0..*
Status DrawingStates
DrawingCheckHist ories
Pengecekan Drawings
DrawingAccessHis
DrawingStateHisto ries
1..1
DrawingStateHisto ries
Notifications
0..*
M emberitakan
1..1
Drawings
Notifications
0..*
M emberitakan
1..1
Projects
Notifications
1..*
M emiliki
1..1
NotificationTypes
Notifications
1..1
Ditujukan kepada
1..*
NoteReceivers
NoteReceivers
1..*
M erupakan
1..1
Employees
Drawings
1..1
M emiliki
0..*
HoldHistories
Employees
1..1
Dicatat dalam
0..*
HoldHistories
149
4.1.3
Perancangan Basis Data Fisikal Untuk perancangan basis data fisikal kita harus melakukan pembuatan deskripsi implementasi dari basis data di secondary storage. Berikut ini adalah langkah-langkah yang dibutuhkan dalam perancangan basis data fisikal: a.
M erancang relasi dasar antar entitas basis data.
b.
M erancang constraints yang dibutuhkan .
c.
M elakukan analisis transaksi-transaksi yang ada.
d.
M emilih organisasi file.
e.
Pembuatan indeks tiap entitas-entitas.
f.
M emperkirakan kapasitas penyimpanan yang dibutuhkan.
g.
M erancang mekanisme keamanan.
4.1.3.1 Perancangan Relasional Dasar Basis Data Tujuan
dari tahap
ini adalah
untuk
memutuskan
bagaimana merepresentasikan relasi-relasi dasar yang diidentifikasi dalam model data logikal dalam DBM S yang dipakai. Relasi direpresentasikan dengan menggunakan DBDL(Database Design Language) untuk setiap entitas berisikan domain dari setiap atribut beserta penjelasan dan batasan dari tiap atribut.
150
1. Projects Domain
ProjectID
variable length character string, length 10
Domain
ClientRepID
number, length 4
Domain
ProjectTitle
variable length character string, length 100
Domain
ProjectStartDate
date
Domain
ProjectFinishDate
date
Domain
ProjectDeadline
date
Domain ProjectComment
variable length character string, length 500
Domain
ProjectStateID
number, length 1
Domain
ProjectWorkTime
number, length 8
Domain
ProjectPrice
number, length 5
Domain
ProjectCreatedDate date
Domain
ProjectLocation
variable length character string, length 50
Projects( PrjID
ProjectID
ClRepID
ClientRepID
PrjTitle
ProjectTitle
PrjStartDate
ProjectStartDate
PrjFinishDate
ProjectFinishDate
PrjDeadline
ProjectDeadline
PrjComment
ProjectComment
PrjStateID
ProjectStateID
not null,
not null,
not null, default 0,
151
PrjWorkTime
ProjectWorkTime
not null, default 0,
PrjPriceperM anHour ProjectPrice CreatedDate
ProjectCreatedDate not null, default sysdate,
PrjLocation
ProjectLocation
PRIM ARY KEY(PrjID), FOREIGN KEY (ClRepID) REFERENCES ClientReps(ClRepID) , FOREIGN KEY (PrjStateID) REFERENCES ProjectStates(PrjStateID));
2. ClientReps Domain
ClientRepID number, length 4
Domain
ClientName
variable length character string, length 50
Domain
ClientPhone
variable length character string, length 15, in the range of '0-9'
Domain
CompanyID
number, length 3
ClientReps( ClRepID
ClientRepID not null,
ClName
ClientName
ClPhone
ClientPhone
CompanyID CompanyID
not null,
not null,
152
PRIM ARY KEY(ClRepID), FOREIGN KEY (CmpID) REFERENCES ClientCompanies(CmpID));
3. ClientCompanies Domain
CompanyID
number, length 3
Domain
CompanyName
variable length character string, length 50
Domain
CompanyAddress variable length character string, length 100
Domain
CompanyEmail
variable length character string, length 50
Domain
CompanyPhone
variable length character string, length 15, in the range of '0-9'
ClientCompanies( CmpID
CompanyID
not null,
CmpName
CompanyName
not null,
CmpAddress CompanyAddress CmpEmail
CompanyEmail
CmpPhone
CompanyPhone
PRIM ARY KEY(CmpID));
not null,
153
4. ProjectS tates Domain
ProjectStateID number, length 3
Domain
ProjectState
variable length character string, length 30
ProjectStates( PrjStateID ProjectStateID not null, PrjState
ProjectState
not null,
PRIM ARY KEY(PrjStateID)); 5. ProjectTeam Domain
ProjectID
variable length character string, length 10
Domain
EmployeeID number, length 5
ProjectTeam( PrjID
ProjectID
not null,
EmpID EmployeeID not null,
PRIM ARY KEY(PrjID,EmpID), FOREIGN KEY (PrjID) REFERENCES Projects(PrjID) ON DELETE CASCADE, FOREIGN KEY (EmpID) REFERENCES Employees(EmpID) ON DELETE CASCADE);
154
6. Employees Domain
EmployeeNumber
number, length 5
Domain
EmployeeName
variable length character string, length 20
Domain
EmployeeNickName
variable length character string, length 5
Domain
EmployeeStatusNumber number, length 2
Domain
EmployeeClassCode
variable length character string, length 5
Domain
EmployeeWorkTime
number, length 8
Domain EmployeeUsername
variable length character string, length 20
Employees( EmpID
EmployeeID
not null,
EmpName
EmployeeName
not null,
EmpNickName EmployeeNickName
not null,
EmpStatusID
EmployeeStatusID
not null,
EmpClassID
EmployeeClassID
not null,
WorkTime
EmployeeWorkTime not null, default 0,
UserID
EmployeeUsername
PRIM ARY KEY(EmpID), FOREIGN KEY (EmpStatusID) REFERENCES EmployeeStatus(EmpStatusID), FOREIGN KEY (EmpClassID) REFERENCES Class(ClassID), FOREIGN KEY (UserID) REFERENCES Users(Username) ON DELETE SET NULL);
155
7. EmployeeStatus Domain
EmployeeStatusID number, length 2
Domain
EmployeeStatus
variable length character string, length 30
EmployeeStatus( EmpStatusID EmployeeStatusID not null, EmpStatus
EmployeeStatus
not null,
PRIM ARY KEY(EmpStatusID)); 8. Notifications Domain
NotificationID
number, length 10
Domain
NotificationTypeID number, length 2
Domain
ProjectID
variable length character string, length 10
Domain
DrawingID
variable length character string, length 20
Domain
EmployeeID
number, length 5
Domain
NotificationStatus
number, length 1
Domain
NotificationDate
date
Notifications( NotifID
NotificationID
not null,
NotifTypeID NotificationTypeID not null, PrjID
ProjectID
156
DwgID
DrawingID
NotifStatus
NotificationStatus
not null, default 1,
Date
NotificationDate
not null, default sysdate,
PRIM ARY KEY(NotifID), FOREIGN KEY (NotifTypeID) REFERENCES NotificationType(NotifTypeID), FOREIGN KEY (PrjID) REFERENCES Projects(PrjID) ON DELETE SET NULL, FOREIGN KEY (DwgID) REFERENCES Drawings(DwgID) ON DELETE SET NULL, 9. NotificationType Domain
NotificationTypeID
Domain
NotificationM essage variable length character string, length 50
number, length 2
NotificationType( NotifTypeID NotificationTypeID M essage
not null,
NotificationM essage not null,
PRIM ARY KEY(NotifTypeID));
157
10. NoteReceivers Domain
NotificationID
number, length 10
Domain
NotifEmployeeID number, length 5
NotificationType( NotifID NotificationID EmpID
not null,
NotifEmployeeID not null,
PRIM ARY KEY(NotifTypeID)); FOREIGN KEY (EmpID) REFERENCES Employees(EmpID) ON DELETE CASCADE); FOREIGN KEY (NotifID) REFERENCES Notifications(NotifID) ON DELETE CASCADE); 11. DrawingReferences Domain
DrawingID
variable length character string, length 20
Domain
DrawingRefID
variable length character string, length 20
Domain
REFERENCEStatus number, length 1
DrawingREFERENCES( DwgID
DrawingID
DwgRefID DrawingRefID RefStatus
not null, not null,
REFERENCEStatus not null, default 0,
158
PRIM ARY KEY(DwgID,DwgRefID), FOREIGN KEY(DwgID) REFERENCES Drawings(DwgID) ON DELETE CASCADE, FOREIGN KEY (DwgRefID) REFERENCES Drawings(DwgID) ON DELETE CASCADE); 12. DrawingS tates Domain
DrawingStatID number, length 1
Domain
DrawingState
variable length character string, length 20
DrawingStates( DwgStatID DrawingStatID not null, DwgState
DrawingState
not null,
PRIM ARY KEY(DwgStatID)); 13. DrawingS tateHistories Domain
DrawingStatHistID
number, length 10
Domain
DrawingID
variable length character string, length 20
Domain
DrawingStatID
number, length 2
Domain
Date
date
Domain DrawingStatEmpID number, length 5 DrawingStateHistories(
159
DwgStatHistID
DrawingStatHistID
not null,
DwgID
DrawingID
not null,
DwgStatID
DrawingStatID
not null,
Date
Date
not null, default sysdate,
DwgStatEmpID DrawingStatEmpID not null,
PRIM ARY KEY(DwgStatHistID), FOREIGN KEY (DwgID) REFERENCES Drawings(DwgID) ON DELETE CASCADE, FOREIGN KEY (DwgStatID) REFERENCES DrawingStates(DwgStatID) , FOREIGN KEY (DwgStatEmpID) REFERENCES Employees(EmpID)); 14. Users Domain
UserName
variable length character string, length 15
Domain
UserPassword fixed length character string, length 50
Domain
UserStatus
number, length 1
Domain
UserLevelID
number, length 1
Users( Username
UserName
Userpass
UserPassword not null,
UserStatus UserStatus
not null,
not null, default 1,
160
LevelID
UserLevelID
not null, default 1,
PRIM ARY KEY(Username), FOREIGN KEY (LevelID) REFERENCES Level(LevelID)); 15. Drawings Domain
DrawingID
variable length character string, length 20
Domain
ProjectID
variable length character string, length 10
Domain
ClientDrawingID
variable length character string, length 20
Domain
DrawingTypeID
fixed length character string, length 1, must be one of 'M ','C','A','S'
Domain
DrawingRevisionID
variable length character string, length 20
Domain
DateStarted
Date
Domain
DateIssued
Date
Domain
RevisionTitle
variable length character string, length 30
Domain
DesignerID
number, length 5
Domain
DrafterID
number, length 5
Domain
CheckerID
number, length 5
Domain
ApproverID
number, length 5
Domain
OriginatorID
number, length 5
Domain
TitleLine1
variable length character string, length 40
Domain
TitleLine2
variable length character string, length 40
161
Domain
TitleLine3
variable length character string, length 40
Domain
TitleLine4
variable length character string, length 40
Domain
DesignerComment
variable length character string, length 500
Domain
CheckerComment
variable length character string, length 500
Domain
ApproverComment
variable length character string, length 500
Domain
Remarks
variable length character string, length 500
Domain
DrawingFile
binary file locator, BFILE
Domain
ExpectedTime
number, length 5
Domain
DrawingTime
number, length 5
Domain
ClientComment
variable length character string, length 500
Domain
LastDrawingStatID
number, length 2
Domain
LastDrawingCheckID
number, length 2
Domain
TransmittalNo
variable length character string, length 100
Drawings( DwgID
DrawingID
not null,
PrjID
ProjectID
not null,
ClientDwgID
ClientDrawingID
DwgTypeID
DrawingTypeID
DwgRevID
DrawingRevisionID
DateStarted
DateStarted
DateIssued
DateIssued
not null,
162
RevTitle
RevisionTitle
DesignerID
DesignerID
DrafterID
DrafterID
CheckerID
CheckerID
not null,
ApproverID
ApproverID
not null,
OriginatorID
OriginatorID
not null,
TitleLine1
TitleLine1
not null,
TitleLine2
TitleLine2
TitleLine3
TitleLine3
TitleLine4
TitleLine4
DesignerComment
DesignerComment
CheckerComment
CheckerComment
not null,
ApproverComment ApproverComment Remarks
Remarks
DwgFile
DrawingFile
ExpTime
ExpectedTime
DwgTime
DrawingTime
ClientComment
ClientComment
LastDwgStatID
LastDrawingStatID
LastDwgCheckID
LastDrawingCheckID
TransNo
TransmittalNo
PRIM ARY KEY(DwgID),
not null, default 0,
not null, default 1,
163
FOREIGN KEY (PrjID) REFERENCES Projects(PrjID) ON DELETE CASCADE, FOREIGN KEY (DwgTypeID) REFERENCES DrawingTypes(DwgTypeID), FOREIGN KEY (DwgRevID) REFERENCES Drawings(DwgID) ON DELETE SET NULL, FOREIGN KEY (DesignerID) REFERENCES Employees(EmpID), FOREIGN KEY (DrafterID) REFERENCES Employees(EmpID) ON DELETE SET NULL, FOREIGN KEY (CheckerID) REFERENCES Employees(EmpID) , FOREIGN KEY (ApproverID) REFERENCES Employees(EmpID), FOREIGN KEY (OriginatorID) REFERENCES Employees(EmpID), FOREIGN KEY (LastDwgCheckID) REFERENCES DrawingCheckStates(DwgCheckStatID) , FOREIGN KEY (LastDwgStatID) REFERENCES DrawingStates(DwgStatID));
16. DrawingCheckHistories Domain
DrawingCheckHistID number, length 10
Domain
DrawingID
variable length character string, length 20
Domain
DrawingCheckStatID
number, length 2
Domain
Date
date
164
DrawingCheckHistories( DwgCheckHistID DrawingCheckHistID not null, DwgID
DrawingID
not null,
DwgCheckStatID
DrawingCheckStatID
not null,
Date
Date
not null, default sysdate,
PRIM ARY KEY(DwgCheckHistID), FOREIGN KEY (DwgID) REFERENCES Drawings(DwgID) ON DELETE CASCADE, FOREIGN KEY (DwgCheckStatID) REFERENCES DrawingCheckStates(DwgCheckStatID));
17. DrawingCheckS tates Domain
DrawingCheckStatID number, length 2
Domain
DrawingCheckState
variable length character string, length 30
DrawingCheckStates( DwgCheckStatID DrawingCheckStatID not null, DwgCheckState
DrawingCheckState
PRIM ARY KEY(DwgCheckStatID));
not null,
165
18. DrawingAccessHistories Domain
DrawingAccessHistID number, length 10
Domain
DrawingID
variable length character string, length 20
Domain
AccessTypeID
number, length 2
Domain
AccessEmpID
number, length 5
Domain
DownloadTime
date
Domain
UploadTime
date
Domain
IdleTime
Number(5)
DrawingAccessHistories( DwgAccHistID DrawingAccessHistID not null, DwgID
DrawingID
not null,
AccTypeID
AccessTypeID
not null,
AccEmpID
AccessEmpID
not null,
DownloadTime DownloadTime UploadTime
UploadTime
IdleTime
IdleTime
not null, default sysdate,
PRIM ARY KEY(DwgAccHistID), FOREIGN KEY (DwgID) REFERENCES Drawings(DwgID) ON DELETE CASCADE, FOREIGN KEY (AccTypeID) REFERENCES DrawingAccessTypes(AccTypeID) ,
166
FOREIGN KEY (AccEmpID) REFERENCES Employees(EmpID)); 19. Class Domain
ClassCode
variable length character string, length 20
Domain
ClassName
variable length character string, length 20
Domain
ClassCreatedDate date
Domain
ClassStatus
number, length 1
Class( ClassID
ClassID
not null,
ClassName
ClassName
not null,
CreatedDate ClassCreatedDate not null, default sysdate, ClassStatus
ClassStatus
not null, default 1,
PRIMARY KEY(ClassID));
20. Level Domain
UserLevelID
number, length 1
Domain
UserLevelName variable length character string, length 15
Domain
UserLevelStatus number, length 1
Level( LevelID
UserLevelID
not null,
LevelName
UserLevelName not null,
167
LevelStatus UserLevelStatus not null, default 1,
PRIM ARY KEY(LevelID)); 21. DrawingTypes Domain
DrawingTypeID fixed length character string, length 1, must be one of 'M ', 'S', 'C', 'A' ,’E’, ‘G’
Domain
DrawingType
variable length character string, length 50
DrawingTypes( DwgTypeID DrawingTypeID not null, DwgType
DrawingType
not null,
PRIM ARY KEY(DwgTypeID)); 22. DrawingAccessTypes Domain
AccessTypeID number, length 2
Domain
AccessType
variable length character string, length 15
DrawingAccessTypes( AccTypeID AccessTypeID not null, AccType
AccessType
not null,
PRIM ARY KEY(AccTypeID));
168
23. HoldHistories Domain
HoldID
number, length 10
Domain
DrawingID
variable length character string, length 20
Domain
HoldDescription
variable length character string, length 500
Domain
HoldRaisedBy
number, length 5
Domain
HoldActionBy
variable length character string, length 100
Domain
HoldActionRequired variable length character string, length 500
Domain
HoldDate
date
HoldHistories( HoldID
HoldID
not null,
DwgID
DrawingID
not null,
HoldDesc
HoldDescription
RaisedBy
HoldRaisedBy
not null,
ActionBy
HoldActionBy
not null,
ActionRequired HoldActionRequired
not null,
HoldDate
not null, default sysdate,
HoldDate
PRIM ARY KEY(HoldID), FOREIGN KEY (DwgID) REFERENCES Drawings(DwgID) ON DELETE CASCADE, FOREIGN KEY (RaisedBy) REFERENCES Employees(EmpID) ON DELETE CASCADE);
169
4.1.3.2 Merancang Constraint Tujuan dari tahap ini adalah untuk merancang constraint perusahaan dalam DBM S. Berikut ini adalah beberapa constraint yang dipakai dalam DBM S:
1. Class ClassStatus harus bernilai 0 atau 1: Alter table class Add constraint class_stat_chk Check (CLASSSTATUS = 0 OR CLASSSTATUS = 1) novalidate;
2. DrawingReferences RefStatus harus bernilai 0 atau 1: Alter table DrawingReferences Add constraint dwgref_stat_chk Check (REFSTATUS = 0 OR REFSTATUS = 1) novalidate;
3. Users UserStatus harus bernilai 0 atau 1: Alter table Users Add constraint usr_stat_chk Check (USERSTATUS = 0 OR USERSTATUS = 1) novalidate;
170
4. Level LevelStatus harus bernilai 0 atau 1: Alter table Level Add constraint lvl_stat_chk Check (LEVELSTATUS = 0 OR LEVELSTATUS = 1) novalidate;
5. Notifications NotifStatus harus bernilai 0 atau 1: Alter table Notifications Add constraint not_stat_chk Check (NOTIFSTATUS = 0 OR NOTIFSTATUS = 1) novalidate;
6. ClientCompanies Email harus mengandung ‘@’: Alter table ClientCompanies Add constraint cc_email_chk Check (REGEXP_LIKE(CLEM AIL, '@')) novalidate; CmpPhone harus berisi angka dengan nilai 0-9: Add constraint cc_phone_chk Check (REGEXP_LIKE(CM PPHONE, '^[0-9]+$')) novalidate;
171
7. ClientReps ClPhone harus berisi angka dengan nilai 0-9: Alter table ClientReps Add constraint cl_phone_chk Check (REGEXP_LIKE(CLPHONE, '^[0-9]+$')) novalidate;
4.1.3.3 Analisis Transaksi Analisis
transaksi
bertujuan
untuk
memahami
fungsionalitas dari transaksi yang akan berjalan pada basis data dan untuk menganalisa transaksi yang penting. Transaksi-transaksi yang terjadi adalah sebagai berikut: (a)
M elakukan login ke dalam sistem
(b)
M elihat notifikasi tugas dan/ atau menghapusnya
(c)
M elihat daftar tugas yang harus dikerjakan
(d)
M emberikan tugas mengerjakan gambar pada drafter tertentu
(e)
M elihat data gambar
(f)
M engambil file gambar dengan tujuan untuk membaca saja
(g)
M elihat history dari state suatu gambar
(h)
M elihat history dari state suatu gambar
(i)
M engambil file gambar dengan tujuan untuk mengubahnya
(j)
M emasukkan file gambar yang sudah diubah
(k)
M embuat permintaan akan suatu gambar untuk dijadikan referensi
(l)
M embuat permintaan akan gambar baru
172
(m) M engubah status pengecekan dan pemberian komentar oleh checker (n)
M emasukkan data proyek baru
(o)
M engubah status pengecekan dan pemberian komentar oleh engineer
(p)
M engubah status pengecekan dan pemberian komentar oleh project manager
(q)
M enyetujui suatu gambar untuk dijadikan referensi terhadap gambar lain
(r)
M elihat daftar revisi sebelumnya dari suatu gambar
(s)
M encari gambar berdasarkan nomor atau judul gambar
(t)
M enyetujui permintaan akan gambar baru dari originator
(u)
M emasukkan status pengecekan gambar dan komentar dari klien
(v)
M engubah status gambar menjadi siap dibagikan oleh Head Drafter
(w) M enolak permintaan suatu gambar dijadikan referensi dari drafter (x)
M emulai pengecekan terhadap suatu gambar
(y)
M engganti project manager dari suatu proyek
(z)
M elakukan persetujuan akhir terhadap suatu gambar oleh project manager
(aa) M emasukkan data gambar revisi dari gambar sebelumnya (bb) M elihat hold history dari sebuah gambar (cc) M enambah hold pada sebuah gambar (dd) M elihat laporan perubahan drawing state (ee) M elihat laporan waktu kerja karyawan
173
(ff) M elihat laporan pengaksesan gambar
Tabel 4.7 Tabel Analisis Transaksi (1)
Transaksi/relasi Employees Class Projects ClientReps ClientCompanies ProjectStates ProjectTeam DrawingReference s DrawingStates DrawingStateHisto ries Drawings DrawingCheckHist ories DrawingCheckStat es DrawingAccessHis tories DrawingAccessTy pes Users EmployeeStatus Level DrawingTypes HoldHistories Notifications NoteReciever NotificationType
a
b
c
d
e
I U D R I U D R I U D R I U D R I U D R x x x x x
x
x
x
x
x
x
x
x
x x x x x x x x
174
Tabel 4.8 Tabel Analisis Transaksi (2)
Transaksi/relasi
f
g
h
i
j
I U D R I U D R I U D R I U D R I U D R
Employees Class Projects ClientReps ClientCompanies ProjectStates ProjectTeam DrawingReference s DrawingStates DrawingStateHist ories Drawings DrawingCheckHis tories DrawingCheckSta tes DrawingAccessHi stories x DrawingAccessTy pes Users EmployeeStatus Level DrawingTypes HoldHistories Notifications NoteReciever NotificationType
x x
x
x
x
x x x
x
x
x x
175
Tabel 4.9 Tabel Analisis Transaksi (3)
Transaksi/relasi Employees Class Projects ClientReps ClientCompanies ProjectStates ProjectTeam DrawingReferenc es DrawingStates DrawingStateHist ories Drawings DrawingCheckHis tories DrawingCheckSta tes DrawingAccessHi stories DrawingAccessTy pes Users EmployeeStatus Level DrawingTypes HoldHistories Notifications NoteReciever NotificationType
k
l
m n I U D R I U D R I U D R I U D R I x x x
o U D R
x x x x x
x
x x x
x
x x
x
x
x
x
x
x
x x
x
x x x
x
x x x
x x x
x
176
Tabel 4.10 Tabel Analisis Transaksi (4)
Transaksi/relasi Employees Class Projects ClientReps ClientCompanies ProjectStates ProjectTeam DrawingReference s DrawingStates DrawingStateHist ories Drawings DrawingCheckHis tories DrawingCheckStat es DrawingAccessHi stories DrawingAccessTy pes Users EmployeeStatus Level DrawingTypes HoldHistories Notifications NoteReciever NotificationType
p I
q
r
s
t
U D R I U D R I U D R I U D R I U D R
x
x
x x
x
x
x
x x x
x
x
x
x
177
Tabel 4.11 Tabel Analisis Transaksi (5)
Transaksi/relasi
w x I U D R I U D R I U D R I U D R I
Employees Class Projects ClientReps ClientCompanies ProjectStates ProjectTeam DrawingReferenc es DrawingStates DrawingStateHist ories x Drawings x DrawingCheckHis tories DrawingCheckSta tes DrawingAccessHi stories DrawingAccessTy pes Users EmployeeStatus Level DrawingTypes HoldHistories Notifications x NoteReciever x NotificationType
u
v
y U D R
x x
x x
x
x
x
x
x x x
x x x
x x x
x
178
Tabel 4.12 Tabel Analisis Transaksi (6)
Transaksi/relasi Employees Class Projects ClientReps ClientCompanies ProjectStates ProjectTeam DrawingReference s DrawingStates DrawingStateHist ories Drawings DrawingCheckHis tories DrawingCheckSta tes DrawingAccessHi stories DrawingAccessTy pes Users EmployeeStatus Level DrawingTypes HoldHistories Notifications NoteReciever NotificationType
z
aa bb I U D R I U D R I U D R I x
cc dd U D R I U D R x x
x x x
x x x x
x x
x
x
x x x x x
x x x
x
179
Tabel 4.13 Tabel Analisis Transaksi (7)
Transaksi/relasi Employees Class Projects ClientReps ClientCompanies ProjectStates ProjectTeam DrawingReferences DrawingStates DrawingStateHistories Drawings DrawingCheckHistories DrawingCheckStates DrawingAccessHistories DrawingAccessTypes Users EmployeeStatus Level DrawingTypes HoldHistories Notifications NoteReciever NotificationType
Keterangan: I=Insert, U=Update, D=Delete, R=Read.
ee ff I U D R I U D R x x x x
x
x
x x
x
180
4.1.3.4 Menentukan Organisasi File Sistem basis data dari sejak awal pekembangannya sering menggunakan sistem penyimpanan tabel-tabel dengan teknik organisasi heap, di mana data disimpan di dalam blok data tanpa pengurutan dan koneksi di antara mereka. Untuk mempercepat akses dapat menggunakan indexing, tetapi indexing pada akhirnya menambah pemakaian ruang penyimpanan data dan mengurangi performa ketika dilakukan operasi DM L pada tabel tersebut. Oracle melihat akan kelemahan tersebut, dan merancang sebuah teknik organisasi baru yang bernama Index Organized Table. Dengan teknik penyimpanan ini, maka semua data di dalam tabel disimpan secara teratur seperti pada tabel biasa dengan index tambahan. Tetapi strategi ini hanya cocok diterapkan pada tabel yang hanya memiliki jumlah transaksi yang sedikit dalam jangka waktu tertentu. Atas dasar itu, maka kami memutuskan bahwa kami akan menggunakan teknik organisasi heap. Ini disebabkan oleh tingginya frekuensi penggunaan DM L di dalam sistem basis data ini, dan juga karena penggunaan indexing yang tidak terlalu banyak. 4.1.3.5 Pembuatan Indeks Untuk meningkatkan performa dari sistem ketika mencari data pembuatan indeks pada tabel-tabel dibutuhkan. Indeks dibuat
181
berdasarkan field yang sering diambil dalam pencarian data. Berikut ini adalah daftar indeks yang dibuat untuk masing-masing tabel : Tabel 4.14 Tabel Pembuatan Indeks Nama Tabel
Indeks
Nama Indeks
Projects
PrjID(Primary index)
Otomatis dibuat(primary key)
ClientReps
PrjTitle(Secondary index)
idx_prjtitle
ClRepID(Secondary index)
idx_clrepid
ClRepID(Primary index)
Otomatis dibuat(primary key)
ClientCompanies
ClName(Secondary index)
idx_clname
CmpID(Primary index)
Otomatis dibuat(primary key)
ProjectStates
CmpName(Secondary index)
idx_cmpname
CmpEmail(Secondary index)
idx_cmpemail
PrjStateID(Primary index)
Otomatis dibuat(primary key)
ProjectTeam
PrjID, EmpID(Primary index)
Otomatis dibuat(primary key)
Employees
EmpID(Primary index)
Otomatis dibuat(primary key)
EmpClassID(Secondary index)
idx_empclassid
182
EmployeeStatus
EmpStatusID(Secondary index)
idx_empstatusid
EmpName(Secondary index)
idx_empname
EmpStatusID(Primary index)
Otomatis dibuat(primary key)
DrawingReferences
DrawingStates
DwgID, DwgRefID(Primary
Otomatis dibuat(primary
index)
key)
DwgStatID(Primary index)
Otomatis dibuat(primary key)
DrawingStateHistories DwgStatHistID(Primary index)
Otomatis dibuat(primary key)
Drawings
DwgStatID(Secondary index)
idx_dw gstatid
DwgID(Primary index)
Otomatis dibuat(primary key)
ClientDwgID(Secondary index)
idx_cldw gid
DwgTypeID(Secondary index)
idx_dw gtypeid
DwgRevID(Secondary index)
idx_dw grevid
DrawingCheckHistori
DwgCheckHistID(Primary
Otomatis dibuat(primary
es
index)
key)
DwgCheckStatID(Secondary
idx_dw gcheckstatid
index) DrawingCheckStates
DwgCheckStatID(Primary
Otomatis dibuat(primary
index)
key)
183
DrawingAccessHistori DwgAccHistID(Primary index)
Otomatis dibuat(primary
es
key)
DrawingTypes
AccTypeID(Secondary index)
idx_acctypeid
DwgTypeID(Primary index)
Otomatis dibuat(primary key)
DrawingAccessTypes
AccTypeID(Primary index)
Otomatis dibuat(primary key)
Users
Username(Primary index)
Otomatis dibuat(primary key)
Notification
Userpass(Secondary index)
idx_userpass
NotifID(Primary index)
Otomatis dibuat(primary key)
NotificationTypes
NotifTypeID(Secondary index)
idx_notiftypeid
NotifTypeID(Primary index)
Otomatis dibuat(primary key)
NoteReceivers
NotifID(Primary index)
Otomatis dibuat(primary key)
EmpID(Primary index)
Otomatis dibuat(primary key)
Class
ClassID(Primary index)
Otomatis dibuat(primary key)
Level
LevelID(Primary index)
Otomatis dibuat(primary
184
key) HoldHistories
HoldID(Primary index)
Otomatis dibuat(primary key)
DwgID(Secondary index)
idx_holddwgid
4.1.3.6 Mengestimasi Kapasitas Penyimpanan yang Dibutuhkan Pada langkah ini dilakukan estimasi seberapa besar ukuran penyimpanan yang akan dibutuhkan oleh basis data: Tabel
Num_ Num_Row Num_Row Num_Row Num_Row Num_Row tahun 1 tahun 2 tahun 3 tahun 4 tahun 5 Row
Employee s
85
95
107
119
134
150
Class
18
18
18
18
18
18
Projects
0
3
8
16
25
35
ClientRep s
0
3
5
8
17
20
ClientCo mpanies
0
3
4
4
5
6
ProjectSta tes
3
3
3
3
3
3
ProjectTe am
0
54
144
288
450
630
DrawingR eferences
0
900
2400
4800
7500
10500
13
13
13
13
13
13
DrawingS
185
tates DrawingS tateHistor ies
0
6750
18000
36000
56250
78750
Drawings
0
450
1200
2400
3750
5250
DrawingC heckHisto ries
0
2700
7200
14400
22500
31500
DrawingC heckState s
6
6
6
6
6
6
Drawing AccessHi stories
0
13500
36000
72000
112500
157500
Drawing AccessTy pes
5
5
5
5
5
5
85
95
107
119
134
150
Employee Status
4
4
4
4
4
4
Level
3
3
3
3
3
3
DrawingT ypes
4
4
4
4
4
4
notificatio n
0
15000
40000
80000
125000
175000
notereciev er
0
67500
180000
360000
562500
787500
notificatio nType
23
23
23
23
23
23
0
1350
3600
7200
11250
15750
Users
HoldHisto
186
ries Tabel 4.15 Tabel Perhitungan Ukuran Penyimpanan I Keterangan: Num_row= jumlah baris Num_row tahun x=jumlah baris pada x tahun mendatang
Tabel
row_size
Rows_per Fill_ _page Factor
Free_Ro ws_Per_ Page
Num_Page
Table_Size (byte)
Employees
43
179,91
50
89,96
0,2390069
1957,94
Class
34
224,89
75
56,22
0,1511858
1238,51
Projects
80
98,73
75
24,68
0,8102767
6637,79
ClientReps
30
253,00
60
101,20
0,1185771
971,38
ClientCom panies
35
218,81
65
76,58
0,1599555
1310,36
ProjectStat es
17
426,11
50
213,05
0,0398962
326,83
ProjectTea m
17
426,11
50
213,05
0,0398962
326,83
DrawingRe ferences
25
299,85
50
149,93
0,0833745
683,00
DrawingSt ates
25
299,85
50
149,93
0,0833745
683,00
DrawingSt ateHistorie s
34
224,89
60
89,96
0,1511858
1238,51
Drawings
221
36,30
90
3,63
6,0873271
49867,38
187
DrawingC heckHistor ies
30
253,00
50
126,50
0,1185771
971,38
DrawingC heckStates
31
245,33
50
122,67
0,1263587
1035,13
DrawingA 39 ccessHistor ies
197,46
75
49,37
0,1975049
1617,96
DrawingA 25 ccessTypes
299,85
50
149,93
0,0833745
683,00
Users
55
142,04
65
49,71
0,3872283
3172,17
EmployeeS 14 tatus
506,00
50
253,00
0,027668
226,66
Level
27
279,17
75
69,79
0,0967144
792,28
DrawingTy 18 pes
404,80
50
202,40
0,0444664
364,27
notification
35
218,81
65
76,58
0,1599555
1310,36
noterecieve r
12
578,29
50
289,14
0,020751
169,99
notification 66 Type
119,06
50
59,53
0,5543478
4541,22
HoldHistor ies
155,69
60
62,28
0,3211462
2630,83
50
Tabel 4.16 Tabel Pehitungan Ukuran Penyimpanan II Keterangan: Num_cols=jumlah kolom Num_variable_cols=jumlah variable length columns Fixed_data_size=total byte semua fixed-length columns M ax_var_size=ukuran maksimum dari variable-length columns
188
Null_bitmap=2+((Num_cols+7)/8) Variable_Data_Size=2+(Num_Variable_Cols x 2)+M ax_Var_Size Row_Size=Fixed_Data_Size+Variable_Data_Size+Null_Bitmap+4 Rows_Per_Page=8096/(row_size+2) Fill_factor=faktor besarnya data terisi tiap halaman Free_rows_per_page=8096x((100-Fill_factor)/100)/(row_size+2) Num_pages=row_size/row_per_page Table_Size=8192xNum_Pages
4.1.3.7 Mekanisme Keamanan Berikut ini adalah perancangan mekanisme keamanan pada sistem basis data yang ada. M ekanisme ini bertujuan untuk membatasi hak akses pada pengguna sesuai dengan posisinya di dalam perusahaan. Berikut adalah sintaks SQL yang akan diaplikasikan. 1. M embuat Role Berdasarkan analisis kebutuhan pengaksesan data pada semua level anggota perusahaan, maka dibuatlah beberapa role yang sesuai. Berikut adalah role-role yang akan digunakan: a. CESBM S_DRAFTER CREATE ROLE "CESBM S_DRAFTER" NOT IDENTIFIED; b. CESBM S_DOCCTL CREATE ROLE "CESBM S_DOCCTL" NOT IDENTIFIED; c. CESBM S_ADM IN
189
CREATE ROLE "CESBM S_ADM IN" NOT IDENTIFIED; d. CESBM S_PROM AN_ENGINEER CREATE ROLE "CESBM S_PROM AN_ENGINEER" NOT IDENTIFIED; e. CESBM S_READALL CREATE ROLE "CESBM S_READALL" NOT IDENTIFIED;
2. M emberi hak akses pada tiap role a. CESBM S_DRAFTER GRANT INSERT ON "CES_BM S"."DRAWINGACCESSHISTORIES" TO "CESBM S_DRAFTER"; GRANT UPDATE ON "CES_BM S"."DRAWINGACCESSHISTORIES" TO "CESBM S_DRAFTER"; GRANT INSERT ON "CES_BM S"."DRAWINGREFERENCES" TO "CESBM S_DRAFTER"; GRANT UPDATE ON "CES_BM S"."DRAWINGS" TO "CESBM S_DRAFTER"; GRANT INSERT ON "CES_BM S"."DRAWINGSTATEHISTORIES" TO "CESBM S_DRAFTER"; GRANT INSERT ON "CES_BM S"."NOTERECEIVERS" TO "CESBM S_DRAFTER"; GRANT INSERT ON "CES_BM S"."NOTIFICATION" TO "CESBM S_DRAFTER"; GRANT UPDATE ON "CES_BM S"."USERS" TO "CESBM S_DRAFTER";
190
GRANT UPDATE ON "CES_BM S"."EM PLOYEES" TO "CESBM S_DRAFTER"; GRANT INSERT ON "CES_BM S"."DRAWINGCHECKHISTORIES" TO "CESBM S_DRAFTER";
b. CESBM S_DOCCTL GRANT INSERT ON "CES_BM S"."DRAWINGACCESSHISTORIES" TO "CESBM S_DOCCTL"; GRANT INSERT ON "CES_BM S"."DRAWINGCHECKHISTORIES" TO "CESBM S_DOCCTL"; GRANT DELETE ON "CES_BM S"."DRAWINGREFERENCES" TO "CESBM S_DOCCTL"; GRANT UPDATE ON "CES_BM S"."DRAWINGREFERENCES" TO "CESBM S_DOCCTL"; GRANT DELETE ON "CES_BM S"."DRAWINGS" TO "CESBM S_DOCCTL"; GRANT INSERT ON "CES_BM S"."DRAWINGS" TO "CESBM S_DOCCTL"; GRANT UPDATE ON "CES_BM S"."DRAWINGS" TO "CESBM S_DOCCTL"; GRANT INSERT ON "CES_BM S"."DRAWINGSTATEHISTORIES" TO "CESBM S_DOCCTL";
191
GRANT INSERT ON "CES_BM S"."NOTERECEIVERS" TO "CESBM S_DOCCTL"; GRANT INSERT ON "CES_BM S"."NOTIFICATION" TO "CESBM S_DOCCTL"; GRANT INSERT ON "CES_BM S"."PROJECTS" TO "CESBM S_DOCCTL"; GRANT UPDATE ON "CES_BM S"."PROJECTS" TO "CESBM S_DOCCTL"; GRANT INSERT ON "CES_BM S"."PROJECTTEAM" TO "CESBM S_DOCCTL"; GRANT UPDATE ON "CES_BM S"."PROJECTTEAM " TO "CESBM S_DOCCTL"; GRANT UPDATE ON "CES_BM S"."USERS" TO "CESBM S_DOCCTL" ; GRANT UPDATE ON "CES_BM S"."DRAWINGACCESSHISTORIES" TO "CESBM S_DOCCTL"; GRANT UPDATE ON "CES_BM S"."DRAWINGCHECKHISTORIES" TO "CESBM S_DOCCTL"; GRANT UPDATE ON "CES_BM S"."DRAWINGSTATEHISTORIES" TO "CESBM S_DOCCTL"; GRANT UPDATE ON "CES_BM S"."NOTIFICATION" TO "CESBM S_DOCCTL"; GRANT DELETE ON "CES_BM S"."PROJECTTEAM " TO "CESBM S_DOCCTL";
192
c. CESBM S_ADM IN GRANT DELETE ON "CES_BM S"."CLIENTCOM PANIES" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."CLIENTCOMPANIES" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."CLIENTCOM PANIES" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."CLIENTREPS" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."CLIENTREPS" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."CLIENTREPS" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."DRAWINGACCESSTYPES" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."DRAWINGACCESSTYPES" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."DRAWINGACCESSTYPES" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."DRAWINGCHECKSTATES" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."DRAWINGCHECKSTATES" TO "CESBM S_ADM IN";
193
GRANT UPDATE ON "CES_BM S"."DRAWINGCHECKSTATES" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."DRAWINGSTATES" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."DRAWINGSTATES" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."DRAWINGSTATES" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."DRAWINGTYPES" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."DRAWINGTYPES" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."DRAWINGTYPES" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."EM PLOYEES" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."EMPLOYEES" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."EM PLOYEES" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."EM PLOYEESTATUS" TO "CESBM S_ADM IN";
194
GRANT INSERT ON "CES_BM S"."EMPLOYEESTATUS" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."EM PLOYEESTATUS" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."LEVEL" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."LEVEL" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."LEVEL" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."NOTERECEIVERS" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."NOTERECEIVERS" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."NOTERECEIVERS" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."NOTIFICATION" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."NOTIFICATION" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."NOTIFICATION" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."NOTIFICATIONTYPE" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."NOTIFICATIONTYPE" TO "CESBM S_ADM IN";
195
GRANT UPDATE ON "CES_BM S"."NOTIFICATIONTYPE" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."PROJECTSTATES" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."PROJECTSTATES" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."PROJECTSTATES" TO "CESBM S_ADM IN"; GRANT DELETE ON "CES_BM S"."USERS" TO "CESBM S_ADM IN"; GRANT INSERT ON "CES_BM S"."USERS" TO "CESBM S_ADM IN"; GRANT UPDATE ON "CES_BM S"."USERS" TO "CESBM S_ADM IN" ;
d. CESBM S_PROM AN_ENGINEER GRANT INSERT ON "CES_BM S"."DRAWINGACCESSHISTORIES" TO "CESBM S_PROM AN_ENGINEER"; GRANT UPDATE ON "CES_BM S"."DRAWINGACCESSHISTORIES" TO "CESBM S_PROMAN_ENGINEER"; GRANT INSERT ON "CES_BM S"."DRAWINGCHECKHISTORIES" TO "CESBM S_PROM AN_ENGINEER"; GRANT INSERT ON "CES_BM S"."DRAWINGS" TO "CESBM S_PROM AN_ENGINEER"; GRANT UPDATE ON "CES_BM S"."DRAWINGS" TO "CESBM S_PROM AN_ENGINEER";
196
GRANT INSERT ON "CES_BM S"."DRAWINGSTATEHISTORIES" TO "CESBM S_PROM AN_ENGINEER"; GRANT INSERT ON "CES_BM S"."NOTERECEIVERS" TO "CESBM S_PROM AN_ENGINEER"; GRANT INSERT ON "CES_BM S"."NOTIFICATION" TO "CESBM S_PROM AN_ENGINEER"; GRANT UPDATE ON "CES_BM S"."PROJECTS" TO "CESBM S_PROM AN_ENGINEER"; GRANT UPDATE ON "CES_BM S"."USERS" TO "CESBM S_PROM AN_ENGINEER"; GRANT UPDATE ON "CES_BM S"."EM PLOYEES" TO "CESBM S_PROM AN_ENGINEER"; GRANT INSERT ON "CES_BM S"."HOLDHISTORIES" TO "CESBM S_DOCCTL";
e. CESBM S_READALL GRANT SELECT ON "CES_BM S"."CLASS" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."CLASS2" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."CLIENTCOMPANIES" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."CLIENTREPS" TO "CESBM S_READALL";
197
GRANT SELECT ON "CES_BM S"."DRAWINGACCESSHISTORIES" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DRAWINGACCESSTYPES" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DRAWINGCHECKHISTORIES" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DRAWINGCHECKSTATES" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DRAWINGREFERENCES" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DRAWINGS" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DRAWINGSTATEHISTORIES" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DRAWINGSTATES" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DRAWINGTYPES" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."EMPLOYEES" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."EMPLOYEESTATUS" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."LEVEL" TO "CESBM S_READALL";
198
GRANT SELECT ON "CES_BM S"."NOTERECEIVERS" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."NOTIFICATION" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."NOTIFICATIONTYPE" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."PROJECTS" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."PROJECTSTATES" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."PROJECTTEAM" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."USERS" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."WORK_CLASS" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."CLREP_SEQ" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."CM P_SEQ" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DWGAHIST_SEQ" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DWGCHIST_SEQ" TO "CESBM S_READALL";
199
GRANT SELECT ON "CES_BM S"."DWGSHIST_SEQ" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DWG_FILE_SEQ" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."DWG_SEQ" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."EMP_SEQ" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."NOTIF_SEQ" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."PROJECT_SEQ" TO "CESBM S_READALL"; GRANT SELECT ON "CES_BM S"."HOLD_SEQ" TO "CESBM S_READALL";
GRANT EXECUTE ON "CES_BM S"."GET_CANONICAL_LOCAL_BFILENAM E" TO "CESBM S_READALL"; GRANT EXECUTE ON "CES_BM S"."GET_DIRECTORY_PATH" TO "CESBM S_READALL"; DRAFTER Role/Tabel CLASS2
I
DOCCTL
R U D I
R U D I
ADMIN
PROMAN_ READ A ENGINEER LL R U D I R U D I R U D X
200
CLIENTCOM PA NIES
X
X X
X
CLIENTREPS
X
X X
X
DRAWINGACC ESSHISTORIES
X
X
X
X
X
DRAWINGACC ESSTYPES
DRAWINGCHE CKHISTORIES
X
DRAWINGSTAT X EHISTORIES
X
X X
X
X X
X
X
X
X
X
DRAWINGREFE X RENCES
X
X X
X
DRAWINGCHE CKSTATES
DRAWINGS
X
X
X
X X
X
X
X
X
X
X X
DRAWINGSTAT ES
X
X X
X
DRAWINGTYPE S
X
X X
X
201
EM PLOYEES
X
X
X X
EM PLOYEESTA TUS
X
X X
X
LEVEL NOTERECEIVE RS
X
X
X X
X X X X X
X X
NOTIFICATION
X
X
X
X X X
X
X
X X
X
X
NOTIFICATION TYPE PROJECTS
X
X X
PROJECTSTATE S PROJECTTEAM USERS HOLDHISTORIE S
X
X X
X X
X X
X X X
X
X X
X X
X
X
X X
X
CLREP_SEQ
X
CMP_SEQ
X
DWGAHIST_SE Q
X
DWGCHIST_SE Q
X
202
DWGSHIST_SE Q
X
DWG_FILE_SEQ
X
DWG_SEQ
X
EM P_SEQ
X
NOTIF_SEQ
X
PROJECT_SEQ
X
HOLD_SEQ
X
GET_CANONIC AL_LOCAL_BFI LENAM E GET_DIRECTO RY_PATH
X
X
Tabel 4.17 Tabel Keamanan Data
4.2 Perancangan Aplikasi Berikut ini adalah perancangan aplikasi yang di dalamnya termasuk perancangan struktur menu untuk setiap role. Kemudian dilanjutkan dengan STD(State Transition Diagram) beserta dengan spesifikasi prosesnya. 4.2.1 S truktur Menu Gambar-gambar di bawah ini adalah struktur menu dari setiap role.
203
Gambar 4.16 S truktur Menu Drafter
204
Gambar 4.17 S truktur Menu Engineer
205
Gambar 4.18 S truktur Menu Checker
206
Gambar 4.19 S truktur Menu Project Manager
207
Gambar 4.20 S truktur Menu Document Controller
208
Gambar 4.21 S truktur Menu Head Drafter
209
Gambar 4.22 S truktur Menu Admin
210
Gambar 4.23 S truktur Menu Global
211
4.2.2
State Transition Diagram (S TD)
Gambar 4.24 S TD Halaman Login
212
Gambar 4.25 S TD Halaman Utama Drafter
213
Gambar 4.26 S TD Halaman Utama Head Drafter
214
Gambar 4.27 S TD Halaman Utama Engineer
Gambar 4.28 S TD Halaman Utama Checker
215
Gambar 4.29 S TD Halaman Utama Project Manager
Gambar 4.30 S TD Halaman Utama Document Control
216
Diagram-diagram STD berikut dibawah ini mengharuskan anda untuk melewati tahap STD login terlebih dahulu:
Gambar 4.31 S TD Halaman Drawing Head Drafter
217
Gambar 4.32 S TD Halaman Drawing Drafter
218
Gambar 4.33 S TD Halaman Drawing Engineer
219
Gambar 4.34 S TD Halaman Drawing Checker
220
Home
Kli k My home Tamp ilkan H alama n Home Klik Read o nly Tampi lkan Hal aman Draw ing de ngan wind ow untuk d ownl oad file
Kl ik (n ama draw ing) Tampi lkan Hal aman Dra wing s
Project Manag er Drawi ng
Kl ik Start Checkin g Tamp ilkan Ha laman D rawin g dgn kotak submit ch eck te rsedia
Klik Submi t Che ck(j ika reje ct) Tampi lkan Hal aman Ho me d enga n pesan
Do cument Fi nali zation Kl ik Submit Check(ji ka appro ve) Ta mpilka n Hala man Docume nt fin aliza ti on
Kli k Vie w R eference Do cument Tampil kan Hal aman Refere nce Drawi ng
Klik View Ch eck H istory Ta mp ilkan H alama n C heck History
Kli k Vie w Pre vious Draw ing Tamp ilkan H alama n R evisio n Draw ing
Ch eck H istory R efe rence Dra wing
Klik Vie w Status History Kl ik Vi ew Access H istory Ta mpilka n Hala ma n Tampi lkan Hal aman Access State H istory H istory
State History
Revi sion Dra wing
Klik Ho ld Tamp ilkan H alama n H old
Hol d
Gambar 4.35 S TD Halaman Drawing Project Manager
Access History
221
Ho me
Klik (n ama dra win g) Ta mpi lka n Ha la man D raw ing s
Kl ik My ho me Tam pil kan Hal ama n H om e
Do cume nt Co ntrol D raw in g
Kl ik U pda te(se la in ke sta tu s sen t) Tamp ilk an H al ama n Ho me de ng an p esa n
Kl ik Vi ew R efere nce Do cume nt Ta mpi lkan Ha lam an R efere nce Dra wi ng
R efer enc e D raw in g
Kli k V iew Ch eck Hi story Tamp il kan H al ama n C he ck Histo ry
C he ck Hi sto ry
Kl ik R ead On ly Vi ew Tamp ilk an H al ama n Dra wi ng d en ga n wi ndo w u ntuk d ow nl oad fi le
Klik Vi ew S ta tu s Hi sto ry Ta mp ilka n H ala man Sta te Hi sto ry
Kl ik Vie w Acce ss Hi story Ta mp ilka n H ala man Acces s His to ry
Sta te Hi sto ry
Kli k Up date (ji ka up da te ke status se nt) Tam pil kan Hal ama n Tran smi ttal
Tra nsmi tta l
Klik Vi ew P revi ou s D raw in g Tamp il kan H al ama n Re visi on Dr awi ng
Rev isio n D raw ing
Gambar 4.36 S TD Halaman Drawing Document Control
Gambar 4.37 S TD Menu Admin
Acce ss His to ry
222
Gambar 4.38 S TD Halaman See Reference Request
Gambar 4.39 S TD Halaman Search Drawing
223
Gambar 4.40 S TD Halaman My Account
Gambar 4.41 S TD Halaman View Drafters
224
Gambar 4.42 S TD Halaman Create Project
225
Halaman Home
Klik My home Tampilkan Halaman Home
Klik Edit Employees Tampilkan Halaman Edit Employees
Klik Add New Employee Tetap di halaman Edit Employees dan employees form dikosongkan untuk add employee
Edit Employees Klik Add(gagal) Format tidak benar tampilkan halaman edit employees dengan pesan kesalahan
Klik Add(berhasil) Tampilkan halaman Edit Employees dengan pesan berhasil dan data employee yang baru ditambahkan ke employee explorer
Klik Update(berhasil) Tampilkan halaman Edit Employees dengan pesan berhasil
Gambar 4.43 S TD Halaman Edit Employees
Klik salah satu row employee explorer Tetap di halaman Edit Employees dan employees form diisi data employee yang dipilih untuk diupdate Klik Update(gagal) Format tidak benar tampilkan halaman edit employees dengan pesan kesalahan
226
Gambar 4.44 S TD Halaman Edit Clients
227
Klik (nama drawing) pada tree browser Tampilkan halaman drawing Drawings
Halaman Home
Klik Submit (berhasil) Tampilkan Halaman Home dengan pesan sukses melakukan finalisasi status dokumen
Klik My Home Tampilkan halaman Home
Klik Submit Check(khusus project manager) Tampilkan halaman document finalization
Document Finalization
Klik Submit(gagal) Format tidak benar, tetap di halaman document finalization dengan pesan kesalahan
Klik Reset Tetap di halaman document finalization dan isi form dihapus
Gambar 4.45 S TD Halaman Document Finalization
228
Gambar 4.46 S TD Halaman Raise Hold Drawing
Gambar 4.47 S TD Halaman Update/ View Project
229
Klik (nama drawing) pada tree browser Tampilkan halaman drawing Drawings
Halaman Home Klik My Home T ampilkan halaman Home
Klik Later Tampilkan Halaman Home
Klik My home Tampilkan Halaman Home
Klik Submit (berhasil) Tampilkan Halaman Home dengan pesan sukses melakukan transmittal
Klik Update(khusus Document control) dengan status sent Tampilkan halaman Transmittal
T ransmittal
Klik Submit(gagal) Tidak ada yang dicek atau nomor transmittal tidak diisi, tetap di halaman transmittal dengan pesan kesalahan
Gambar 4.48 S TD Halaman Transmittal
4.2.3
S pesifikasi Proses Spesifikasi proses merupakan penjabaran langkah-langkah yang terstruktur pada tiap modul yang ada. Penjabaran langkah-langkah tersebut disusun menggunakan pseudocode, selengkapnya dapat dilihat pada Lampiran 2.