• Tidak ada hasil yang ditemukan

BAB 4 RANCANGAN SISTEM YANG DIUSULKAN

N/A
N/A
Protected

Academic year: 2021

Membagikan "BAB 4 RANCANGAN SISTEM YANG DIUSULKAN"

Copied!
170
0
0

Teks penuh

(1)

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.

(2)

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.

(3)

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.

(4)

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.

(5)

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

(6)

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:

(7)

110 a. Model Konseptual ERD Tanpa Primary Key

(8)

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..*

(9)

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

(10)

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

(11)

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

(12)

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

(13)

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)

(14)

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

(15)

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

(16)

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)

(17)

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)

(18)

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

(19)

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]

(20)

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

(21)

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

(22)

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

(23)

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

(24)

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

(25)

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

(26)

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

(27)

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

(28)

131

(29)

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.

(30)

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

(31)

134 n. Pembuatan laporan cargo charges

o. Pemberian hak akses tertentu pada pengguna aplikasi sesuai dengan pekerjaannya

p. Menambah saldo deposit

(32)

135

(33)

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

(34)

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)

(35)

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

(36)

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,

(37)

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,

(38)

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)

(39)

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

(40)

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

(41)

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

(42)

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,

(43)

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)

(44)

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)

(45)

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,

(46)

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

(47)

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,

(48)

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)

(49)

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)

(50)

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

(51)

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

(52)

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.

(53)

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.

(54)

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.

(55)

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)

(56)

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)

(57)

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)

(58)

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)

(59)

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)

(60)

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)

(61)

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.

(62)

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.

(63)

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.

(64)

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)

(65)

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)

(66)

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)

Gambar

Tabel 4.3 Tabel Identifikasi Atribut pada Tiap Entitas
Tabel 4.5 Tabel Identifikasi Candidate Key dan Primary Key
Gambar 4.2 Entity Relationship Diagram Konseptual dengan Primary Key
Gambar 4.5 Penggunaan Pathway Untuk Mengecek Model Data Konseptual
+7

Referensi

Dokumen terkait

Penentuan formula optimum untuk tablet kaptopril lepas lambat menggunakan persamaan SLD dari uji yang dilakukan pada uji sifat fisik garnul (sudut diam) dan sifat fisik

Work Engagement merupakan kontributor penting dalam upaya retensi karyawan, menjaga kepuasan pelanggan, dan pencapaian kinerja optimal suatu organisasi. Munculnya

Abadi (2004) menyatakan bahwa, masa inkubasi dipengaruhi oleh konsentrasi dan virulensi jamur patogen, serta ketahanan dari tanaman inang, dan lingkungan yang mendukung

Dalam kajian etimologi, Tayub bermakna “ditata ben guyub”, diatur.. Namun, stereotipe negatif yang telah dilekatkan pada tayub seakan mendarah daging

Condeser dengan pendinginan air (water-cooled condenser) digunakan pada sistem yang berskala besar untuk keperluan komersial di lokasi yang mudah memperoleh air bersih. Water

Mengingat hal tersebut penulis mengadaan penelitian tindakan sekolah dengan mengambil judul penelitian “ Meningkatlan Kompetensi Guru Dalam Menyusun Rencana

Pada analisis sikap konsumen, atribut kebersihan, rasa, dan kehalalan dianggap konsumen sebagai pertimbangan yang paling penting dalam proses keputusan pembelian produk frozen

Berdasarkan analisis sidik ragam maka diperoleh bahwa interval pemberian urine sapi dan interaksi dosis dengan interval pemberian urine sapi tidak berbeda nyata