104
BAB 4
RANCANGAN SISTEM YANG DIUSULKAN
4.1 Perancangan Basis Data
Tahap perancangan basis data dilakukan sesuai dengan kebutuhan informasi yang telah diidentifikasi pada PT. JAS. Perancangan basis data tersebut dibagi menjadi 3 tahapan utama: perancangan basis data konseptual, perancangan basis data logikal, perancangan basisdata fisikal.
4.1.1 Perancangan Basis Data Konseptual
Perancangan basisdata konseptual merupakan suatu proses yang digunakan untuk merancang model data konseptual dengan menggunakan informasi yang diperoleh dari PT. JAS.
4.1.1.1 Identifikasi Tipe Entitas
Tahap ini bertujuan untuk menentukan entitas utama yang diperlukan dalam perancangan basis data konseptual
Entity Name Description Aliases Occurance Consignees Istilah umum yang
menggambarkan peru-sahaan pengguna laya-nan kargo PT. JAS. Consignees dapat beru-pa shipper/agent beru-pada
Company Setiap consignees dapat mempunyai lebih dari satu account dan dapat mengirim-kan banyak barang yang ber-beda sehingga dapat mempu-nyai lebih dari satu AWB.
105 outgoing cargo serta
berupa penerima ba-rang pada incoming cargo.
AWB Istilah umum untuk
dokumen yang diguna-kan sebagai bukti kon-trak pengangkutan ba-rang (kargo) oleh pesa-wat.
AirWayBill Setiap AWB mempunyai satu commodities. dapat mempu-nyai banyak kwitansi. Satu AWB juga dapat mempunyai satu atau banyak Shipment dan dapat mempunyai lebih dari satu dokumen yang terkait dengan AWB tertentu. Shipment Istilah umum untuk
da-ta pengiriman barang sejenis yang dibagi menjadi beberapa pe-nerbangan.
Shipment Setiap barang yang dikirim dalam jumlah besar sehingga tidak mungkin dilakukan dalam satu penerbangan dapat dibagi menjadi beberapa shipment yang berbeda. Dalam satu shipment terdapat beberapa ULD. Setiap ship-ment mempunyai satu flight. Dan setiap shipment mempu-nyai satu AWB
Documents Istilah umum surat pengambilan dokumen kargo (Document Deli-very Order), pengam-bilan barang (Cargo Delivery Order), atau pemberitahuan barang telah tiba (Notice of Arrival).
DocumentDeli veryOrder
Setiap dokumen menandakan bahwa terdapat barang baru telah masuk (incoming) dan setiap dokumen dihasilkan oleh satu user dan hanya mempunyai satu AWB.
106 menyebut bagian dari
pesawat yang akan ditempatkan barang cargo.
es ULD yang berbeda
ter-gantung pada volume dan bentuk barang. Setiap ULD dapat dimiliki oleh satu atau lebih Shipment.
Airports Istilah umum untuk da-ta bandara baik domes-tik maupun internasio-nal.
Airports Setiap airport dapat memiliki banyak penerbangan (Flight). Setiap AWB dapat dihasilkan oleh satu airport.
Flights Istilah umum untuk data pesawat yang digunakan untuk me-ngangkut barang.
Flights Setiap Flight dapat mem-punyai banyak shipment. Dan pada setiap flight terdapat banyak ULD didalamnya. Airlines Istilah umum untuk
Data perusahaan pe-nerbangan yang terlibat dalam proses kargo bandara.
Airlines Setiap Flight dapat mem-punyai satu Airline yang terbagi atas banyak Shipment.
Commodities Istilah umum untuk jenis barang yang di kirim melalui pesawat.
Commodities AWB dapat memiliki banyak barang dan setiap dokumen hanya memuat satu commodi-ties.
Accounts Istilah umum untuk akun yang dimiliki oleh pelanggan perusahaan untuk transaksi pemba-yaran secara deposit.
Accounts Setiap account terpakai apa-bila customer melakukan pembayaran dengan tipe de-posit. Satu account dapat me-lakukan banyak transaksi de-posit
TrDeposit Istilah umum untuk transaksi yang dilaku-kan secara deposit oleh suatu customer
TrDeposit Satu consignees dapat mem-punyai banyak Trdeposit. Setiap Trdeposit dihasilkan apabila suatu account mela-kukan transaksi.
107 Invoice Istilah umum yang
menggambarkan kwi-tansi yang terbentuk da-ri pembayaran untuk layanan kargo.
Invoices Setiap Invoice yang terbentuk memiliki satu AWB yang dapat dibuat oleh satu orang pengguna sistem. Setiap invoice dapat mempunyai satu CCB-Invoice. Setiap Invoice yang tercipta hanya dapat menggunakan satu Currency dan Setiap Invoice mempuyai satu account. PayMethods Istilah umum untuk
menjelaskan cara pem-bayaran yang telah ditetapkan sebelumnya
Pay Method Setiap invoice yang tercipta hanya menggunakan satu cara pembayaran.
CCBInvoice Istilah umum untuk menjelaskan kwitansi yang terbentuk dari pembayaran layanan kargo diluar jasa yang dihasilkan oleh PT. JAS, seperti pengang-kutan barang dalam jumlah besar.
CCBInvoices Setiap CCBInvoice yang tercipta terdapat satu Invoice dan satu AWB yang memiliki satu commodities.
CurrEx-change Istilah umum untuk menjelaskan rekaman history nilai tukar mata uang asing terhadap IDR.
CurrExchange History
Setiap Currency Exchange dapat menampilkan satu currency terhadap currency lainnya.
Currency Istilah umum untuk deskripsi semua mata uang yang digunakan pada layanan kargo Soekarno-Hatta.
Currency Satu currency dapat diguna-kan oleh lebih dari satu service dan memiliki lebih dari satu Currency Exchange.
108 Services Istilah umum jasa-jasa
yang dihasilkan oleh perusahaan dan dikenai biaya.
Services Setiap services mempunyai satu service categories dan
dapat memiliki lebih dari satu invoice. Satu AWB dapat memiliki lebih dari satu service.
ServiceCategor ies
Istilah umum yang menjelaskan jasa-jasa yang dikenai biaya.
ServiceCategor ies
Satu service categories dapat memiliki lebih dari satu service.
Users Istilah umum untuk pengguna yang me-nggunakan aplikasi pa-da waktu tertentu.
Users Setiap user dapat mempunyai lebih dari satu peran (role) dan dapat melakukan akses lebih dari satu menu. Setiap invoice dapat dibuat oleh satu user.
Employees Istilah umum untuk data seluruh pekerja kargo pada Bandara SoekarNo-Hatta.
Employees Satu employees merupakan satu user jika sedang dalam menggunakan aplikasi.
TrShift Istilah umum yang menggambarkan data pergantian shift staff
TrShift Setiap Trshift dimiliki oleh satu user dan dapat menghasilkan lebih dari satu laporan mengenai traksaksi yang terjadi pada jangka waktu shift tersebut.
Menu Istilah umum untuk menu-menu aplikasi.
Menu Setiap menu terpilih dapat diakses oleh satu user dan dapat dipilih menjadi menu favorite untuk menu yang paling sering diakses.
Roles Istilah umum untuk hak-hak yang dimiliki users.
Roles Setiap Role dapat dimiliki oleh lebih dari satu user. Dan setiap role dapat memiliki
109 lebih dari satu menu.
Tabel 4.1 Tabel Identifikasi Tipe Entitas
4.1.1.2 Identifikasi Tipe Relationship
Tahap ini bertujuan untuk menentukan hubungan-hubungan yang penting diantara berbagai entitas yang telah didefinisikan. Langkah-langkah utama dalam identifikasi tipe relasional adalah sebagai berikut:
110 a. Model Konseptual ERD Tanpa Primary Key
111 b. Menentukan batasan multiplicity dari tipe relasional
Entity Name Multiplicity Relationship Entity name Multiplicity
Consignees 1..1 AsConsignee AWB 1..*
Consignees 1..1 AsAgent AWB 1..*
Consignees 1..1 Has Accounts 0..*
Airports 1..1 ListedIn AWB 1..*
AWB 1..1 Has Shipment 1..*
Flights 1..1 ListedIn Shipment 1..*
Airlines 1..1 Has Flights 1..*
Airlines 1..1 Has ULD 1..*
Commodities 1..1 ListedIn AWB 1..*
Users 1..1 Make AWB 0..*
AWB 1..1 Has Shipment 1..*
ULD 1..* Load Shipment 1..*
AWB 1..1 Has Documents 0..*
PayMethodss 1..1 UsedBy Invoices 1..*
Services 1..* ListedIn Invoices 1..*
ServiceCategories 1..1 Has Services 1..*
Shipment 1..* PaidBy Invoice 1..*
Currency 1..1 UsedBy Service 1..*
Currency 1..1 Has CurrExchange 1..*
Accounts 0..1 Pay Invoices 1..*
Accounts 1..1 Has TrDeposit 1..*
Users 1..1 Make TrDeposit 0..*
Employees 1..1 Has Users 0..1
Users 1..1 Has TrShift 1..*
Users 1..* Has Roles 1..*
Users 1..* HasFavorite Menus 1..*
Roles 1..* HasAccessFor Menus 1..*
Menus 1..1 ParenstOf Menus 1..*
112 4.1.1.3 Identifikasi Atribut, Tipe, dan Domain Entitas
Tahap ini bertujuan untuk menghubungkan atribut dengan entitas atau tipe relasi yang sesuai. Dari dokumen-dokumen yang didapatkan dari sistem yang berjalan, dapat diperoleh atribut-atribut untuk masing-masing entitas yang telah didefinisikan diatas
Entity Name Attribute Description Data type
and length Nulls
Multi Valued Consignees consigneeID ID consignee
yang secara unik mengidentifikasi setiap consignee (shipper, agent, atau penerima ba-rang)
Numeric (presisi 7)
No No
consigneeName Nama consignee 50 variables character No No consigneeTaxNo Nomor NPWP perusahaan pe-langgan (consignee) 15 variables character Yes No consigneeAddres s Alamat perusaha-an consignee 100 variables character No No consigneePostalCod e
Kode pos perusa-haan consignee
5 variables character
YES No
consigneeCity Kota perusahaan consignee
50 variables character
No No
consigneeState Provinsi perusa-haan consignee
20 variables character
113 consignee-Country Negara perusaha-an consignee (Default value = ’ Indonesia’) 50 variables character No No
additionalInfo Keterangan tam-bahan dari con-signee yang ber-sangkutan
100 variables character
Yes No
phoneNo Nomor telepon
consignee terma-suk kode area, kode negara, dan extension
25 variables character
No Yes
Airport airportCode Kode bandara 3 character No No
airportName Nama bandara 50 variables
character
No No
airportAddress Alamat bandara 50 variables character
Yes No
airportCity Kota bandara 50 variables character
Yes No
airportCountry Negara letak ban-dara
50 variables character
Yes No
Commodities commodityID Kode dari jenis barang
(commodity)
Numeric (presisi 5)
No No
NOG Nature Of Goods 50 variables
character
No No
initialFunc Inisial Jenis Ba-rang
5 variables character
Yes No
description Keterangan 150 variables character
114
Flights flightNo Nomor
pener-bangan
8 variables character
No No
additionalInfo Keterangan tam-bahan
150 variables character
Yes No
Airlines airlinePrefix Nomor kode awal maskapai yang dipakai pada AWB
3 character No No
initialFunc Inisial maskapai
pesawat
5 variables character
Yes No
airlineName Nama maskapai pesawat 50 variables character No No airlineTaxNumbe r Nomor NPWP perusahaan consignee 15 variables character Yes No
airlineAddress Alamat perusaha-an consignee
100 variables character
No No
additionalInfo Keterangan Tam-bahan
150 variables character
Yes No
airlineCountry Negara Maskapai 30 variables character
No No
AWB AWBNo Nomor AWB 13 variables
character
No No
houseNo Nomor house
(Default value = ’0’)
5 variables character
No No
type Tipe AWB 4 character No No
additional Info Keterangan tam-bahan
150 variables character
Yes No
createdTime Waktu pembuat-an Date and Time (mm/dd/yyyy hh24:mi:ss) No No
115 Shipment shipmentSeq Urutan Shipment Numeric
(presisi 4)
No No
flightDate Tanggal
pener-bangan
Date (mm/dd /yyyy)
Yes No
calcStartDate Tanggal mulai pengiriman Date and Time (mm/dd/yyyy hh24:mi:ss) No No
weight Berat satuan tem-pat
Numeric
(presisi 9 skala 2)
No No
volume Volume satuan
tempat
Numeric
(presisi 9 skala 2)
No No
pieces Jumlah satuan
tempat
Numeric (presisi 7)
No No
description Keterangan 150 variables character
Yes No
Users employeeID Kode User 10 variable
characters
No No
password Password user 15 variables
character
No No
hint Kata pembantu
jika user lupa password
50 variables character
Yes No
maxForms Form maksimal
yang dapat di-akses
Numeric (presisi 3)
No No
changePassTime Waktu melaku-kan perubahan password Date and Time (mm/dd/yyyy hh24:mi:ss) Yes No
116 createdTime Waktu
pembuat-an data Date and Time (mm/dd/yyyy hh24:mi:ss) No No
TrShift trShiftNo Nomor hitory
shift
8 character No No
startTime Waktu mulai shift Date and
Time
(mm/dd/yyyy hh24:mi:ss)
No No
endTime Waktu akhir shift Date and Time
(mm/dd/yyyy hh24:mi:ss)
No No
Roles roleID Kode Role Numeric
(presisi 3)
No No
roleName Nama Role 20 variables
character
No No
description Keterangan role 150 variables character
Yes No
initialFunc Inisial dari role 5 variables character
No No
Menu menuID Kode menu Numeric
(presisi 3)
No No
menuName Nama Menu 40 variables
character
No No
fileName Nama file 6 character No No
version Versi 3 character No No
description Keterangan 150 variables character
Yes No
menuType Tipe menu 1 character (M atau F)
117 Employees employeeID Kode karyawan 10 variables
characters
No No
employeeName Nama karyawan 50 variables
character No No employeeTaxNo Nomor NPWP karyawan 15 variables character Yes No
employeeAddress Alamat Karya-wan
100 variables character
No No
employeePhone Nomor telepon karyawan
20 variables character
No YES
employeeEmail Email karyawan 30 variables character
Yes No
salary Gaji karyawan Numeric
(presisi 15, skala 2)
No YES
hireDate Tanggal Masuk Date and Time (mm/dd /yyyy)
Yes No
additionalInfo Keterangan tam-bahan Karyawan
150 variables character
Yes No
Documents DOCNo Nomor dokumen 10 character No No
additionalInfo Ketarangan
tam-bahan
150 variables character
Yes No
type Tipe Dokumen 3 character No No
createdTime Waktu pembua-tan Date and Time (mm/dd/yyyy hh24:mi:ss) No No
ULD ULDNo Kode ULD 10 character No No
ULDType Tipe ULD 35 variables character
Yes No
description Keterangan ULD 150 variables character
118 Services serviceID Kode service Numeric
(presisi 3)
No No
serviceName Nama service 35 variables
character
No No
module Modul 4 variables character
No No
UOM Unit of Measure 10 variables character
No No
tariff Tarif service Numeric
(presisi 15, skala 2)
No No
tariffDesc Deskripsi Tarif 150 variables character
Yes No
includeTax Flag (Y/T) pe-nanda apakah bi-aya service ter-masuk pajak atau tidak
1 character (Y atau T)
No No
additionalInfo Keterangan tam-bahan
150 variables character
Yes No
defaultServ Flag (Y/T) pe-nanda apakah ter-masuk service default atau tidak
1 character (Y atau T)
No No
ServiceCategories categoryCode Kode kategori service
Numeric (presisi 3)
No No
categoryName Nama kategori
service
30 variables character
No No
description Keterangan kate-gori service
150 variables character
Yes No
Accounts accountID Kode account 10 variables character
119
accountName Nama account 50 variables
character
No No
balance Balance Numeric
(presisi 15, skala 2)
No No
description Keterangan 150 variables character
Yes No
TrDeposit trnNo Nomor transaksi 30 variables character
No No
depositTime Waktu
pembu-atan TrDeposit (transaksi
deposit)
date and time (mm/dd/yy hh24:mi:ss)
No No
value Nilai transaksi Numeric
(presisi 15, skala 2)
No No
description Keterangan tran-saksi
150 variables character
Yes No
Currency currCode Kode currency 3 character No No
currName Nama currency 30 variables
character No No description Keterangan Currency 150 variables character Yes No
CurrExchange currExNo Nomor Currency Exchange
9 character No No
currValue Nilai currency Numeric
(presisi 9, skala 2)
No No
startDate Tanggal mulai
currency
Date and Time (mm/dd /yyyy)
120
endDate Tanggal akhir
currency
Date and Time (mm/dd /yyyy)
No No
Invoices invoiceNo Nomor invoice 10 character No No
status Status dari
invoice
5 variables character
No No
taxRate Pajak Numeric
(presisi 9, skala 2)
Yes No
stampDuty Materai Numeric
(presisi 9, skala 2) Yes No allInAmount Biaya keseluruhan Numeric (presisi 15, skala 2) Yes No truckingCharge Biaya pengankutan Numeric (presisi 9, skala 2) Yes No
additionalInfo Keterangan tam-bahan
150 variables character
Yes No
payDate Tanggal bayar Date and Time
(mm/dd/yyyy hh24:mi:ss)
No No
createdTime Tanggal pembu-atan invoice Date and Time (mm/dd/yyyy hh24:mi:ss) No No
CCBInvoices CCBdue Biaya Handling Numeric
(presisi 9, skala 2)
121
CCBStampDuty Materai CCB Numeric
(presisi 9, skala 2)
Yes No
CCBTax Pajak CCB Numeric
(presisi 9, skala 2)
Yes No
PayMethods payMethodCode Kode Cara Bayar 3 character No No
description Keterangan 150 variables
character Yes No additionalInfo Keterangan tambahan 150 variables character Yes No
Tabel 4.3 Tabel Identifikasi Atribut pada Tiap Entitas
4.1.1.4 Mentukan Domain Atribut
Tahap ini bertujuan untuk menentukan domain dari atribut yang ada pada model data konseptual yang telah dibuat.
Entity Name Attribute Domain
Consignees consigneeID Berupa angka dengan maksimal 7 digit dengan jangkauan (1-9999999)
consigneeName Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
consigneeTaxNo Berupa 15 variabel karakter, termasuk titik, dengan format x.xxx.xxx.x.xxx , dimana x merupakan angka [0-9]
consigneeAddress Berupa variabel karakter dengan maksimal 100 karakter, termasuk spasi
consigneePostalCode Berupa angka 5 digit
consigneeCity Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
122 consigneeState Berupa variabel karakter dengan maksimal 20
karakter, termasuk spasi
consigneeCountry Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
additionalInfo Berupa variabel karakter dengan maksimal 100 karakter, termasuk spasi
phoneNo Berupa variabel angka dengan jumlah maksimal 25 digit
Airport airportCode Berupa 3 karakter huruf
airportName Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
airportAddress Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
airportCity Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
airportCountry Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
Commodities commodityID Berupa angka dengan maksimal 5 digit dengan jangkauan (1-99999)
NOG Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
initialFunct Berupa variabel karakter dengan maksimal 5 karakter, termasuk spasi
description Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
Flights flightNo Berupa variable karakter dengan maksimal 8 karakter, dimana 3 karakter pertama berupa huruf dan 4 karakter akhir berupa angka [0-9] additionalInfo Berupa variabel karakter dengan maksimal
150 karakter, termasuk spasi
Airlines airlinePrefix Berupa karakter angka tiga digit dengan format xxx, dimana x merupakan angka [0-9]
123 initialFunc Berupa variabel karakter dengan maksimal 5
karakter
airlineName Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
airlineTaxNumber Berupa 15 variabel karakter, termasuk titik, dengan format x.xxx.xxx.x.xxx , dimana x merupakan angka [0-9]
airlineAddress Berupa variabel karakter dengan maksimal 100 karakter, termasuk spasi
additionalInfo Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
airlineCountry Berupa variabel karakter dengan maksimal 30 karakter, termasuk spasi
AWB AWBNo Berupa variabel karakter dengan maksimal 13 karakter, termasuk spasi, dengan format ’aaa bbbb cccc’ (untuk AWB impor dan ekspor) atau ’aaaa bbb’ (untuk domestik), dimana a, b, dan c merupakan angka [0-9]
houseNo Berupa variabel karakter dengan jumlah
maksimal 5 digit, dimana semua karakter harus berupa angka
type Berupa 3 karakter (IMP untuk AWB impor, EXP untuk AWB ekspor, DOI untuk domestik incoming, dan DOO untuk domestik outgoing. additional Info Berupa variabel karakter dengan maksimal
150 karakter, termasuk spasi
createdTime Berupa tanggal dan waktu dengan format mm/dd/yyyy hh:mm:ss
Shipment shipmentSeq Berupa angka bulat dengan jangkauan (1-999) flightDate Berupa tanggal dengan format mm/dd/yyyy
calcStartDate Berupa tanggal dan waktu dengan format mm/dd/yyyy hh24:mi:ss
124 weight Berupa angka desimal dengan maksimum
presisi 9 dan jumlah desimal 2
volume Berupa angka desimal dengan maksimum presisi 9 dan jumlah desimal 2
pieces Berupa angka bulat dengan maksimum presisi 7
description Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
Users employeeID Berupa karakter angka dengan maksimal 10 digit
password Berupa variabel karakter dengan maksimal 15 karakter
hint Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
maxForms Berupa angka bulat dengan maksimum presisi 3
changePassTime Berupa tanggal dan waktu dengan format mm/dd/yyyy hh24:mi:ss
createdTime Berupa tanggal dan waktu dengan format mm/dd/yyyy hh24:mi:ss
TrShift trShiftNo Berupa 8 karakter dengan format xxxxxxx, dimana x merupakan angka [0-9], contoh: 100000001
startTime Berupa tanggal dan waktu dengan format mm/dd/yyyy hh24:mi:ss
endTime Berupa tanggal dan waktu dengan format mm/dd/yyyy hh24:mi:ss
Roles roleID Berupa angka dengan maksimal 3 digit
dengan jangkauan (1-999)
roleName Berupa variabel karakter dengan maksimal 20 karakter, termasuk spasi
description Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
125 initialFunc Berupa variabel karakter dengan maksimal 5
karakter
Menu menuID Berupa angka dengan maksimal 3 digit
dengan jangkauan (1-999)
menuName Berupa variabel karakter dengan maksimal 40 karakter, termasuk spasi
fileName Berupa 6 karakter dengan format xxyyyy, dimana xx merupakan inisial modul, dan yyyy berupa angka [0-9]
version Berupa angka dengan jumlah maksimal 4 digit dengan format ’a.a’ dimana a berupa angka [0-9], contoh: 1.0
description Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
menuType Berupa sebuah karakter ’F’ untuk tipe form, dan karakter ’M’ untuk tipe menu
Employees employeeID Berupa karakter angka dengan maksimal 10 digit
employeeName Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
employeeTaxNo Berupa 15 karakter, termasuk titik, dengan format x.xxx.xxx.x.xxx , dimana x merupakan angka
employeeAddress Berupa variabel karakter dengan maksimal 100 karakter, termasuk spasi
employeePhone Berupa variabel angka dengan jumlah maksimal 25 digit
employeeEmail Berupa variabel karakter dengan maksimal 30 karakter
salary Berupa angka desimal dengan maksimum presisi 15 dan jumlah desimal 2
126 additionalInfo Berupa variabel karakter dengan maksimal
150 karakter, termasuk spasi
Documents DOCNo Berupa 10 karakter dengan jumlah karakter 10 digit, dengan format axxxxxxxxx, dimana a berupa karakter abjad dan x berupa angka [0-9]
additionalInfo Berupa 3 karakter (NOA untuk dokumen Notice of Arrival, DDO untuk dokumen Document Delivery Order, dan CDO untuk dokumen Cargo Delivery Order)
type Berupa variabel karakter dengan maksimal 3 karakter
createdTime Berupa tanggal dengan format dd/mm/yyyy hh24:mi:ss
ULD ULDNo Berupa 10 karakter dengan format
aaaxxxxxaa, dimana a berupa karakter abjad dan x berupa angka, contoh: ABC12345XY ULDType Berupa variabel karakter dengan maksimal 35
karakter, termasuk spasi
description Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
Services serviceID Berupa angka dengan maksimal 3 digit dengan jangkauan (1-999)
serviceName Berupa variabel karakter dengan maksimal 35 karakter, termasuk spasi
module Berupa variabel karakter dengan maksimal 4 karakter
UOM Berupa variabel karakter dengan maksimal 10 karakter, termasuk spasi
tariff Berupa angka desimal dengan maksimum presisi 15 dan jumlah desimal 2
tariffDesc Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
127 IncludeTax Berupa sebuah karakter ’Y’ untuk ya, dan
karakter ’T’ untuk tidak
additionalInfo Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
defaultServ Berupa sebuah karakter ’Y’ untuk ya, dan karakter ’T’ untuk tidak
ServiceCategories categoryCode Berupa angka dengan maksimal 3 digit dengan jangkauan (1-999)
categoryName Berupa variabel karakter dengan maksimal 30 karakter, termasuk spasi
description Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
Accounts accountID Berupa variabel karakter dengan maksimal 10 karakter
accountName Berupa variabel karakter dengan maksimal 50 karakter, termasuk spasi
balance Berupa angka desimal dengan maksimum presisi 15 dan jumlah desimal 2
description Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
TrDeposit trnNo Berupa 8 karakter dengan format xxxxxxx, dimana x merupakan angka [0-9], contoh: 100000001
depositDate Berupa tanggal dan waktu dengan format dd/mm/yyyy hh24:mi:ss
value Berupa angka desimal dengan maksimum presisi 15 dan jumlah desimal 2
description Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
Currency currCode Berupa 3 karakter huruf
currName Berupa variabel karakter dengan maksimal 30 karakter, termasuk spasi
128 description Berupa variabel karakter dengan maksimal
150 karakter, termasuk spasi
CurrExchange currExNo Berupa 9 karakter dengan format xxxxxxx, dimana x merupakan angka [0-9]
currValue Berupa angka desimal dengan maksimum presisi 15 dan jumlah desimal 2
startDate Berupa tanggal dengan format mm/dd/yyyy endDate Berupa tanggal dengan format mm/dd/yyyy Invoices invoiceNo Berupa karakter dengan jumlah karakter 10
digit, dengan format axxxxxxxxx, dimana a berupa karakter abjad dan x berupa angka [0-9], contoh: E0000000978
status Berupa variabel karakter dengan maksimal 5 karakter
taxRate Berupa angka desimal dengan maksimum presisi 9 dan jumlah desimal 2
stampDuty Berupa angka desimal dengan maksimum presisi 9 dan jumlah desimal 2
allInAmount Berupa angka desimal dengan maksimum presisi 15 dan jumlah desimal 2
truckingCharge Berupa angka desimal dengan maksimum presisi 9 dan jumlah desimal 2
additionalInfo Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
payDate Berupa tanggal dengan format mm/dd/yyyy hh24:mi:ss
createdTime Berupa tanggal dan waktu dengan format mm/dd/yyyy hh24:mi:ss
CCBInvoices CCBdue Berupa angka desimal dengan maksimum presisi 9 dan jumlah desimal 2
CCBStampDuty Berupa angka desimal dengan maksimum presisi 9 dan jumlah desimal 2
129 CCBTax Berupa angka desimal dengan maksimum
presisi 9 dan jumlah desimal 2 PayMethods payMethodCode Berupa 3 karakter huruf
description Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
additionalInfo Berupa variabel karakter dengan maksimal 150 karakter, termasuk spasi
Tabel 4.4 Tabel Identifikasi Domain dari Tiap Attribut
4.1.1.5 Identifikasi Candidate Key dan Primary Key
Tahapan ini bertujuan untuk mengidentifikasi candidate key untuk masing-masing tipe entitas. Apabila terdapat lebih dari satu candidate key maka akan dipilih salah satunya untuk menjadi primary key.
Dari entitas-entitas yang telah diidentifikasi pada tahap sebelumnya, didapatkan candidate key dan primary key masing-masing entitas yang tercantum dalam tabel 4.5.
Entity Name Candidate Key Primary Key
Consignees consigneeID consigneeID
AWB AWBNo, houseNo AWBNo, houseNo
Shipment - -
ULD ULDNo ULDNo
Documents DOCNo DOCNo
Airports airportCode airportCode Airlines airlinePrefix airlinePrefix
130
Flights flightNo flightNo
Commodities commodityID commodityID
Accounts accountID accountID
TrDeposit trnNo trnNo
PayMethods payMethodCode payMethodCode
Invoices invoiceNo invoiceNo
CCBInvoices - -
CurrExchange currExNo currExNo
Currency currCode currCode
Services serviceID serviceID
ServicesCategories serviceCategoryID serviceCategoryID
Users - -
Employees employeeID employeeID
TrShift trShiftNo trShiftNo
Menu menuID menuID
Roles roleID roleID
131
132 4.1.1.6 Pengecekan Redundansi pada Model
Pada tahap ini dilakukan pemeriksaaan redundansi baik pada relasi maupun entitas pada model konseptual yang telah dirancang untuk memenuhi kebutuhan dan menghilangkan redundansi tersebut.
a. Memeriksa kembali hubungan one-to-one
Gambar 4.3 Hubungan one-to-one Employee dan Users
Tertunjuk pada gambar 4.4, entitas Employees dan Users tidak redundan dan keduanya tidak dapat digabungkan menjadi satu entitas, karena tidak semua Employees memiliki Users.
Gambar 4.4 Hubungan one-to-one Invoice dan CCBInvoice
Tertunjuk pada gambar, entitas Invoice dan CCBInvoice tidak redundan dan keduanya tidak dapat digabungkan menjadi satu entitas, karena tidak semua Invoice memiliki CCBInvoice.
133 b. Menghilangkan hubungan/relasi redundant
Tidak ada hubungan yang redundant (berlebih).
4.1.1.7 Validasi Model Konseptual dengan Transaksi
Tahap ini bertujuan untuk memastikan bahwa model data konseptual yang telah dirancang mendukung seluruh transaksi yang perlu dilakukan. Pendekatan yang dilakukan adalah dengan mendeskripsikan transaksi penting yang harus didukung basis data yang baru serta mencamtumkan jalur transaksi pada model data konseptual yang telah dirancang.
Transaksi-transaksi yang terjadi pada layanan kargo bandara Soekarno-Hatta pada PT. JAS adalah sebagai berikut:
a. Pendataan AWB (cargo outgoing dan incoming) b. Pendataan Manifest (cargo outgoing dan incoming) c. Pembuatan laporan manifest (cargo outgoing)
d. Pembuatan dan pendataan Notice of Arrival (cargo incoming)
e. Pembuatan dan pendataan Document Delivery Order (cargo incoming) f. Pembuatan dan pendataan Cargo Delivery Order (cargo incoming) g. Pembuatan dan pendataan kwitansi
h. Pembuatan dan pendataan kwitansi tambah bayar i. Pembuatan dan pendataan kwitansi CCB
j. Pembuatan faktur pajak untuk pelanggan k. Pendataan pergantian shift staff kargo
l. Pendataan nilai tukar mata uang asing terhadap IDR m. Pembuatan laporan rekapitulasi harian
134 n. Pembuatan laporan cargo charges
o. Pemberian hak akses tertentu pada pengguna aplikasi sesuai dengan pekerjaannya
p. Menambah saldo deposit
135
136 4.1.2 Perancangan Basis Data Logikal
Pada tahap ini, model data konseptual pada tahapan sebelumnya akan dipetakan menjadi suatu model data logikal yang tidak bergantung pada DBMS (Database Management System) tertentu..
4.1.2.1 Membentuk Relasi untuk Model Data Logikal
Pada tahap ini dilakukan pembentukan relasi untuk model data logikal berdasarkan pada relasi yang sudah dibentuk pada model data konseptual sebelumnya.
1. Relasi dua arah one-to-one (1:1)
Untuk relasi (1:1) dengan mandatory pada Employees, masukkan EmployeeID ke entitas Users sehingga membentuk relasi Has
Employees (employeeID, employeeName, employeeTaxNo, employeeAddress, employeePhone, employeeEmail, salary, hireDate, additionalInfo)
Users (employeeID, password, hint, maxForm, changePassTime,
createdTime )
PrimaryKey employeeID PrimaryKey employeeID
ForeignKey employeeID
Untuk relasi (1:1) dengan mandatory pada Invoice, masukkan InvoiceNo ke entitas CCBInvoice sehingga membentuk relasi Has
137 Invoice (invoiceNo, status, stampDuty,
taxRate, allInAmount, truckingCharge, additionalInfo, payDate, createdTime)
CCBInvoices (invoiceNo, CCBDue, CCBStampDuty, CCBTax)
PrimaryKey invoiceNo PrimaryKey invoiceNo
ForeignKey invoiceNo references
Invoice (invoiceNo)
2. Relasi dua arah one-to-many (1:*)
Masukkan consigneeID ke entitas AWB sehingga membentuk relasi AsConsignee (1:*)
Consignees (consigneeID, consigneeName, consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo)
AWB (AWBNo, houseNo,
consigneeID, additionalInfo, type, createdTime)
PrimaryKey consigneeID PrimaryKey AWBNo, houseNO
ForeignKey consigneeID references
Consignees (consigneeID)
138 Consignees (consigneeID, consigneeName,
consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo)
AWB (AWBNo, houseNo, agentID, consigneeID, additionalInfo, type, createdTime)
PrimaryKey consigneeID PrimaryKey AWBNo, houseNO
ForeignKey agentID references
Consignees (consigneeID)
ForeignKey consigneeID references
Consignees (consigneeID)
Masukkan airportCode ke entitas AWB sehingga membentuk relasi ListedIn (1:*)
Airports (airportCode, airportName, airportAddress, airportCity, airportCountry)
AWB (AWBNo, houseNo,
airportCode, agentID, consigneeID, additionalInfo, type, createdTime)
PrimaryKey airportCode PrimaryKey AWBNo, HouseNo
ForeignKey airportCode references
Airports (airportCode)
ForeignKey agentID references
Consignees (consigneeID)
ForeignKey consigneeID references
139
Masukkan commodityID ke entitas AWB sehingga membentuk relasi ListedIn (1:*)
Commodity (commodityID, NOG, initialFunc, description)
AWB (AWBNo, houseNo, commodityID, airportCode, agentID, consigneeID,
additionalInfo, type, createdTime)
PrimaryKey commodityID PrimaryKey AWBNo, houseNo
ForeignKey commodityID
references Commodities (commodityID)
ForeignKey airportCode references
Airports (airportCode)
ForeignKey agentID references
Consignees (consigneeID)
ForeignKey consigneeID references
Consignees (consigneeID)
Masukkan employeeID ke entitas AWB sehingga membentuk relasi Make (1:*)
Users (employeeID, password, hint, maxForm, changePassTime, createdTime)
AWB (AWBNo, houseNo, employeeID, commodityID,
140 additionalInfo, type, createdTime)
PrimaryKey employeeID PrimaryKey AWBNo, houseNo
ForeignKey employeeID references
users (employeeID)
ForeignKey commodityID
references Commodities (commodityID)
ForeignKey airportCode references
Airports (airportCode)
ForeignKey agentID references
Consignees (consigneeID)
ForeignKey consigneeID references
Consignees (consigneeID)
Masukkan AWBNo, houseNo ke entitas Shipment sehingga membentuk relasi Has (1:*)
AWB (AWBNo, houseNo, employeeID, commodityID, airportCode, agentID, consigneeID, additionalInfo, type, createdTime)
Shipment (shipmentSeq, AWBNo, houseNo, calcStartDate, weight, volume, pieces, flightDate, description)
PrimaryKey AWBNo, houseNo PrimaryKey shipmentSeq, AWBNo,
141 ForeignKey employeeID references users
(employeeID)
ForeignKey commodityID references
Commodities (commodityID)
ForeignKey airportCode references Airports
(airportCode)
ForeignKey agentID references Consignees
(consigneeID)
ForeignKey consigneeID references
Consignees (consigneeID)
ForeignKey AWBNo, houseNo
references AWB (AWBNo, houseNo)
Masukkan AWBNo, houseNo ke entitas Documents sehingga membentuk relasi Has (0:*)
AWB (AWBNo, houseNo, employeeID, commodityID, airportCode, agentID, consigneeID, additionalInfo, type, createdTime)
Documents (DOCNo, AWBNo, houseNo, additionalInfo, type, createdTime)
PrimaryKey AWBNo, houseNo PrimaryKey DOCNo
ForeignKey employeeID references users
(employeeID)
ForeignKey commodityID references
Commodities (commodityID)
ForeignKey AWBNo, houseNo
references AWB (AWBNo, houseNo)
142 ForeignKey airportCode references Airports
(airportCode)
ForeignKey agentID references Consignees
(consigneeID)
ForeignKey consigneeID references
Consignees (consigneeID)
Masukkan airlinePrefix ke entitas Flights sehingga membentuk relasi Has (1:*)
Airlines (airlinePrefix, airlineName, initialFunc, airlineTaxNo, airlineAddress,
airlineCountry, additionalInfo)
Flights (flightNo, airlinePrefix, additionalInfo)
PrimaryKey airlinePrefix PrimaryKey flightNo
ForeignKey airlinePrefix references
Airlines (airlinePrefix)
Masukkan airlinePrefix ke entitas ULD sehingga membentuk relasi Has (1:*)
Airlines (airlinePrefix, airlineName, initialFunc, airlineTaxNo, airlineAddress,
airlineCountry, additionalInfo)
ULD (ULDNo, airlinePrefix, ULDType, description)
PrimaryKey airlinePrefix PrimaryKey flightNo
143 Airlines (airlinePrefix)
Masukkan flightsNo ke entitas Shipment sehingga membentuk relasi ListedIn (1:*)
Flights (flightNo, airlinePrefix, additionalInfo)
Shipment (shipmentSeq, AWBNo, houseNo, flightNo, calcStartDate, weight, volume, pieces, flightDate, description)
PrimaryKey flightNo PrimaryKey shipmentSeq, AWBNo,
houseNo
ForeignKey flightNo references
flights (flightNo)
ForeignKey AWBNo, houseNo
references AWB (AWBNo, houseNo)
Masukkan employeeID ke entitas trShift sehingga membentuk relasi Has (1:*)
Users (employeeID, password, hint
changePassTime, , maxForm, createdTime)
TrShift (trShiftNo, employeeID, startTime, endTime)
PrimaryKey employeeID PrimaryKey trShiftNo
144 references Employees (employeeID) Users (employeeID)
Masukkan EmployeeID ke entitas Documents sehingga membentuk relasi Make (0:*)
Users (employeeID, password, hint,changePassTime, maxForm, createdTime)
Documents (DOCNo, employeeID, AWBNo, houseNo, additionalInfo, type,createdTime)
PrimaryKey employeeID PrimaryKey DOCNo
ForeignKey employeeID references
Employees (employeeID)
ForeignKey AWBNo, houseNo
references AWB (AWBNo, houseNo)
Masukkan employeeID ke entitas Invoice sehingga membentuk relasi Make (0:*)
Users (employeeID, password, hint,
maxForm, changePassTime, createdTime)
Invoice (invoiceNo, employeeID,
status, stampDuty, taxRate,
allInAmount, truckingCharge,
additionalInfo, discount,
discountDescription, payDate,
CreatedTime)
PrimaryKey employeeID PrimaryKey invoiceNo
145
(employeeID) Users (employeeID)
Masukkan payMethodCode ke entitas Invoice sehingga membentuk relasi UsedBy (1:*)
PayMethods (payMethodCode, description, additionalInfo)
Invoice (invoiceNo,
payMethodCode, employeeID, status, stampDuty, taxRate, allInAmount, truckingCharge, additionalInfo discount, discountDescription, payDate, createdTime)
PrimaryKey employeeID PrimaryKey invoiceNo
ForeignKey payMethodCode
references payMethods (payMethodCode)
ForeignKey employeeID references
Users (employeeID)
Masukkan accountID ke entitas Invoices sehingga membentuk relasi Pay (1:*)
Accounts (accountID, consigneeID, accountName, balance, description)
Invoice (invoiceNo, accountID, payMethodCode, employeeID,
146 status, stampDuty, taxRate,
allInAmount, truckingCharge, additionalInfo, discount, discountDescription, payDate, createdTime)
PrimaryKey accountID PrimaryKey invoiceNo
ForeignKey consigneeID references
Consignees (consigneeID)
ForeignKey accountID references
Accounts (accountID)
ForeignKey payMethodCode
references PayMethods
(payMethodCode)
ForeignKey employeeID references
Users (employeeID)
Masukkan accountID ke entitas TrDeposit sehingga membentuk relasi Has (1:*)
Accounts (accountID, consigneeID, accountName, balance, description)
TrDeposit (trnNo, accountID, value, depositTime, description)
PrimaryKey accountID PrimaryKey trnNo
ForeignKey consigneeID references
Consignees (consigneeID)
ForeignKey accountID references
Accounts (accountID)
147
Currency (currCode, currName, value, description)
Service (serviceID, currCode, serviceName, module, UOM, tariff, tariffDesc, includeTabx,
additionalInfo)
PrimaryKey currCode PrimaryKey serviceID
ForeignKey currCode references
Currency (currCode) ForeignKey categoryCode
references ServiceCategories
(categoryCode)
Masukkan currCode ke entitas CurrExchange sehingga membentuk relasi Has (1:*)
Currency (currCode, currName, description) CurrExchange (currExNo, currCode, currValue, startDate, endDate)
PrimaryKey currCode PrimaryKey currExNo
ForeignKey currCode references
Currency (currCode)
148 ServiceCategories (categoryCode,
categoryName, description)
Services (serviceID, categoryCode, serviceName, module, UOM, tariff, tariffDesc,iIncludeTax,
additionalInfo)
PrimaryKey categoryCode PrimaryKey serviceID
ForeignKey categoryCode
references ServiceCategories
(categoryCode)
ForeignKey currCode references
Currency (currCode)
3. Relasi rekursif one-to-one (1:1)
Pada diagram model data konseptual yang telah dirancang tidak ditemukan relasi yang memiliki hubungan rekursif one-to-one (1:1).
4. Relasi rekursif one-to-many (1:*)
Memetakan employeeID ke supervisorID pada entitas Employees sehingga membentuk relasi Rekursif Supervises (0:*)
Employees (employeeID, supervisorID, employeeName, employeeTaxNo, employeeAddress, employeePhone,
Employees (employeeID, supervisorID, employeeName, employeeTaxNo, employeeAddress,
149 employeeEmail, salary, hireDate,
additionalInfo)
employeePhone, employeeEmail, salary, hireDate, additionalInfo)
PrimaryKey employeeID PrimaryKey employeeID
ForeignKey supervisorID references
Employees (employeeID)
Memetakan menuID ke mainMenuID pada entitas Menus sehingga membentuk relasi Rekursif ParentOf (0:*)
Menu (menuID, mainMenuID menuName, fileName,version, description, menuType)
Menu (menuID, mainMenuID menuName,fileName, version, description, menuType)
PrimaryKey menuID PrimaryKey menuID
ForeignKey mainMenuID
references Menu (menuID)
5. Relasi dua arah many-to-many (*:*) Users (employeeID, password, hint,
maxForm, changePassTime, createdTime)
Roles (roleID,roleName,
description, createdTime, initalFunc)
PrimaryKey employeeID PrimaryKey roleID
150 Employees (employeeID)
UserRole (employeeID, roleID)
PrimaryKey employeeID, roleID
ForeignKey employeeID references Users (employeeID)
ForeignKey RoleID references Roles (roleID)
Users (employeeID, password, hint, maxForm, changePassTime, createdTime)
Menu (menuID, mainMenuID menuName, fileName,version, description, menuType)
PrimaryKey employeeID PrimaryKey menuID
ForeignKey employeeID references
Employees (employeeID)
ForeignKey mainMenuID
references Menu (menuID)
UserMenu (employeeID, menuID) PrimaryKey employeeID, menuID
ForeignKey employeeID references Users (employeeID)
ForeignKey menuID references Menu (menuID)
Roles (roleID, roleName, description, createdTime, initalFunc)
Menu (menuID, mainMenuID menuName,fileName,version,
151 description, menuType)
PrimaryKey roleID PrimaryKey menuID
ForeignKey mainMenuID
references Menu (menuID)
RoleMenu (roleID, menuID) PrimaryKey roleID, menuID
ForeignKey roleID references Roles (roleID)
ForeignKey MenuID references Menu (MenuID)
Shipment (shipmentSeq, AWBNo, houseNo, flightNo, calcStartDate, weight, volume, pieces, paidFlag, flightDate, flightDate, description)
ULD (ULDNo, ULDType, description)
PrimaryKey shipmentSeq, AWBNo, houseNo
ForeignKey flightNo references Flights
(flightNo)
PrimaryKey ULDNo
ForeignKey airlinePrefix
references Airlines (airlinePrefix)
ForeignKey AWBNo references AWB
(AWBNo)
152 PrimaryKey AWBNo, houseNo, shipmentSeq, ULDNo
ForeignKey AWBNo, houseNo, shipmentSeq references
Shipment (AWBNo, houseNo, shipmentSeq)
ForeignKey ULDNo references ULD (ULDNo)
Invoice (invoiceNo, currCode, accountID, AWBNo, employeeID,
status,stampDuty,taxRate, allInAmount, truckingCharge, additionalInfo, discount, discountDescription, payDate, createdTime)
Services (serviceID, categoryCode, currCode, serviceName, module, UOM, tariff, tariffDesc,
includeTax, additionalInfo, defaultServ)
PrimaryKey invoiceNo PrimaryKey serviceID
ForeignKey currCode references Currency
(currCode)
ForeignKey accountID references Accounts
(accountID)
ForeignKey AWBNo, houseNo references
AWB (AWBNo, houseNo)
ForeignKey employeeID references Users
(employeeID)
ForeignKey categoryCode
references ServiceCategories
(categoryCode)
ForeignKey currCode references
Currency (currCode)
153 discountDescription, enddate, chgqty, attribute)
PrimaryKey invoiceNo, serviceSeq
ForeignKey InvoiceNo references Invoice (invoiceNo)
ForeignKey serviceID references Services (serviceID)
Shipment (shipmentSeq, AWBNo, houseNo, flightNo, calcStartDate, weight, volume, chargeWeight, paidFlag, flightDate, description)
Invoice (invoiceNo, accountID, employeeID, payMethodCode status, stampDuty, taxRate, allInAmount, truckingCharge, additionalInfo, discount, discountDescription, payDate, createdTime)
PrimaryKey shipmentSeq, AWBNo, houseNo
ForeignKey flightNo references Flights
(flightNo)
ForeignKey AWBNo, houseNo references
AWB (AWBNo, houseNo)
PrimaryKey invoiceNo
ForeignKey currCode references
Currency (currCode)
ForeignKey accountID references
Accounts (accountID)
ForeignKey payMethodCode
references PayMethods
(payMethodCode) ForeignKey employeeID
154
PaidShipment (AWBNo, houseNo, shipmentSeq,
invoiceNo)
PrimaryKey AWBNo, HouseNo, shipmentSeq,invoiceNo
ForeignKey AWBNo, HouseNo, shipmentSeq references
Shipment (AWBNo, shipmentSeq)
ForeignKey invoiceNo references Invoice(invoiceNo)
6. Relasi yang bersifat kompleks
Pada diagram model data konseptual yang telah dirancang tidak ditemukan relasi yang bersifat kompleks (lebih dari dua arah).
7. Menghilangkan atribut muti-value Masukkan consigneeID ke entitas baru ConsigneePhones
Consignees (consigneeID, consigneeName, consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo) ConsigneePhones (phoneNo, consigneeID, description)
PrimaryKey consigneeID PrimaryKey phoneNo
155 Consignees (consigneeID)
Masukkan EmployeeID ke entitas baru EmployeePhones
Employees (employeeID, employeeName, employeeTaxNo, employeeAddress, employeeEmail, salary, hireDate, additionalInfo)
EmployeePhones (phoneNo, employeeID, description)
PrimaryKey employeeID PrimaryKey phoneNo
ForeignKey employeeID references
Employees (employeeID)
4.1.2.2 Validasi Relasi Dengan Normalisasi
Tujuan dari tahap ini adalah memastikan bahwa relasi yang dibentuk untuk model data logikal telah memiliki bentuk normal 3NF.
Metode yang digunakan adalah dengan memastikan setiap atribut pada tiap entitas memiliki functional dependency terhadap primary key serta tidak memiliki partital dependency maupun transitive dependency.
1. Consignees 1NF
Pada tabel Consignees tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
156 Consignees (@consigneeID, consigneeName, consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo)
2NF
Pada tabel Consignees tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
Consignees (@consigneeID, consigneeName, consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo)
3NF
Pada tabel Consignees tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
Consignees (@consigneeID, consigneeName, consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo)
2. ConsigneePhones 1NF
Pada tabel ConsigneePhones tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
157 ConsigneePhones (@phoneNo, consigneeID, description)
2NF
Pada tabel ConsigneePhones tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
ConsigneePhones (@phoneNo, #consigneeID, description)
Consignees (@consigneeID, consigneeName, consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo)
3NF
Pada tabel ConsigneePhones tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency)
pada primary key sehingga telah memenuhi aturan 3NF. ConsigneePhones (@phoneNo, #consigneeID, description)
Consignees (@consigneeID, consigneeName, consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo)
3. Accounts 1NF
Pada tabel Accounts tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
158 Accounts (@accountID, consigneeID, accountName, balance, description)
2NF
Pada tabel Accounts tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
Accounts (@accountID, #consigneeID, accountName, balance, description)
Consignees (@consigneeID, consigneeName, consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo)
3NF
Pada tabel Accounts tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
Accounts (@accountID, #consigneeID, accountName, balance, description)
Consignees (@consigneeID, consigneeName, consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo)
159 4. TrDeposit
1NF
Pada tabel TrDeposit tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
TrDeposit (@trnNo, accountID, employeeID, value, depositTime, description)
2NF
Pada tabel TrDeposit tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
TrDeposit (@trnNo, #accountID, #employeeID, value, description) Accounts (@accountID, accountName, balance, description)
Users (@employeeID, password, hint, maxForm, changePassTime, createdTime)
3NF
Pada tabel TrDeposit tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
TrDeposit (@trnNo, #accountID, #employeeID, value, description) Accounts (@accountID, accountName, balance, description)
Users (@employeeID, password, hint, maxForm, changePassTime, createdTime)
160 5. Airports
1NF
Pada tabel Airports tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
Airports (@airportCode, airportName, airportAddress, airportCity, airportCountry)
2NF
Pada tabel Airports tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
Airports (@airportCode, airportName, airportAddress, airportCity, airportCountry)
3NF
Pada tabel Airports tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
Airports (@airportCode, airportName, airportAddress, airportCity, airportCountry)
161 6. Airlines
1NF
Pada tabel Airlines tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
Airlines (@airlinePrefix, airlineName, airlineTaxNo, airlineAddress, additionalInfo, airlinePrefix, airlineCountry)
2NF
Pada tabel Airlines tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
Airlines (@airlinePrefix, airlineName, airlineTaxNo, airlineAddress, additionalInfo, airlineCountry)
3NF
Pada tabel Airlines tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
Airlines (@airlinePrefix, airlineName, airlineTaxNo, airlineAddress, additionalInfo, airlineCountry)
162 7. Flights
1NF
Pada tabel Flights tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
Flights (@flightNo, airlinePrefix, additionalInfo)
2NF
Pada tabel Flights tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
Flights (@flightNo, # airlinePrefix, additionalInfo)
Airlines (@airlinePrefix, airlineName, airlineTaxNo, airlineAddress, additionalInfo, airlineCountry)
3NF
Pada tabel Flights tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
Flights (@flightNo, #airlinePrefix, additionalInfo)
Airlines (@airlinePrefix, airlineName, airlineTaxNo, airlineAddress, additionalInfo, airlineCountry)
163 8. Commodities
1NF
Pada tabel Commodities tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
Commodities (@commodityID, NOG, description, initialFunc)
2NF
Pada tabel Commodities tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
Commodities (@commodityID, NOG, initialFunc, description)
3NF
Pada tabel Commodities tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
Commodities (@commodityID, NOG, description, initialFunc)
9. Users 1NF
Pada tabel Users tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
Users (@employeeID, password, hint, maxForm, changePassTime, createdTime)
164
2NF
Pada tabel Users tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
Users (@#employeeID, password, hint, maxForm, changePassTime, createdTime)
Employees (@employeeID, employeeName, employeeTaxNo, employeeAddress,employeeEmail, salary, hireDate, additionalInfo)
3NF
Pada tabel Users tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
Users (@#employeeID, password, hint, maxForm, changePassTime, createdTime)
Employees (@employeeID, employeeName, employeeTaxNo, employeeAddress, employeeEmail, salary, hireDate, additionalInfo)
10. AWB 1NF
Pada tabel AWB tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
165 AWB (@AWBNo, @houseNo, employeeID, airportCode, commodityID, agentID, consigneeID, additionalInfo, type, createdTime)
2NF
Pada tabel AWB tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
AWB (@AWBNo, @houseNo, #employeeID, #airportCode, #commodityID, #agentID, #consigneeID, additionalInfo, type, createdTime)
Consignees (@consigneeID, consigneeName, consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo)
Airports (@airportCode, airportName, airportAddress, airportCity, airportCountry)
Commodities (@commodityID, NOG, description, initialFunc) Users (@employeeID, password, hint, maxForm, changePassTime, createdTime)
3NF
Pada tabel AWB tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
166 AWB (@AWBNo, @houseNo, #employeeID, #airportCode, #commodityID, #agentID, #consigneeID, additionalInfo, type, createdTime)
Consignees (@consigneeID, consigneeName, consigneeTaxNo, consigneeAddress, consigneePostalCode, consigneeCity, consigneeState, consigneeCountry, additionalInfo)
Airports (@airportCode, airportName, airportAddress, airportCity, airportCountry)
Commodities (@commodityID, NOG, description, initialFunc) Users (@employeeID, password, hint, maxForm, changePassTime, createdTime)
11. Shipment 1NF
Pada tabel Shipment tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
Shipment (@shipmentSeq, @AWBNo, @houseNo, flightNo, calcStartDate, weight, volume, pieces, paidFlag, flightDate, description)
2NF
Pada tabel Shipment tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
167 Shipment (@shipmentSeq, @#AWBNo, @#houseNo, #flightNo, calcStartDate, weight, volume, pieces, paidFlag, flightDate, description)
AWB (@AWBNo, @houseNo, additionalInfo, type, createdTime) Flights (@FlightNo, airlinePrefix, additionalType)
3NF
Pada tabel Shipment tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
Shipment (@shipmentSeq, @#AWBNo, @#houseNo, #flightNo, calcStartDate, weight, volume, pieces, paidFlag, flightDate, description)
AWB (@AWBNo, @houseNo, additionalInfo, type, createdTime) Flights (@flightNo, airlinePrefix, additionalInfo)
12. PaidShipment 1NF
Pada tabel PaidShipment tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
PaidShipment (@AWBNo, @houseNo, @shipmentSeq, @invoiceNo)
168 2NF
Pada tabel PaidShipment tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
PaidShipment (@#AWBNo, @#houseNo, @#shipmentSeq, @#invoiceNo)
Shipment (@shipmentSeq, @AWBNo, @houseNo, calcStartDate, weight, volume, pieces, paidFlag, flightDate, description)
Invoice (@invoiceNo, status, stampDuty, taxRate, allInAmount, truckingCharge, additionalInfo, discount, discountDescription, payDate, createdTime)
3NF
Pada tabel PaidShipment tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
PaidShipment (@#AWBNo, @#houseNo, @#shipmentSeq, @#invoiceNo)
Shipment (@shipmentSeq, @AWBNo, @houseNo, calcStartDate, weight, volume, pieces, paidFlag, flightDate, description)
Invoice (@invoiceNo, status, stampDuty, taxRate, allInAmount, truckingCharge, additionalInfo, discount, discountDescription, payDate, createdTime)
169 13. ULD
1NF
Pada tabel ULD tidak ditemukan perulangan sehingga telah memenuhi aturan 1NF.
ULD (@ULDNo, airlinePrefix, ULDType, Description)
2NF
Pada tabel ULD tidak ditemukan partial dependency sehingga telah memenuhi aturan 2NF.
ULD (@ULDNo, # airlinePrefix, ULDType, Description)
Airlines (@airlinePrefix, airlineName, airlineTaxNo, airlineAddress, additionalInfo, airlineCountry)
3NF
Pada tabel ULD tidak ditemukan atribut Non-primary-key yang memiliki ketergantungan transitif (transitive dependency) pada primary key sehingga telah memenuhi aturan 3NF.
ULD (@ULDNo, # airlinePrefix, ULDType, Description)
Airlines (@airlinePrefix, airlineName, airlineTaxNo, airlineAddress, additionalInfo, airlineCountry)